2009. 10. 5. 20:17

Ubuntu kernel compile

이전에는 Linux 하면 대부분 배포판으로는 RedHat을 사용했던 것 같던데, (그 전에는 Slackware) 요즘은 Ubuntu를 많이 사용하는 것 같다. 나도 뭐 하나 해 볼 것이 있어서 Linux로 작업환경을 구축하는데, 설치가 가장 쉬운 것 같아서, Ubuntu로 구축하였다.

가장 먼저 할 일이 kernel source를 받아서, compile하여 base code를 확립하는 작업인데, 이를 위해서 Ubuntu kernel을 compile하는 작업을 진행하였다. 아래 사이트의 설명을 참고로 진행하였다.

[Linux] Ubuntu 9.04 – Jaunty Kernel Compile – by morcavon

이에 따라 작업한 명령들은 아래와 같다.

$ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-jaunty.git work

$ cd work/

$ cat debian.master/changelog | more

$ git tag | more

$ git checkout Ubuntu-2.6.28-15.52 -b Core2

$ git branch

$ ls -la debian.master/config/i386/config

$ cp debian.master/config/i386/config .config

$ cat debian.master/config/i386/config.generic >> .config

$ make menuconfig

$ cp .config ../config.Core2

$ git reset --hard

$ git clean -xdf

$ ls debian.master/abi/

$ cp debian.master/abi/2.6.28-15.51/i386/generic debian.master/abi/2.6.28-15.51/i386/Core2

$ cp debian.master/abi/2.6.28-15.51/i386/generic.modules debian.master/abi/2.6.28-15.51/i386/Core2.modules

$ cp ../config.Core2 debian.master/config/i386/

$ ls -la debian.master/config/i386/

$ vi debian.master/scripts/misc/getabis

$ vi debian.master/rules.d/i386.mk

$ vi debian.master/control.d/flavour-control.stub

$ vi debian.master/control.stub.in

$ ls -la debian

$ cd debian

$ ls -la

$ ln -sf ../debian.master/changelog changelog

$ ln -sf ../debian.master/control.stub.in control

$ ln -sf ../debian.master/control.stub.in control.stub

$ ls -la

$ cd ..

$ ls -la

$ git add .

$ git commit -a -m "Core2 modifications"

$ CONCURRENCY_LEVEL=2 NOEXTRAS=1 skipabi=true skipmodule=true fakeroot debian/rules binary-Core2

 

그런데 마지막에 kernel compile한 후에 오류가 발생하였다.

……………

#

# Remove files which are generated at installation by postinst, except for

# modules.order.

#

mv /home/projects/WLP/ubuntu.kernel/jaunty/Core2/debian/linux-image-2.6.28-15-Core2/lib/modules/2.6.28-15-Core2/modules.order \

/home/projects/WLP/ubuntu.kernel/jaunty/Core2/debian/linux-image-2.6.28-15-Core2/lib/modules/2.6.28-15-Core2/_modules.order

rm -f /home/projects/WLP/ubuntu.kernel/jaunty/Core2/debian/linux-image-2.6.28-15-Core2/lib/modules/2.6.28-15-Core2/modules.*

mv /home/projects/WLP/ubuntu.kernel/jaunty/Core2/debian/linux-image-2.6.28-15-Core2/lib/modules/2.6.28-15-Core2/_modules.order \

/home/projects/WLP/ubuntu.kernel/jaunty/Core2/debian/linux-image-2.6.28-15-Core2/lib/modules/2.6.28-15-Core2/modules.order

dh_testdir

dh_testroot

dh_installchangelogs -plinux-image-2.6.28-15-Core2

dh_installdocs -plinux-image-2.6.28-15-Core2

dh_compress -plinux-image-2.6.28-15-Core2

dh_fixperms -plinux-image-2.6.28-15-Core2

dh_installdeb -plinux-image-2.6.28-15-Core2

dh_gencontrol -plinux-image-2.6.28-15-Core2

dpkg-gencontrol: error: Illegal package name `linux-image-2.6.28-15-Core2'

dh_gencontrol: command returned error code 65280

make[1]: *** [binary-Core2] 오류 1

make: *** [binary-Core2] 오류 2

 

Illegal package name?

여하튼 ./debian/ 아래에 compile은 되었는데, 이후 package와 관련된 작업에서 오류가 발생하였다.

morcavon님의 설명에 감사하며…

*** 2009.10.11 (Sun) 추가

=PROVIDES= 항목을 지우지 않았더니 발생하는 문제였다.
이 항목과 관련된 것을 모두 지웠더니... OK

by 송골