我有几个脚本可以为我构建 Linux Live CD。
我有几个内核,是我自己构建的用于这些内核。几周前用内核构建了一张这样的 Live CD,一切正常,我仍然可以从收集的构建文件构建它。
当尝试从头开始构建完全相同的 Live CD 并收集相同的内核时,它无法启动。
我将几周前的构建目录中的内核与现在使用的内核进行了比较,并diff
声明它们是相同的。
cmp bzImage kernel/vmlinuz-4.15.18
回报0
> md5sum bzImage kernel/vmlinuz-4.15.18
7add044e080dc32e7810bf803450c95c bzImage
7add044e080dc32e7810bf803450c95c kernel/vmlinuz-4.15.18
stat
有以下说法:
File: bzImage # works
Size: 7996976 Blocks: 15624 IO Block: 4096 regular file
Device: 811h/2065d Inode: 3714381 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ me) Gid: ( 1000/ me)
Access: 2019-01-08 20:00:48.842172091 +0100
Modify: 2018-12-10 15:43:47.428001000 +0100
Change: 2018-12-10 15:43:47.428001000 +0100
Birth: -
File: kernel/vmlinuz-4.15.18 # doesn't work
Size: 7996976 Blocks: 15432 IO Block: 4096 regular file
Device: 811h/2065d Inode: 538209 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ me) Gid: ( 1000/ me)
Access: 2019-01-08 18:49:41.205420092 +0100
Modify: 2019-01-08 16:12:03.858957307 +0100
Change: 2019-01-08 16:12:03.858957307 +0100
Birth: -
唯一明显的区别是块号,对于不起作用的块号来说,它似乎太低了。这里发生了什么?
该脚本对内核执行的操作示例:
# create disk and partition
guestfish disk-create image.img raw 1000000 # kb
guestfish -- add image.img : run : part-add /dev/sda primary $BOOT_START_SECTOR $BOOT_END_SECTOR
guestfish -- add image.img : run : mkfs ext4 /dev/sda1 label:l_boot
# copy linux file hierarchy onto partition
guestfish -- add image.img : run : mount /dev/sda1 / : copy-in rootfs/* /
# mount and copy kernel from build dir onto vdi
guestfish -- add image.img : run : mount /dev/sda1 / : mount-local "mnt/" : mount-local-run
# [...]
cp iso/boot/bzImage mnt/vmlinuz # the kernel
# install extlinux on top
guestfish -- add image.img : run : mount /dev/sda1 / : extlinux /
我还在创建的 vdi(不是构建系统中的)上的复制文件上运行了stat
and md5sum
,结果与上面的 kernel/vmlinuz 相同。