Linux kernel Buildroot-构建ISO映像

Linux kernel Buildroot-构建ISO映像,linux-kernel,x86,cross-compiling,buildroot,Linux Kernel,X86,Cross Compiling,Buildroot,首先,请原谅-这是我构建操作系统和使用Buildroot的第一步 我已经成功地创建了我的第一个自定义操作系统(没有什么特别的,只是使用grsec修补的4.6.3内核进行了第一次测试) 我在/output/images目录中有以下文件: $ ls -lh total 304M -rw-r--r-- 1 fugitive fugitive 512 Apr 13 01:01 boot.img -rw-r--r-- 1 fugitive fugitive 4.1M Apr 13 00:57 bzIma

首先,请原谅-这是我构建操作系统和使用Buildroot的第一步

我已经成功地创建了我的第一个自定义操作系统(没有什么特别的,只是使用grsec修补的4.6.3内核进行了第一次测试)

我在/output/images目录中有以下文件:

$ ls -lh
total 304M
-rw-r--r-- 1 fugitive fugitive  512 Apr 13 01:01 boot.img
-rw-r--r-- 1 fugitive fugitive 4.1M Apr 13 00:57 bzImage
-rw-r--r-- 1 fugitive fugitive  79M Apr 13 01:01 disk.img
-rw-r--r-- 1 fugitive fugitive 137K Apr 13 00:57 grub-eltorito.img
-rw-r--r-- 1 fugitive fugitive 137K Apr 13 00:57 grub.img
-rw-r--r-- 1 fugitive fugitive  69M Apr 13 01:01 rootfs.cpio
-rw-r--r-- 1 fugitive fugitive  79M Apr 13 02:10 rootfs.ext2
lrwxrwxrwx 1 fugitive fugitive   11 Apr 13 01:01 rootfs.ext4 -> rootfs.ext2
-rw-r--r-- 1 fugitive fugitive  74M Apr 13 01:01 rootfs.iso9660
我的目标是——创建一个可引导的iso映像,但我不知道如何创建

我可以用qemu来模拟它,就像你在屏幕截图上看到的:

我已尝试将
rootfs.iso9660
刻录到USB驱动器,但无法启动

尝试将rootfs.iso9660重命名为rootfs.iso9660.iso并尝试使用VirtualBox,但后来我得到了一个grub终端

感谢您的帮助和指导

编辑:

.config文件:

-bash-4.2$ grep  BR2_TARGET_ROOTFS_ .config | grep -v ^#
BR2_TARGET_ROOTFS_CPIO=y
BR2_TARGET_ROOTFS_CPIO_NONE=y
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_GEN=4
BR2_TARGET_ROOTFS_EXT2_REV=1
BR2_TARGET_ROOTFS_EXT2_LABEL=""
BR2_TARGET_ROOTFS_EXT2_BLOCKS=0
BR2_TARGET_ROOTFS_EXT2_INODES=0
BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS=0
BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES=0
BR2_TARGET_ROOTFS_EXT2_RESBLKS=0
BR2_TARGET_ROOTFS_EXT2_NONE=y
BR2_TARGET_ROOTFS_ISO9660=y
BR2_TARGET_ROOTFS_ISO9660_GRUB2=y
BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="fs/iso9660/grub.cfg"
BR2_TARGET_ROOTFS_ISO9660_INITRD=y

-bash-4.2$ grep -r BR2_TARGET_ROOTFS_ISO9660_HYBRID *
fs/iso9660/Config.in:config BR2_TARGET_ROOTFS_ISO9660_HYBRID
fs/iso9660/iso9660.mk:ifeq ($(BR2_TARGET_ROOTFS_ISO9660_HYBRID),y)
尝试:

要知道usb驱动器的路径,请执行以下操作:

lsblk 

并找到您的usb驱动器。

您是否启用了
BR2\u TARGET\u ROOTFS\u ISO9660\u HYBRID
?如果您希望您的ISO映像也能从USB设备上工作,则需要此选项。

使用Grub2的可引导ISO映像(仅用于CD-ROM的老式ISO映像)-我让它工作了

主要提示:
  • Grub:添加内置模块
    biosdisk iso9660
  • Grub:引导分区设置为
    cd
  • 更改Grub选项后,您需要重新编译它(在官方手册中阅读)
  • 如果在内核配置中进行更改,请确保支持CDROM设备和ISO9660文件系统
  • 如果您在grub rescue控制台中(这不是一个好迹象),请尝试一步一步地执行命令()来解决问题
从.config中提取 我将我的更改保存为defconfig(
makesavedefconfig
,read),以下是您的更改中应该包含的内容:

BR2_ROOTFS_POST_BUILD_SCRIPT="board/pc/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pc/genimage-bios.cfg"
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_SIZE="120M"
BR2_TARGET_ROOTFS_ISO9660=y
BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="fs/iso9660/grub.cfg"
BR2_TARGET_GRUB2=y
BR2_TARGET_GRUB2_BOOT_PARTITION="cd"
BR2_TARGET_GRUB2_BUILTIN_MODULES="boot linux ext2 fat squash4 part_msdos part_gpt normal biosdisk iso9660"
BR2_PACKAGE_HOST_GENIMAGE=y
旁注:我开始尝试为PC构建默认配置
makePC\ux86\u64\udefconfig&&make

试验 在QEMU中测试ISO:

qemu-system-x86_64 -m 512 -cdrom output/images/rootfs.iso9660

它也适用于虚拟盒

请查看更新的问题,我已经在
makemenuconfig
步骤ISO目标中启用了。如果你还需要什么,请告诉我!托马斯:看来不是。。我不知道如何启用它,因为我在menuconfig中没有看到类似的内容,也不确定它的依赖关系。@Survival:您必须选择isolinux而不是grub2,然后会出现isohybrid选项。我知道它不是很透明,但由于Kconfig的限制,很难更改它。@Arnout发现了它。我会试着让你们知道。谢谢你的提示@逃犯你能在这里发布你的解决方案吗(作为对你自己问题的回答)?
qemu-system-x86_64 -m 512 -cdrom output/images/rootfs.iso9660