您尚未登录。

#1 2014-11-05 19:00:41

极简主义
会员
注册时间: 2013-04-06
帖子: 64

grub2多重引导U盘

0.写在前面的废话
    原来用U盘启动电脑一般采用ultraISO(windows)/dd(linux)两种方式,但是这有一个痛点:一个U盘只能装一个系统;U盘其他资料损毁。(好吧~好像是两个痛点,其实我不想说:是体育老师代课数学)
    一直寻找一种方式,可以:
        多重引导,最好能引导所有的可引导iso.
        不用反复格式化U盘,??动作片可以安心存放。
        灵活方便,随时可加减iso镜像。
        用最少的软件,尽量简洁。
        配置文件简洁、易读。
    经过重复重复再重复询问google大神,发现可以用grub2和syslinux下的memdisk办到。基本符合当初的要求。

1.准备
    a.软件:
        grub2
        memdisk
    b.环境:
        arch linux
    c.硬件:
        容量尽量大的U盘一枚(这不是废话嘛)
    d.iso
        根据自己的意愿从各大官网下载

2.Step by Step
    1)确定U盘符号:sudo fdisk -l   #俺的是sdb你的可不一定哦
    2)重新分区U盘:sudo fdisk /dev/sdb
        从2048扇区开始分起,给grub2留出空间
        分且只分一个分区
        注意激活分区
        分区类型选c,fat32类型
    3)格式化分区:sudo mkfs.fat -F 32 -n MBOOT /dev/sdb1
    4)挂载U盘:sudo mount /dev/sdb1 /mnt
    5)安装grub2 sudo grub-install --target=i386-pc --recheck --boot-directory=/mnt /dev/sdb
        是/dev/sdb,可不是什么sdb1哦
        不用grub-mkconfig什么的,grub.cfg手动创建(见后面的示例)
    6)创建iso目录:sudo mkdir /mnt/iso
    7)复制你想引导的iso到/mnt/iso/
    8)差不多了吧~......等会儿!memdisk从哪里找?
        (1)去syslinux官网下载,不知道哪个是?好吧,看(2)
        (2)从源安装syslinux:sudo pacman -S syslinux
            sudo cp /usr/lib/syslinux/bios/memdisk /mnt/grub/
    9)嗯,这回真完事了。       
   
3.grub.cfg示例

set timeout=10
set default=3
#ls -l /dev/disk/by-uuid
set uuid=75D7-F9B6
set archlabel=ARCH_201411

#排在最前面的当然是我大ARCH
menuentry "ArchLinux-2014.11.01 x86_64" {
	set isofile="/iso/archlinux-2014.11.01-dual.iso"
	loopback loop $isofile
	linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=$archlabel img_dev=/dev/disk/by-uuid/$uuid img_loop=$isofile earlymodules=loop
	initrd (loop)/arch/boot/x86_64/archiso.img
}

menuentry "ArchLinux i686" {
	set isofile="/iso/archlinux-2014.11.01-dual.iso"
	loopback loop $isofile
	linux (loop)/arch/boot/i686/vmlinuz archisolabel=$archlabel img_dev=/dev/disk/by-uuid/$uuid img_loop=$isofile earlymodules=loop
	initrd (loop)/arch/boot/i686/archiso.img
}

#据说最NB的KDE最严谨的民族做出来的发行版
menuentry "openSUSE-13.1-KDE-Live-x86_64" {
    set isofile="/iso/openSUSE-13.1-KDE-Live-x86_64.iso"
    loopback loop $isofile
    linux (loop)/boot/x86_64/loader/linux isofrom_device=/dev/disk/by-uuid/$uuid isofrom_system=$isofile LANG=zh_CN.UTF-8
    initrd (loop)/boot/x86_64/loader/initrd
}

#偶尔也会想HACK一下,测试自己的水平顺带装13.
menuentry "kali-linux-1.09a-amd64" {
    set isofile="/iso/kali-linux-1.0.9a-amd64.iso"
    loopback loop $isofile
    linux (loop)/live/vmlinuz findiso=$isofile boot=live noconfig=sudo username=root hostname=kali noswap
    initrd (loop)/live/initrd.img
}

#怀念一下带领自己进入linux世界的发行版
menuentry "Ubuntu 14.10" {
	set isofile="/iso/ubuntu-14.10-desktop-amd64.iso"
	loopback loop $isofile
	linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile locale=zh_CN.UTF-8 quiet noeject noprompt splash --
	initrd (loop)/casper/initrd.lz
}

#没有测试过,顺带贴出
menuentry "Fedora-Live-x86_64" {
    set isofile="/iso/Fedora-Live-gnome-x86_64-20-1.iso"
    loopback loop $isofile
    linux (loop)/isolinux/vmlinuz0 root=live:CDLABEL=Fedora-Live-gnome-x86_64-20-1 iso-scan/filename=$isofile rd.live.image
    initrd (loop)/isolinux/initrd0.img
}

#嗯嗯~以后可能会用到
#menuentry '[loopback]CentOS-7.0-1406-x86_64-GnomeLive' {
#	set isofile='/iso/CentOS-7.0-1406-x86_64-GnomeLive.iso'
#	loopback loop $isofile
#	linux (loop)/isolinux/vmlinuz0 root=live:CDLABEL=CentOS-7-live-GNOME-x86_64 iso-scan/filename=$isofile rd.live.image
#	initrd (loop)/isolinux/initrd0.img
#}

#把人能搞疯狂的渣渣,资料最少,最语焉不详。原来新电脑能启动的是win7内核的PE!
#采用memdisk方式要求镜像尽可能小,否则载入缓慢。
menuentry "Win7PE.iso" {
	insmod part_msdos
	insmod fat
	set root='(hd0,1)'
	linux16 /grub/memdisk iso raw
	initrd16 /iso/Win7PE.iso
}

#旧(预装WinXP)的电脑可能适用(暂无测试条件)
menuentry "BootCD.iso(laomaotao)" {
	insmod part_msdos
	insmod fat
	set root='(hd0,1)'
	linux16 /grub/memdisk iso raw
	initrd16 /iso/BootCD.iso
}

#本地磁盘启动
menuentry "Boot HDD" {
	chainloader +1
}

#重启
menuentry "Reboot" {
	reboot
}

#关机
menuentry "Shutdown" {
	halt
}

4.再罗嗦几句
    我大linux启动都很容易,资料也多。windowsPE可费了劲了~哎!不说了,提起都是泪啊。
    能启动WindowsPE,那么再copy几个ghostXP和ghostWin7的iso进去,帮别人重做系统就简单多了^_^
......
冥冥中似乎有人在喊:
    U盘在手~~~
    江山
    我有~~~
    哈哈哈哈哈哈......
......

离线

#2 2014-11-05 20:37:02

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,956
个人网站

Re: grub2多重引导U盘

我的 WinPE 好像已经引导不起来了喵。什么时候把参数改你那样再试试。

PS: 我的 U 盘才 4G,已经放满系统镜像了…………

PPS: 我的 U 盘还能引导到 grub4dos 和 DOS 的哦。那个 DOS 里边还有个 ghost.exe 呢。

离线

#3 2014-11-05 22:36:54

nopriler
会员
注册时间: 2012-01-03
帖子: 393

Re: grub2多重引导U盘

如果没记错,UltraISO 用的就是 Syslinux,或者 Syslinux 的变种。
多启动 Syslinux 也能做到的嘛,而且配置起来还更简单,无缝支持各种 Linux 发行版的 ISO。可能我被 grub-mkconfig 惯坏了,总觉得 grub 2 配置很麻烦的样子。虽然说 grub 2 看起来更强大的样子。 :-/

个人不太喜欢 memdisk,像 Arch 还好,要是 Windows 那种,要加载多久的说。不过,如果用上了 USB 3.X 也就不用费心这个问题了。 :-)

P.S. 如果在创建分区的时候将分区类型设置为 EF 并装入 EFI Bootloader,就能以 EFI 模式启动了。虽然我在部分机器上遇到了问题。:-(

离线

#4 2014-11-06 13:35:59

极简主义
会员
注册时间: 2013-04-06
帖子: 64

Re: grub2多重引导U盘

nopriler 说:

如果没记错,UltraISO 用的就是 Syslinux,或者 Syslinux 的变种。
多启动 Syslinux 也能做到的嘛,而且配置起来还更简单,无缝支持各种 Linux 发行版的 ISO。可能我被 grub-mkconfig 惯坏了,总觉得 grub 2 配置很麻烦的样子。虽然说 grub 2 看起来更强大的样子。 :-/

个人不太喜欢 memdisk,像 Arch 还好,要是 Windows 那种,要加载多久的说。不过,如果用上了 USB 3.X 也就不用费心这个问题了。 :-)

P.S. 如果在创建分区的时候将分区类型设置为 EF 并装入 EFI Bootloader,就能以 EFI 模式启动了。虽然我在部分机器上遇到了问题。:-(

能不能给个syslinux多重引导的链接,想再试试^-^

离线

#5 2014-11-06 14:31:09

atmouse
会员
注册时间: 2011-08-24
帖子: 701

Re: grub2多重引导U盘

1G u盘路过 grub4dos
用的是兼容性最好的usb-zip+ mbr
支持winpe(含uefi 跟 bios两种)
支持arch-livecd(含uefi 跟 bios两种)
支持dos on flash
支持img文件直挂
支持iso文件直挂

离线

#6 2014-11-06 14:47:08

zplinux
会员
所在地: 江西省
注册时间: 2014-10-12
帖子: 197

Re: grub2多重引导U盘

gurb4dos 不支持 ext4 分区的检索, 除此之外感觉蛮简洁高效的, 尤其是不需要 memdisk 方式是亮点, 那玩意太费时间了


Archlinux + DWM,赞同 K.I.S.S 理念!

离线

#7 2014-11-06 18:25:43

nopriler
会员
注册时间: 2012-01-03
帖子: 393

Re: grub2多重引导U盘

极简主义 说:

能不能给个syslinux多重引导的链接,想再试试^-^

官方 Wiki 还好...

离线

#8 2014-11-06 18:28:00

nopriler
会员
注册时间: 2012-01-03
帖子: 393

Re: grub2多重引导U盘

atmouse 说:

1G u盘路过 grub4dos
用的是兼容性最好的usb-zip+ mbr

其实我一直搞不懂 usb-zip usb-hdd 之类的是什么...

atmouse 说:

支持img文件直挂
支持iso文件直挂

通过 map ?对 Win7+ 的支持怎么样?

离线

#9 2014-11-06 19:35:13

savvvygh
会员
注册时间: 2014-02-16
帖子: 160

Re: grub2多重引导U盘

我是来要grub.cfg文件的

离线

#10 2017-06-23 15:14:37

ding3my
会员
注册时间: 2017-06-23
帖子: 1

Re: grub2多重引导U盘

有没有UEFI GPT的教程?

离线

#11 2017-06-23 15:53:53

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,956
个人网站

Re: grub2多重引导U盘

ding3my 说:

有没有UEFI GPT的教程?

我连双启动的都有呢~ http://adam8157.info/blog/2015/04/hybri … gacy-bios/

离线

#12 2017-06-26 23:47:59

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 1,267

Re: grub2多重引导U盘

其实没有太通用的解决方案,Linux的livecd基本上是靠grub2的loopback加载内核和早期根文件系统,但各种早期根文件系统使用不同的方法寻找ISO文件内的真根文件系统镜像
Win PE 基本靠memdisk+chainloader
原版Windows安装介质好像就完全不能直接通过ISO启动,必须解包,而且对文件系统类型有要求。


反社会,精神极其不稳定,随时可能炸碎身边所有人

离线

#13 2017-06-27 02:12:32

zsrkmyn
lazy...
注册时间: 2013-05-05
帖子: 331

Re: grub2多重引导U盘

原版 Windows 镜像可以用 grub4dos 直接引导 iso 启动的,前提是 iso 在磁盘上必须连续存放。

离线

页脚