构建ubuntu-kernel-test主线 – 破解v4.4内核无法清理

当构建Ubuntu内核团队的Linus’v4.4-rc8上游分支时,由于缺少ubuntu/目录, fakeroot debian/rules clean步失败。

除了http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.4-rc8-wily/上的三个补丁之外还有其他补丁,这些补丁是在https://构建指令之前执行的必要步骤或其他步骤可以使用wiki.ubuntu.com/Kernel/BuildYourOwnKernel吗?

我不认为这些错误可以被忽略,因为Tim Gardner修复了“[Config] Fix bogus reconstruct script”,明确更改了0001-base-packaging.patchdebian.master/reconstruct脚本。

 git clone git://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack cd mainline-crack/ git fetch --tags git checkout -b v4.4-rc8 v4.4-rc8 curl --silent http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.4-rc8-wily/0001-base-packaging.patch | git am --signoff curl --silent http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.4-rc8-wily/0002-debian-changelog.patch | git am --signoff curl --silent http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.4-rc8-wily/0003-configs-based-on-Ubuntu-4.4.0-1.12.patch | git am --signoff fakeroot debian/rules clean for i in debian.master/di/kernel-versions.in debian.master/control.stub.in; do \ new=`echo $i | sed 's/\.in$//'`; \ cat $i | sed -e 's/PKGVER/4.4.0/g' \ -e 's/ABINUM/040400rc8/g' \ -e 's/SRCPKGNAME/linux/g' \ -e 's/=HUMAN=/64 bit x86/g' \ > $new; \ done ... # Install the copyright information. cp debian.master/copyright debian/copyright # If we have a reconstruct script use it. [ -f debian.master/reconstruct ] && bash -x debian.master/reconstruct + '[' '!' -L ubuntu/vbox/vboxguest/include ']' + ln -sf ../include ubuntu/vbox/vboxguest/include ln: failed to create symbolic link 'ubuntu/vbox/vboxguest/include': No such file or directory + '[' '!' -L ubuntu/vbox/vboxguest/r0drv ']' + ln -sf ../r0drv ubuntu/vbox/vboxguest/r0drv ln: failed to create symbolic link 'ubuntu/vbox/vboxguest/r0drv': No such file or directory + '[' '!' -L ubuntu/vbox/vboxsf/include ']' + ln -sf ../include ubuntu/vbox/vboxsf/include ln: failed to create symbolic link 'ubuntu/vbox/vboxsf/include': No such file or directory + '[' '!' -L ubuntu/vbox/vboxsf/r0drv ']' + ln -sf ../r0drv ubuntu/vbox/vboxsf/r0drv ln: failed to create symbolic link 'ubuntu/vbox/vboxsf/r0drv': No such file or directory + '[' '!' -L ubuntu/vbox/vboxvideo/include ']' + ln -sf ../include ubuntu/vbox/vboxvideo/include ln: failed to create symbolic link 'ubuntu/vbox/vboxvideo/include': No such file or directory + '[' '!' -L spl/rpm/redhat/spl-dkms.spec.in ']' + cd spl/rpm/redhat debian.master/reconstruct: line 9: cd: spl/rpm/redhat: No such file or directory + ln -sf ../generic/spl-dkms.spec.in + '[' '!' -L spl/rpm/redhat/spl.spec.in ']' + cd spl/rpm/redhat debian.master/reconstruct: line 10: cd: spl/rpm/redhat: No such file or directory + ln -sf ../generic/spl.spec.in + '[' '!' -L zfs/rpm/redhat/zfs-dkms.spec.in ']' + cd zfs/rpm/redhat debian.master/reconstruct: line 12: cd: zfs/rpm/redhat: No such file or directory + ln -sf ../generic/zfs-dkms.spec.in + '[' '!' -L zfs/rpm/redhat/zfs.spec.in ']' + cd zfs/rpm/redhat debian.master/reconstruct: line 13: cd: zfs/rpm/redhat: No such file or directory + ln -sf ../generic/zfs.spec.in + '[' '!' -L zfs/cmd/zed/zed.d/checksum-notify.sh ']' + cd zfs/cmd/zed/zed.d debian.master/reconstruct: line 14: cd: zfs/cmd/zed/zed.d: No such file or directory + ln -sf io-notify.sh checksum-notify.sh + '[' '!' -L zfs/cmd/zed/zed.d/checksum-spare.sh ']' + cd zfs/cmd/zed/zed.d debian.master/reconstruct: line 15: cd: zfs/cmd/zed/zed.d: No such file or directory + ln -sf io-spare.sh checksum-spare.sh + '[' '!' -L zfs/cmd/zed/zed.d/data-notify.sh ']' + cd zfs/cmd/zed/zed.d debian.master/reconstruct: line 16: cd: zfs/cmd/zed/zed.d: No such file or directory + ln -sf io-notify.sh data-notify.sh + '[' '!' -L zfs/cmd/zed/zed.d/resilver.finish-notify.sh ']' + cd zfs/cmd/zed/zed.d debian.master/reconstruct: line 17: cd: zfs/cmd/zed/zed.d: No such file or directory + ln -sf scrub.finish-notify.sh resilver.finish-notify.sh + '[' '!' -L zfs/scripts/zpios-test/large-thread-survey.sh ']' + cd zfs/scripts/zpios-test debian.master/reconstruct: line 18: cd: zfs/scripts/zpios-test: No such file or directory + ln -sf 1x256th-65536rc-4rs-1cs-4off.sh large-thread-survey.sh + '[' '!' -L zfs/scripts/zpios-test/large.sh ']' + cd zfs/scripts/zpios-test debian.master/reconstruct: line 19: cd: zfs/scripts/zpios-test: No such file or directory + ln -sf 256th-65536rc-4rs-1cs-4off.sh large.sh + '[' '!' -L zfs/scripts/zpios-test/medium.sh ']' + cd zfs/scripts/zpios-test debian.master/reconstruct: line 20: cd: zfs/scripts/zpios-test: No such file or directory + ln -sf 16th-8192rc-4rs-1cs-4off.sh medium.sh + '[' '!' -L zfs/scripts/zpios-test/small.sh ']' + cd zfs/scripts/zpios-test debian.master/reconstruct: line 21: cd: zfs/scripts/zpios-test: No such file or directory + ln -sf 4th-1024rc-4rs-1cs-4off.sh small.sh + '[' '!' -L zfs/scripts/zpios-test/tiny.sh ']' + cd zfs/scripts/zpios-test debian.master/reconstruct: line 22: cd: zfs/scripts/zpios-test: No such file or directory + ln -sf 1th-16rc-4rs-1cs-4off.sh tiny.sh + exit 0 

如果我跳过干净的步骤并尝试使用fakeroot debian/rules binary-headers binary-generic进行构建,那么在尝试构建SPL / ZFS时它将失败。

 $ fakeroot debian/rules binary-headers binary-generic ... IHEX firmware/cpia2/stv0672_vp4.bin IHEX firmware/yam/1200.bin IHEX firmware/yam/9600.bin make[2]: Leaving directory `/home/user/Workspace/mainline-crack/debian/build/build-generic' make[1]: Leaving directory `/home/user/Workspace/mainline-crack' # # SPL/ZFS wants a fully built kernel before you can configure and build. # It seems to be impossible to tease out the application configuration # from the modules, but at least one can build just the modules. # install -d /home/lucasmagasweran/Workspace/mainline-crack/debian/build/build-generic/spl rsync -a --exclude=dkms.conf --delete spl/ /home/user/Workspace/mainline-crack/debian/build/build-generic/spl/ rsync: change_dir "/home/user/Workspace/mainline-crack//spl" failed: No such file or directory (2) rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0] make: *** [/home/user/Workspace/mainline-crack/debian/stamps/stamp-build-generic] Error 23 

但是,这可以通过从debian.master/rules.d/amd64.mksed -i "s/do_zfs),false/do_zfs),true/g" debian/rules.d/2-binary-arch.mk注释掉do_zfs = true行来do_zfs = true sed -i "s/do_zfs),false/do_zfs),true/g" debian/rules.d/2-binary-arch.mk [1]。

[1] http://ubuntuforums.org/showthread.php?t=2301071&page=16&p=13411241#post13411241