用ubuntu 17.10系统无损制作grub2启动U盘(BIOS)

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
回复
fuhuizn
帖子: 947
注册时间: 2006-01-06 22:55
系统: ubuntu
联系:

用ubuntu 17.10系统无损制作grub2启动U盘(BIOS)

#1

帖子 fuhuizn » 2018-03-15 11:14

grub2启动U盘的作用:
用来引导各种(ubuntu等)发行版的 iso 文件,只要把下载的 iso 文件放到U盘上,然后在U盘的 boot/grub/grub.cfg 文件中增加对应的“menuentry”就可以启动了。

一、制作 syslinux 启动U盘
第一步:安装syslinux

apt-get install syslinux

第二步:制作启动U盘

先用fdisk给U盘分区,简单起见,只分1个分区,格式化为fat32格式。假定U盘设备文件是:/dev/sdb。
fdisk /dev/sdb
m -- 帮助
n -- 新建分区
分区好后:
a -- 激活分区
w -- 写入分区表
拔掉,重新插入。

格式化:
mkfs.vfat -F 32 /dev/sdb1

使用syslinux制作启动盘:

代码: 全选

mount /dev/sdb1 /mnt
mkdir -p /mnt/boot/syslinux
umount /dev/sdb1
syslinux -i -d /boot/syslinux /dev/sdb1
dd sudo dd conv=notrunc bs=440 count=1 if=/usr/lib/SYSLINUX/mbr.bin of=/dev/sdb

上面的 mbr.bin 包含在syslinux软件中。此时这个U盘只需要一个 /boot/syslinux/syslinux.cfg 配置文件就可以启动系统了。

二、在ubuntu 17.10系统下定制 g2ldr
注意:下面的命令必须在 grub-pc 环境下运行,grub-efi 是不行的。因此如果你用的是 efi 启动系统,请先安装 grub-pc。

apt-get install grub-pc

完成工作后可以切换回efi系统:

apt-get install grub-efi

三步生成 g2ldr:

新建 bootcfg.cfg 文件,编辑内容:
search.file /boot/grub/grub.cfg root
set prefix=($root)/boot/grub/

生成 core.img:
grub-mkimage -d /usr/lib/grub/i386-pc -p /boot/grub/ -c bootcfg.cfg -o core.img -O i386-pc biosdisk part_msdos fat exfat ntfs ext2 iso9660 udf configfile search help font linux chain

生成 g2ldr:
cat /usr/lib/grub/i386-pc/lnxboot.img core.img >g2ldr

三、使用 syslinux 引导 g2ldr

1、 把 g2ldr 复制到U盘下的 boot/grub/ 目录中
2、 把 /boot/grub/ 中的文件、文件夹都复制到U盘下的 boot/grub/ 目录中
3、 在U盘中创建 /boot/syslinux/syslinux.cfg ,编辑内容:

代码: 全选

DEFAULT grub
TIMEOUT 10
PROMPT 1
LABEL grub
    KERNEL /boot/grub/g2ldr
上次由 fuhuizn 在 2018-03-22 12:12,总共编辑 2 次。
fuhuizn
帖子: 947
注册时间: 2006-01-06 22:55
系统: ubuntu
联系:

Re: 用ubuntu 17.10系统无损制作grub2启动U盘(BIOS)

#2

帖子 fuhuizn » 2018-03-18 12:38

提供两个grub.cfg,一个放在U盘的/boot/grub/中,一个放在/iso中
/boot/grub/grub.cfg

代码: 全选

if loadfont /boot/grub/unicode.pf2 ; then
        set gfxmode=auto
fi
insmod gfxterm
insmod ext2
insmod fat
insmod loopback
insmod iso9660
terminal_output gfxterm

set menu_color_normal=white/black
set menu_color_highlight=black/light-gray

set timeout=5

# menuentry bellow
search --file /iso/grub.cfg --set=pre_iso
source ($pre_iso)/iso/grub.cfg

#menuentry "iso position $pre_iso" {
#	search --file /iso/grub.cfg --set=pre_iso
#	echo ($pre_iso)
#}

# end-menuentry
/iso/grub.cfg -- 如果你的ISO镜像是ubuntu的,直接替换bionic-desktop-amd64.iso,别的发行版请根据对应格式修改

代码: 全选

menuentry 'bionic-desktop-amd64.iso' {
	set isofile='/iso/bionic-desktop-amd64.iso'
	search --file $isofile --set=root
	loopback loop $isofile
	set root=(loop)
	linux /casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject locale=zh_CN.UTF-8 --
	initrd /casper/initrd.lz
}

menuentry '硬盘Linux -- grub.cfg' {
	if search --file /usr/sbin/grub-mkconfig --set=root ;then
		if [ -e /boot/grub/grub.cfg ];then
			configfile /boot/grub/grub.cfg
		eles
			echo "No /boot/grub/grub.cfg"
		fi
	else
		echo "Seems No linux"
	fi
}
Jacky286
帖子: 111
注册时间: 2015-02-15 17:33
系统: Ubuntu 12.04

Re: 用ubuntu 17.10系统无损制作grub2启动U盘(BIOS)

#3

帖子 Jacky286 » 2018-11-18 10:58

fuhuizn 写了: 2018-03-15 11:14 grub2启动U盘的作用:
用来引导各种(ubuntu等)发行版的 iso 文件,只要把下载的 iso 文件放到U盘上,然后在U盘的 boot/grub/grub.cfg 文件中增加对应的“menuentry”就可以启动了。

一、制作 syslinux 启动U盘
第一步:安装syslinux

apt-get install syslinux

第二步:制作启动U盘

三步生成 g2ldr:



生成 g2ldr:
cat /usr/lib/grub/i386-pc/lnxboot.img core.img >g2ldr

sudo cat /usr/lib/grub/i386-pc/lnxboot.img >g2ldr
bash: g2ldr: 权限不够
fuhuizn
帖子: 947
注册时间: 2006-01-06 22:55
系统: ubuntu
联系:

Re: 用ubuntu 17.10系统无损制作grub2启动U盘(BIOS)

#4

帖子 fuhuizn » 2018-11-22 14:39

到有写权限的目录中操作,
或者先 sudo -s 进入root状态
回复