- U盘分区
由于windows系统限制,使用Linux gdisk等工具对U盘分区
GPT
分区1:EFI分区,FAT,50M,hex code:ef00
分区2:存储分区,FAT,视U盘大小设置,hex code:0700
分区3:linux根分区,EXT4,10G,hex code:8304
分区4:biosboot分区,无需格式化,2M,hex code:ef02
若无需随身启动linux,可无需分区3
若无需兼容传统bios启动,可无需分区4 - grub-install
挂载分区1、分区2
# mount /dev/sdx1 /mnt/efi
# mount /dev/sdx2 /mnt/boot
UEFI启动引导安装
# grub-install --target=x86_64-efi --efi-directory=/mnt/efi --boot-directory=/mnt/boot --removable
传统BIOS启动引导安装
# grub-install --target=i386-pc --boot-directory=/mnt/boot /dev/sdx
sdx替换为真实的U盘设备符
若采用一些linux发行版的grub软件,程序或为grub2-install
在U盘安装UEFI引导时,必须加上removable参数
- grub.cfg
在分区2,grub文件夹中,创建简易的grub.cfg配置文件。
set default="0"
loadfont unicode
set gfxmode=auto
function load_video { ///此段用于
echo ///ARM64
} ///启动
function load_video { ///此
insmod video
insmod video_bochs ///段
insmod video_cirrus ///
insmod video_fb ///用
insmod all_video
insmod videoinfo ///于
if [ $grub_platform = efi ];then///x86_64
insmod efi_gop
insmod efi_uga
elif [ $grub_platform = pc ];then///启
insmod vga
insmod vbe
fi
} ///动
load_video
insmod gfxterm
insmod gettext
set locale_dir=$prefix/locale
set lang=zh_CN
terminal_output gfxterm
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set timeout=60
set rootuuid="" ///设置分区2的UUID
set p3uuid="" ///设置分区3的UUID
search --no-floppy --set=root --fs-uuid $rootuuid ///将分区2设置为根分区
search --no-floppy --set=p3part --fs-uuid $p3uuid ///设置分区3别名
grub.cfg文件接下来设置系统启动项,所有以下的iso安装镜像文件均放在分区2中。
RHEL、Centos、Fedora系列iso安装镜像
menuentry '安装 CentOS或其他命名' --class fedora --class gnu-linux --class gnu --class os {
set isofile=/[安装镜像文件名].iso
loopback loop $isofile
probe -u (loop) --set=loopuuid
set id=UUID=$loopuuid
linux (loop)/images/pxeboot/vmlinuz iso-scan/filename=$isofile inst.stage2=hd:$id ks=hd:$id:/ks.cfg inst.nosave=all inst.gpt quiet
initrd (loop)/images/pxeboot/initrd.img
}
///采用anaconda安装程序,配置详情(inst.stage2、ks等)请自行查阅资料。
debian发行版iso安装镜像
menuentry '安装 debian或其他命名' --class gnu-linux --class gnu --class os {
linux /debianhdd/vmlinuz quiet
initrd /debianhdd/initrd.gz
}
///debian需要下载支持磁盘安装的内核文件(hd media installer),可将下载文件放在分区2任意位置
opensuse发行版iso安装镜像
menuentry ‘安装 openSuSE或其他命名’ --class fedora --class gnu-linux --class gnu --class os {
set isofile=/[安装镜像文件名].iso
loopback loop $isofile
linux (loop)/boot/x86_64/loader/linux iso-scan/filename=$isofile
initrd (loop) /boot/x86_64/loader/initrd
}
///suse内核本身自带硬盘安装支持,因此直接拉取安装镜像中的内核文件
windows链式启动
menuentry ‘Windows PE’ {
if [ $grub_platform = efi ]; then
insmod chain
chainloader /winpe/EFI/Boot/bootx64.efi
elif [ $grub_platform = pc ]; then
linux16 /boot/grub/memdisk harddisk
initrd16 /winpe/WinPE_BIOS.vhd
fi
}
///windows PE系统可由windows ADK工具生成,memdisk由syslinux工具提供
U盘分区3 linux启动
menuentry "随身linux或其他命名" {
set root=$p3part
linux /boot/vmlinuz-5.3.18-lp152.19-default root=UUID=$p3uuid quiet mitigations=off
initrd /boot/initrd-5.3.18-lp152.19-default
}
///将linux安装至分区3,即可实现u盘启动