页次: 1
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盘在手~~~
江山
我有~~~
哈哈哈哈哈哈......
......
离线
我的 WinPE 好像已经引导不起来了喵。什么时候把参数改你那样再试试。
PS: 我的 U 盘才 4G,已经放满系统镜像了…………
PPS: 我的 U 盘还能引导到 grub4dos 和 DOS 的哦。那个 DOS 里边还有个 ghost.exe 呢。
离线
如果没记错,UltraISO 用的就是 Syslinux,或者 Syslinux 的变种。
多启动 Syslinux 也能做到的嘛,而且配置起来还更简单,无缝支持各种 Linux 发行版的 ISO。可能我被 grub-mkconfig 惯坏了,总觉得 grub 2 配置很麻烦的样子。虽然说 grub 2 看起来更强大的样子。 :-/
个人不太喜欢 memdisk,像 Arch 还好,要是 Windows 那种,要加载多久的说。不过,如果用上了 USB 3.X 也就不用费心这个问题了。 :-)
P.S. 如果在创建分区的时候将分区类型设置为 EF 并装入 EFI Bootloader,就能以 EFI 模式启动了。虽然我在部分机器上遇到了问题。:-(
离线
如果没记错,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多重引导的链接,想再试试^-^
离线
1G u盘路过 grub4dos
用的是兼容性最好的usb-zip+ mbr
支持winpe(含uefi 跟 bios两种)
支持arch-livecd(含uefi 跟 bios两种)
支持dos on flash
支持img文件直挂
支持iso文件直挂
离线
gurb4dos 不支持 ext4 分区的检索, 除此之外感觉蛮简洁高效的, 尤其是不需要 memdisk 方式是亮点, 那玩意太费时间了
Archlinux + DWM,赞同 K.I.S.S 理念!
离线
能不能给个syslinux多重引导的链接,想再试试^-^
官方 Wiki 还好...
离线
1G u盘路过 grub4dos
用的是兼容性最好的usb-zip+ mbr
其实我一直搞不懂 usb-zip usb-hdd 之类的是什么...
支持img文件直挂
支持iso文件直挂
通过 map ?对 Win7+ 的支持怎么样?
离线
我是来要grub.cfg文件的
离线
有没有UEFI GPT的教程?
离线
有没有UEFI GPT的教程?
我连双启动的都有呢~ http://adam8157.info/blog/2015/04/hybri … gacy-bios/
离线
其实没有太通用的解决方案,Linux的livecd基本上是靠grub2的loopback加载内核和早期根文件系统,但各种早期根文件系统使用不同的方法寻找ISO文件内的真根文件系统镜像
Win PE 基本靠memdisk+chainloader
原版Windows安装介质好像就完全不能直接通过ISO启动,必须解包,而且对文件系统类型有要求。
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
原版 Windows 镜像可以用 grub4dos 直接引导 iso 启动的,前提是 iso 在磁盘上必须连续存放。
离线
页次: 1