一、使用fdisk命令对u盘进行分区
1、fdisk -l 查看那个设备时u盘 (现在以/dev/sdc为例)
2、fdisk /dev/sdc 对u盘分区 p:查看当前分区 d:删除当前分区 n:新建分区 w:保存
二、使用mkfs 将u盘格式化为fat32格式,fat32 通用性比较好
mkfs.vfat -F 32 /dev/sdc1 或者 mkfs -t vfat /dev/sdc1
三、将grub2安装到u盘
1、sudo grub-install --boot-directory=/media/u /dev/sdc 问题:--boot-dircetory 和 --root-dircetory 的区别 或:grub-install --no-floppy --boot-directory=/mnt/img /dev/sdc
2、 sudo update-grub
3、sudo grub-mkconfig -o /media/u/boot/grub/grub.cfg
以上代码中的/dev/sdc是U盘对应设备,/media/u是U盘的挂载点。
经过上面的操作,grub2被安装到u盘的mbr上了,生成了默认的启动菜单/grub/grub.cfg,通过u盘启动就能看到grub2的引导界面了,完全可以引导电脑硬盘上的操作系统了。
四、使用grub命令行启动系统 启动linux系统(本文的grub指的全部是grub2)
1、set root=(hd1,msdos1) (hd1,msdos1)是启动分区。 (在输到"("之后,按一下tab,我的能自动填充hd1,之后,再按一下tab键,可以显示出磁盘分区,在我的电脑上显示出了2个ext分区,以及这些分区的基本信息,我的安装在hd1,msdos1)
2、linux /boot/vmlinux-xxx-xxx root=UUID=xxxxxxxxx 或者 linux /boot/vmlinuz-***** -generic root=UUID=****** (root=后可以使用uuid也可使用 /dev/sda1 挂载分区,但是 本人个人暂时无法获取是sda1还是sdb1,所以用UUID,第一步tab补全显示磁盘分区详情时会显示分区的uuid号)
3、initrd /boot/initdxxx(按tab补全)
4、boot 启动
五、grub可以直接启动grub4dos
1、下载grub4dos工具到u盘(http://grub4dos.chenall.net/categories/downloads/)
2、配置 grub.cfg
menuentry "Grub4dos"{
set root=\'hd0,msdos1\'
linux16 /grub/grub4dos/grub.exe
boot
}
六、grub启动winpe
1、消灾镜像文件到u盘
2、配置grub.cfg
menuentry \'winpe\'{
set root=\'hd0,msdos1\'
insmod lvm
insmod xfs
insmod memdisk
insmod part_msdos
echo \'loading memdisk...\'
linux16 /grub/memdisk iso raw
echo \'loading iso...\'
initrd16 /grub/dabaicai.iso
}
七、grub4dos启动winpe(grub启动winpe有时候会失败所以使用grub4dos启动)
修改grub4dos下的menu.lst文件(menu.lst文件最好拷贝到根目录或者boot目录,要不然系统可能找不到)
title find and boot dabaicai.ISO
fallback 6
root (hd0,0) (系统默认是在当前磁盘,如果iso和grub4dos在同一个磁盘分区可以不用写这一句)
find --set-root /grub/dabaicai.iso
map /grub/dabaicai.iso (0xff) || map --mem /grub/dabaicai.iso (0xff)
map --hook
chainloader (0xff)
savedefault --wait=2
命令解释
set: 设置环境变量,如果不带参数,则是显示当前所有的环境变量。
linux: 从文件中加载Linux内核image。该行的其余内容则直接作为内核的命令传递,在使用了这个命令之后必须使用initrd命令。
intird: 为Linux内核image加载初始的ramdisk,并在内存中的Linux安装区域中设置适当的参数,这只能在linux命令后使用。
boot: 引导已经加载的操作系统或链式加载程序。
chainloader: 作为一个链式加载程序来加载一个文件,如我在前文所述,当我用此命令加载了一个windows的efi文件之后,便能顺利地引导win10系统的启动了。