我有一个可启动 USB 记忆棒,如屏幕截图所示:
# dd if=/path/to/os_image.iso of=/dev/sdb
(...everything OK...)
# sudo dumpe2fs /dev/sdb
dumpe2fs 1.42.9 (4-Feb-2014)
dumpe2fs: Bad magic number in super-block while trying to open /dev/sdb
Couldn't find valid filesystem superblock.
GParted 无法识别任何分区。
GUI 文件管理器将文件系统报告为isofs
.系统启动,一切正常。
问题是,我想使用 USB 记忆棒来运行实时操作系统和作为仅识别 FAT32 和 NTFS 的 PC 和电视的存储。
我尝试创建两个分区,然后dd
创建sdb1
唯一sdb1
的可启动分区,但系统无法启动。
如何在不使用外部可启动 USB 创建程序的情况下将 FAT32/NTFS 和(任何)可启动 ISO 映像放在 MBR 分区磁盘上?我想像dd
现在一样简单地使用 。
据推测,这可以通过使用正确的引导加载程序和正确的配置来解决。我只是不知道哪个引导加载程序以及什么配置。
答案1
有 2 个分区的可启动 USB 拇指驱动器。
即使有多个分区,Windows 和其他系统也可能只能看到 USB 设备上的第一个分区。因此,请将您的第一个主分区设置为 fat32 或 NTFS 分区,以便 Windows 可以看到并使用它。
分区 1 - ntfs 或 vfat
分区 2 - ext4
第二个分区是存储可启动 iso 的位置。使用 grub 加载并选择您要使用的实时操作系统。
脚步:
1:将分区表归零
sudo dd if=/dev/zero of=/dev/sdx bs=512 count=4
2:创建分区(使用cli“fdisk”或gui“gparted”)
创建分区表“msdos”
创建2个分区
p1 = ntfs
p2 = ext4 --标记为可启动。
格式化分区。
3:将grub引导加载程序安装到USB设备
sudo grub-install --boot-directory /mnt/usbp2/boot /dev/sdx
验证:如果这些存在,到目前为止一切都很好......
- /mnt/usbp2/boot/grub/fonts -- 最小 unicode.pf2
- /mnt/usbp2/boot/grub/i386-pc -- *.mod 模块加载到 grub.cfg 中
- /mnt/usbp2/boot/grub/local -- 语言
- /mnt/usbp2/boot/grub/grubenv -- 环境变量存储
4:为此电脑上的操作系统创建 grub.cfg 文件
sudo grub-mkconfig --output=/mnt/usbp2/boot/grub/grub.cfg
通过 USB 启动进行测试
5:将支持文件复制到U盘
- iso文件
- memdisk 二进制文件——从 syslinux 获取
- grub.cfg——为您的 USB 棒定制。覆盖 grub-mkconfig 创建的 grub.cfg
笔记:每个 live iso 可能需要不同的 grub 信息。
笔记:如果您只获得 grub 命令行,则您的 grub.cfg 可能包含错误。从最少的开始。
6:创建您的自定义 USB 引导安装程序。
复制MBR和分区表
dd if=/dev/sdx of=/custom_boot/cb_mbr.img bs=512 count=1
复制可启动分区
dd if=/dev/sdx2 of=/custom_boot/cb_ext4.img bs=512
7:创建新的可启动USB设备
删除所有现有分区并清理 MBR
fdisk 或 gparted(删除分区)
dd if=dev/0 of=/dev/sdx bs=512 计数=1
恢复MBR和分区表
dd if=/custom_boot/cb_mbr.img of=/dev/sdx bs=512
恢复可启动分区
dd if=/custom_boot/cb_ext4.img of=/dev/sdx2 bs=512
修复第一个分区并重新格式化(fat32 或 ntfs)
fdisk 或 gparted
我的grub配置文件
我的笔记
答案2
为了明确这一点 -
- “我想简单地使用 dd,就像现在一样。”
- “即使有多个分区,Windows 和其他系统也可能只能看到 USB 设备上的第一个分区。”
我认为这些目标不太现实,所以你必须在某些方面做出妥协。