打造自己的多功能USB启动盘——grub2引导WinPE、Archlinux安装镜像和Ubuntu liveCD

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
头像
qileilu
帖子: 375
注册时间: 2007-08-26 9:06
来自: 长沙
联系:

打造自己的多功能USB启动盘——grub2引导WinPE、Archlinux安装镜像和Ubuntu liveCD

#1

帖子 qileilu » 2012-11-16 22:39

打造自己的多功能USB启动盘——grub2引导WinPE、Archlinux安装镜像和Ubuntu liveCD
http://hi.baidu.com/qileilu/item/d3a29a ... 258819d345

利用U盘制作启动盘,引导WinPE、Linux安装的文章多如牛毛,与他们相比本文的特点有:

1.用且仅用grbu2做引导。不使用grub4dos,不是使用msdos mbr转到活动分区,到ntldr,然后再到grldr,到LDRXPE,启动winpe……

2.使用grub-install命令安装引导。不使用windows下的UltraISO、linux下的dd命令、以及其他第三方软件改写mbr,保证U盘容量、数据和完整性。

3.grub2直接引导各系统。各系统分目录存放,grub2直接引导目录内文件,不使用chailoader,u盘根目录下可无任何文件,不通过任何其他方式间接引导,简洁明快、避免混乱。

U盘内容如下,包括:
arch——Archlinux安装镜像
grub——grub各配置项
WXPE和Programs——WinPE及其各种Windows实用程序
ubuntu.iso——Ubuntu liveCD
截图 - 2012年11月16日 - 11时06分08秒.png

一、安装grub2到u盘。
grub2在各大linux版本中均有采用,它的强大这里就不多说了,基本上任何系统都是有可能通过它引导起来的,而且引导界面可定制,彩色菜单,图片显示都不在话下。这里先把grub2安装到U盘上:

U盘不分区,任何格式都可以,因为兼顾windows和linux所以建议采用fat32格式,大小1G以上(这包括除了U系统外平时还能当正常U盘使用的空间)。格不格式化随你,因为数据可以安全保留。
我这里从一个空白的2G kingston U盘开始,先格式化为fat32,查寻一下uuid为:696C-0B1C,卷标为:fairy,备用。
然后安装grub2到U盘,进入你的linux:

Archlinux下运行命令:

代码: 全选

$ sudo grub-install --boot-directory=/run/media/lcc/fairy --no-floppy --target=i386-pc --recheck /dev/sdb
$ sudo cp /usr/share/grub/{unicode.pf2,ascii.pf2} /run/media/lcc/fairy/grub
$ sudo cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /run/media/lcc/fairy/grub/locale/en.mo
$ sudo GRUB_PREFIX="/run/media/lcc/fairy/grub" grub-mkconfig -o /run/media/lcc/fairy/grub/grub.cfg
注:这里/dev/sdb为U盘对应设备,/run/media/lcc/fairy为U盘的挂载点,请参照修改。也可以不运行中间两条命令,只是增加了一些ascii,en支持。

Ubuntu下运行命令:

代码: 全选

$ sudo grub-install --root-directory=/media/u /dev/sdb
$ sudo update-grub
注:这里/dev/sdb为U盘对应设备,/media/u为U盘的挂载点,请参照修改。此处未亲自测试,不对指出请指正。

好了,现在grub2已经安装到U盘mbr上了,而且还按照机子上的系统生成了默认的启动菜单/grub/grub.cfg,这时通过U盘启动,可以看到grub2的引导界面,并且可以完美引导电脑硬盘上的系统了。当然这些硬盘系统的引导项我们不需要,可通过修改U盘上的/grub/grub.cfg来删除。

二、grub2引导WinPE
1.U盘上建立WXPE目录,将WinPE文件放置入内:
目前网络上的WinPE到处都是,各种版本其实都差不多,主要需要如下5个文件:

LDRXPE NTCOM PE SETUPLDR.BIN WINPE.IS_

大致过程是:LDRXPE调用NTCOM和SETUPLDR.BIN读取PE找到WINPE.IS_镜像,加载WinPE。

2.修改grub.cfg,加入winpe引导项:

代码: 全选

menuentry 'LDRXPE for WinCE (on /usb/fairy)'{
insmod part_msdos
insmod fat
set root='hd0,msdos1'
search --no-floppy --fs-uuid --set=root 696C-0B1C
ntldr /WXPE/LDRXPE
}
说明:此处的696C-0B1C为U盘分区uuid,其实这一句也可以不要,因为上面已经set root了,主要为了双保险。

这里的关键是:ntldr /WXPE/LDRXPE,而不是chainloader或者linux,我用后者尝试了一周都不得成功,最后才发现了可以直接用ntldr命令,强大啊!!

三、grub2引导Archlinux镜像
1.解压Archlinux最新安装镜像:archlinux-2012.11.01-dual.iso,复制其中的arch目录到U盘。
EFI isolinux loader这三个目录不需要。

2.精简arch目录:
因为我要用的是32位的,而不用64位的所以删掉64位的相关目录和文件,包括:
删除arch/x86_64目录;
删除arch/boot目录下的:memtest memtest.COPYING syslinux x86_64
修改arch/aitab,注释掉x86_64的两行。
当然你的空间足够大,这些都可以不做。

3.修改grub.cfg,加入arch引导项:

代码: 全选

menuentry 'archlinux-2012.11.01-setup (on /usb/fairy)'{
insmod part_msdos
insmod fat
set root='hd0,msdos1'
search --no-floppy --fs-uuid --set=root 696C-0B1C
linux/arch/boot/i686/vmlinuz archisobasedir=arch archisolabel=fairy
initrd/arch/boot/i686/archiso.img
}
说明:同上此处的696C-0B1C为U盘分区uuid,其实这一句也可以不要,因为上面已经set root了,主要为了双保险。

这里的关键是:archisobasedir=arch archisolabel=fairy ,这里的fairy是U盘的卷标,少了这句是不得成功的。

四、grub2引导Ubuntu liveCD
1.复制ubuntu-12.04-desktop-i386.iso到U盘根目录,当然为了根目录干净放到iso或者其他目录也可以,以下做对应修改。

2.修改grub.cfg,加入ubuntu引导项:

代码: 全选

menuentry 'ubuntu-12.04-desktop-i386.iso' {
insmod fat
insmod loopback
insmod iso9660
loopback loop (hd0,1)/ubuntu-12.04-desktop-i386.iso
set root=(loop)
linux /casper/vmlinuz boot=casper iso-scan/filename=/ubuntu-12.04-desktop-i386.iso noprompt noeject locale=zh_CN.UTF-8 --
initrd /casper/initrd.lz
}
说明:
hd0,1 指得是U盘第一分区,我这里只有一个分区。
iso-scan/filename=/ubuntu-12.04-desktop-i386.iso这里要注意ubuntu前面的“/”,如果找不到文件会出现can't open /dev/sr0错误。
locale=zh_CN.UTF-8 是设置中文环境,很多人引导成功却是英文环境的,加上这条就可以了。
2012-11-16 .png
Dell M1210

双引导—>
grub2: 电源键启动
Chameleon V2: MediaDirect启动。

五系统—>
ArchLinux sda3,6,7,8,9 ext3,4
Win7 sda1,5,sdb5 ntfs
Mac OS X 10.5.7 Leopard sda2 hfs+
Ubuntu sda10 ext4
win2003 PE sdb1 fat32
swap sda11
头像
youzhiyili
帖子: 2422
注册时间: 2012-03-22 20:42
系统: ubuntu22.04

Re: 打造自己的多功能USB启动盘——grub2引导WinPE、Archlinux安装镜像和Ubuntu liveCD

#2

帖子 youzhiyili » 2012-11-16 23:09

先标记一个
@自由建客 @qy117121 @枫叶饭团 @cikekid @YeLee @jtshs256 @eexpress @ljj_jjl2008 @zhw2101024 @TeliuTe @月下叹逍遥 @leeaman @懒蜗牛Gentoo @灰色小狼 @photor @adagio @JiangHui @phoenixlzx @oneleaf
huzhuang
帖子: 7
注册时间: 2012-07-31 10:25

Re: 打造自己的多功能USB启动盘——grub2引导WinPE、Archlinux安装镜像和Ubuntu liveCD

#3

帖子 huzhuang » 2012-11-20 21:55

好文!
我安装好grub之后没有grub.cfg,只有一个grubenv怎么回事
头像
qy117121
论坛版主
帖子: 50538
注册时间: 2007-12-14 13:40
系统: Winbuntu
来自: 志虚国乌由市
联系:

Re: 打造自己的多功能USB启动盘——grub2引导WinPE、Archlinux安装镜像和Ubuntu liveCD

#4

帖子 qy117121 » 2012-11-20 21:59

还是用我的grub4dos
渠月 · QY   
本人只会灌水,不负责回答问题
无聊可以点一下→ http://u.nu/ubuntu

Ubuntu 20.04 快速设置指南,请配合浏浏览器自动翻译使用

邮箱 chuan@ubuntu.org.cn
头像
32idea
帖子: 1251
注册时间: 2006-12-15 9:32
系统: linux

Re: 打造自己的多功能USB启动盘——grub2引导WinPE、Archlinux安装镜像和Ubuntu liveCD

#6

帖子 32idea » 2012-11-20 23:29

偶和楼主的思路稍有不同,用grub2直接引导ubuntu、arch、pmagic之类的iso镜像文件,不需要解压开来。其次用grub2引导grub4dos来引导winpe之类的win系列系统的iso镜像文件,因此,我的目录树很简洁,除了grub4dos和grub2的引导文件外,其他的都是放在/iso/路径下的各类光盘镜像文件。可以提供一个给各位参考。

代码: 全选

set default=0
insmod part_msdos
insmod ext2
insmod ntfs

# (3) linuxmint-dvd-64bit.iso
menuentry 'linuxmint-dvd-64bit.iso'{
set isofile='/iso/linuxmint-13-xfce-dvd-64bit.iso'
search --set -f $isofile
loopback loop $isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile ro  locale=zh_CN.UTF-8 
initrd (loop)/casper/initrd.lz
}

# (4) pmagic.iso-i686
menuentry 'pmagic.iso-i686' {
set isofile='/iso/pmagic_2012_10_10.iso'
search --set -f $isofile
loopback loop $isofile
linux (loop)/pmagic/bzImage iso_filename=$isofile boot=live load_ramdisk=1 prompt_ramdisk=0 noeject noprompt  zh_CN
initrd (loop)/pmagic/initrd.img
}

# (5) pmagic.iso-x86_64
menuentry 'pmagic.iso-x86_64' {
set isofile='/iso/pmagic_2012_10_10_x86_64.iso'
search --set -f $isofile
loopback loop $isofile
linux (loop)/pmagic/bzImage iso_filename=$isofile boot=live load_ramdisk=1 prompt_ramdisk=0 noeject noprompt  zh_CN
initrd (loop)/pmagic/initrd.img
}

# (6) archiso-x86
menuentry 'archiso-x86' {
set isofile='/iso/archlinux-2012.11.01-dual.iso'
search --set -f $isofile
loopback loop $isofile
linux (loop)/arch/boot/i686/vmlinuz archisobasedir=arch archisolabel=ARCH_201211
initrd (loop)/arch/boot/i686/archiso.img
}

# (7) archiso-x86_64
menuentry 'archiso-x86_64' {
set isofile='/iso/archlinux-2012.11.01-dual.iso'
search --set -f $isofile
loopback loop $isofile
linux (loop)/arch/boot/x86_64/vmlinuz  archisobasedir=arch archisolabel=ARCH_201211
initrd (loop)/arch/boot/x86_64/archiso.img
}

# (8) systemrescuecd-x86.iso
menuentry 'systemrescuecd-x86' {
set isofile='/iso/systemrescuecd-x86-3.1.1.iso'
search --set -f $isofile
loopback loop $isofile
linux (loop)/isolinux/rescuecd setkmap=us isoloop=$isofile noeject noprompt 
initrd (loop)/isolinux/initram.igz
}

# (9) systemrescuecd-x86_64.iso
menuentry 'systemrescuecd-x86_64' {
set isofile='/iso/systemrescuecd-x86-3.1.1.iso'
search --set -f $isofile
loopback loop $isofile
linux (loop)/isolinux/rescue64 setkmap=us isoloop=$isofile noeject noprompt 
initrd (loop)/isolinux/initram.igz
}

# (10) grub4dos
menuentry 'grub4dos'{
search --set -f /grub.exe
linux /grub.exe --config-file=/menu.lst
}
头像
qy117121
论坛版主
帖子: 50538
注册时间: 2007-12-14 13:40
系统: Winbuntu
来自: 志虚国乌由市
联系:

Re: 打造自己的多功能USB启动盘——grub2引导WinPE、Archlinux安装镜像和Ubuntu liveCD

#7

帖子 qy117121 » 2012-11-21 9:17

楼上多大的U盘 :em06
渠月 · QY   
本人只会灌水,不负责回答问题
无聊可以点一下→ http://u.nu/ubuntu

Ubuntu 20.04 快速设置指南,请配合浏浏览器自动翻译使用

邮箱 chuan@ubuntu.org.cn
头像
ahwad
帖子: 1112
注册时间: 2009-05-06 0:36

Re: 打造自己的多功能USB启动盘——grub2引导WinPE、Archlinux安装镜像和Ubuntu liveCD

#8

帖子 ahwad » 2012-11-21 14:14

这个要学习一下。。。。。。
头像
32idea
帖子: 1251
注册时间: 2006-12-15 9:32
系统: linux

Re: 打造自己的多功能USB启动盘——grub2引导WinPE、Archlinux安装镜像和Ubuntu liveCD

#9

帖子 32idea » 2012-11-21 14:20

qy117121 写了:楼上多大的U盘 :em06
以前是个1g的,现在换16g了。菜单写好了,镜像需要用的时候再拷进去就行了,尤其是以前只有1g大小的时候,除了体积小的常备的镜像,有些镜像是需要的时候先删掉不用的腾出地方再拷进去的。
上次由 32idea 在 2012-11-21 14:21,总共编辑 1 次。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 打造自己的多功能USB启动盘——grub2引导WinPE、Archlinux安装镜像和Ubuntu liveCD

#10

帖子 eexpress » 2012-11-21 14:20

set isofile如果能不设置,用find去找。还差不多。
或者,写一个shell,选择iso,然后自动生成u盘系统。这才智能。
● 鸣学
头像
32idea
帖子: 1251
注册时间: 2006-12-15 9:32
系统: linux

Re: 打造自己的多功能USB启动盘——grub2引导WinPE、Archlinux安装镜像和Ubuntu liveCD

#11

帖子 32idea » 2012-11-21 14:27

set isofile可以不设置,因为文件路径太长,还要重复录入才设置的,另外貌似grub2是用search替代了find,
头像
Strange
帖子: 1824
注册时间: 2006-05-19 9:54
来自: Shanghai

Re: 打造自己的多功能USB启动盘——grub2引导WinPE、Archlinux安装镜像和Ubuntu liveCD

#12

帖子 Strange » 2012-11-21 16:21

6楼想法不错 :em11
ニンニク入れますか?
x60 with gentoo
头像
adagio
论坛版主
帖子: 22110
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球

Re: 打造自己的多功能USB启动盘——grub2引导WinPE、Archlinux安装镜像和Ubuntu liveCD

#13

帖子 adagio » 2012-11-21 23:05

顶6楼 :em04
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
头像
ebok
帖子: 852
注册时间: 2008-02-15 0:09

Re: 打造自己的多功能USB启动盘——grub2引导WinPE、Archlinux安装镜像和Ubuntu liveCD

#14

帖子 ebok » 2012-11-21 23:16

好文
我是用grub4dos装到U盘MBR做的,U盘根目录有grldr,menu.lst,bootmgr
引导了一个slax和win7PE,bootmgr必须放根目录没办法.
Somebody think they are full of niubility, so they play a zhuangbility, but only reflect their shability.
头像
qileilu
帖子: 375
注册时间: 2007-08-26 9:06
来自: 长沙
联系:

Re: 打造自己的多功能USB启动盘——grub2引导WinPE、Archlinux安装镜像和Ubuntu liveCD

#15

帖子 qileilu » 2012-11-22 14:03

32idea 写了:偶和楼主的思路稍有不同,用grub2直接引导ubuntu、arch、pmagic之类的iso镜像文件,不需要解压开来。其次用grub2引导grub4dos来引导winpe之类的win系列系统的iso镜像文件,因此,我的目录树很简洁,除了grub4dos和grub2的引导文件外,其他的都是放在/iso/路径下的各类光盘镜像文件。可以提供一个给各位参考。
第一,grub2引导功能还不够强大么?为啥还要用grub2来交给grub4dos再引导,多此一举呢??
第二,我更多考虑的是简洁,一个iso放在那里是很简单,我例子中的ubuntu livecd就是这么做的,当然arch也可是这么做,但是这样有点研究得不够透彻,不够简洁,例如arch的iso中有很多文件是做usb引导不需要的啊。解压开来这也是多探讨一种方法实现啊,况且我的u盘做启动只是功能的一种,我还要留更多的空间做日常应用。
第三,神说的对,下一步完善的方向是:自动搜索硬盘中系统,自动搜索U盘中可启动镜像。
Dell M1210

双引导—>
grub2: 电源键启动
Chameleon V2: MediaDirect启动。

五系统—>
ArchLinux sda3,6,7,8,9 ext3,4
Win7 sda1,5,sdb5 ntfs
Mac OS X 10.5.7 Leopard sda2 hfs+
Ubuntu sda10 ext4
win2003 PE sdb1 fat32
swap sda11
回复