当它们与字节相同时,为什么一个内核可以工作,而另一个内核却不能工作?

当它们与字节相同时,为什么一个内核可以工作,而另一个内核却不能工作?

我有几个脚本可以为我构建 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(不是构建系统中的)上的复制文件上运行了statand md5sum,结果与上面的 kernel/vmlinuz 相同。

相关内容