#!/bin/sh
#/etc/grub.d/40_custom
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
set default="1"
set ext4_data_uuid="aaaaaaaa-08bc-4163-a75b-fd6620a08ee2" #通过blkid查看ext4分区的uuid
set isopath=/home/test/Downloads/os # 定义iso文件存放的路径
insmod search_fs_uuid
search --no-floppy --set=centos_iso_part --fs-uuid $ext4_data_uuid
set centoslivedvd=CentOS-7-x86_64-LiveGNOME-1810.iso # centosliveGNOME版镜像
set centosdvd=CentOS-7-x86_64-DVD-1708.iso # centosDVD版镜像
function load_video {
insmod efi_gop
insmod efi_uga
insmod video_bochs
insmod video_cirrus
insmod all_video
}
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
insmod iso9660
insmod loopback
set timeout=10
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Start CentOS-7-LiveGnome-1810' --class fedora --class gnu-linux --class gnu --class os {
set isofile="$isopath/$centoslivedvd"
loopback loop ($centos_iso_part)$isofile
probe -l (loop) --set=loopuuid
set id=$loopuuid
linuxefi (loop)/isolinux/vmlinuz0 root=live:CDLABEL=$id rootfstype=auto ro rd.live.image quiet rhgb rd.luks=0 rd.md=0 rd.dm=0 iso-scan/filename=${isofile}
initrdefi (loop)/isolinux/initrd0.img
}
menuentry 'Start CentOS-7-1810_x86_64-DVD-1708' --class fedora --class gnu-linux --class gnu --class os {
set isofile="$isopath/$centosdvd"
loopback loop ($centos_iso_part)$isofile
probe -u (loop) --set=loopuuid
set id=UUID=$loopuuid
linuxefi (loop)/images/pxeboot/vmlinuz iso-scan/filename=$isofile inst.stage2=hd:$id rootfstype=auto rw rd.live.image quiet rhgb
initrdefi (loop)/images/pxeboot/initrd.img
}
这个用的是ubuntu18.04.2默认的 grub2来引导,需要将centos的iso镜像文件放到ext3/ext4分区。因为默认centos不能识别ntfs分区。一般来说只需要更改ext4分区的 uuid,iso存放路径,镜像文件名称。然后执行:
$ sudo update-grub
重启后就可以在grub引导界面看到添加的选项了。
后续可以升级的地方是将livecd持久化。大概的思路是新建一个 casper-rw 分区,然后在 linux 后面添加 persistent。