一、fdisk /dev/sdb給U盤分區,其中sdb1爲vfat,用於平時的文件存放;sdb2爲linux,格式化爲ext2,存放啓動的grub的模塊與相關配置。 設置sdb2爲active(可啓動)。linux
二、用lsblk -f或blkid /dev/sdb2得到/dev/sdb2的uuid。ubuntu
三、掛載/dev/sdb2到/mnt/disk0,執行grub-install --no-floppy --root-directory=/mnt/disk0 /dev/sdbwindows
四、配置文件copy:ide
# cp /boot/grub/grub.cfg /mnt/disk0/boot/grub/grub.cfgoop
# mkdir -p /mnt/disk0/etc/default
# cp /etc/default/grub /mnt/disk0/etc/default
# cp -a /etc/grub.d /mnt/disk0/etcui
五、修改grub.cfg中的menuentry,例如:操作系統
menuentry 'TinyCore' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos2'
search --no-floppy --fs-uuid --set=root 96810d5f-6a43-4c40-821c-58443477953f
linux /tce/boot/vmlinuz quiet waitusb=5:UUID="96810d5f-6a43-4c40-821c-58443477953f" tce=UUID="96810d5f-6a43-4c40-821c-58443477953f"
initrd /tce/boot/core.gz
}it
menuentry 'Ubuntu 16.04.1 livecd amd64' class iso{
insmod part_msdos
insmod ext2
set isofile="/iso/lubuntu-16.04.1-desktop-amd64.iso"
set root='hd0,msdos2'
loopback loop (hd0,msdos2)$isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=${isofile} quiet splash
initrd (loop)/casper/initrd.lz
}io
####memdisk (from syslinux)class
menuentry "Boot WinPE ISO" --class windows {
set root=(hd0,msdos2)
echo 'Loading Memdisk...'
linux16 /memdisk iso raw
echo 'Loading ISO...'
initrd16 /WINPE.iso
}
menuentry "Windows XP" {
set root=(hd0,x)
ntldr /ntldr
boot
}
----------------------------------------------------
其它:
操做系統中update-grub的腳本在/usr/sbin下,至關於:
set -e
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"