启动 U 盘

启动 U 盘

dd

这个对于 iso 文件是有要求的, 一般 linux 发行版本的 iso 都是可以支持.
但是 win 的 iso 是不行的. 当然有一些主板是支持的, 这个看运气了.

分区

创建分区, 过程中, 发现 mac os 会检查分区表里的文件系统类型, 只有支持的
才会识别. 并且要与实际的文件系统一样. 注意的 ntfs 不是 67, 68 而是应该用 7.
这个类型也包括了 exfat.

而如果有多个分区, win 如果发现第一个分区不能识别那就会直接不能识别后面的
分区了, 所以数据分区要放在第一个.

还有一个问题是 mac os 下不能写 ntfs 文件系统, 没有专门去了解. 只是
大概是不能写的.

所以对于 U 盘的分区结构就是:

  • exfat 格式, 用于保存数据, 占了主要的大小. 这个格式可以支持大于 4g 文件.
  • ext4 这个用来保存 grub 的数据.

使用 fat32 安装 grub, 不能成功启动. 改用 exfat 测试一下. 分区结构进行调整到 一个独立的分区, 同时打开 boot.
同时发布设置 boot 也会影响 grub 的加载.

iso

加载 iso 是另一个思路, 目前来看 grub 不能直接加载 iso. 但是 syslinux
提供了一个 memdisk 模块, 可以帮助 grub 来完成这个工作.

memdisk 在 grub 下面也有一个同名的, 所以在使用的时候要注意使用路径.

   set root='(hd0,msdos1)'
   linux16 /boot/memdisk iso raw
   initrd16 /boot/Win8PE.iso
   boot

这个的速度是一个问题, 我测试了 win7 的 iso, 时间等了很久我中断了.
再找了一个 win7 pe 测试了一下, 可以成功引导.

直接引导

我一开始的时候, 以为不能直接引导 win7 的 iso 文件里的内容. 后来我测试了一下,
是可以直接引导的. 但是我在 mac os 下解开 iso 文件的时候出现了问题,
mac os 说一个 license 文件不能复制, 不知道是什么原因.

    insmod part_msdos
    insmod ntfs
    insmod ntldr
    set root='(hd0,msdos1)'
    ntldr ($root)/bootmgr
    boot

结论

基于最终引导到了 windows boot manager 最后都会出现错误. 没有搞清楚, 出现问题的在哪里.
目前唯一可以使用的 linux 下制作 window 引导 U 盘的方法只有 syslinux memdisk 引导 pe 再使用原生系统盘.


发表评论

邮箱地址不会被公开。 必填项已用*标注