[英文原稿翻译]Grub2/ISOBoot 使用GRUB2启动ISO镜像 适合硬盘安装和启动各种工具

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
bajie311
帖子: 2
注册时间: 2016-11-02 15:33
系统: ubuntu15.10

[英文原稿翻译]Grub2/ISOBoot 使用GRUB2启动ISO镜像 适合硬盘安装和启动各种工具

#1

帖子 bajie311 » 2016-11-12 2:32

:Haha
本文原文地址http://520dt.cn/thread-583-1-1.html.
是本人出于技术爱好创设的个人站点。恳请各位同好者和我一起进步。到本站集合 可以开设版块。召集所有ubuntu爱好者一起学习提供技能
:em11 :em03
Grub2/ISOBoot
内容:

1.介绍

2.下载ISO文档

2.1 下载

2.2 ISO文件位置

2.3 存储ISO文件

3.浏览ISO文档内容

3.1 结构管理器

3.2 命令行

3.3 GRUB终端

4.创建GRUB2菜单项

4.1 grml-rescueboot

4.2 grub-n-iso_multiboot

4.2.1.制作能启动所有pc电脑的USB随身碟

4.3 手动编辑GRUB文件集

4.3.1菜单项实例

4.3.2菜单项细节

5.启动ISO

5.1不使用GRUB菜单项启动

5.2菜单项纰漏

6.从Boot菜单项安装Ubuntu系统

7.菜单项启动ISO示例

8.能从ISO启动的其他方案



简介

Ubuntu ISO文件的设计目的是为了使用GURB2能直接从硬盘启动而避免使用cd或者dvd光碟.这个特性允许用户通过使用Ubuntu安装碟的 Try Ubuntu 来试用Ubuntu系统,同时能从硬盘上的ISO镜像直接安装该系统.除了Ubuntu ISO之外,很多其他的linux 发布版本的救援光碟也能从ISO直接启动.
为了使用这个特性,GRUB2必须安装在系统上.GRUB Legacy 无法使用这个功能.

这里提到的所有GRUB 均指的是GRUB2(版本1.97 或者 更新)除非特别指出.
本指南详述如下解决方案:
1.下载和存储Ubuntu ISO
2.创建一个GRUB2 菜单项用于直接从ISO文件启动运行
3.通过GRUB2菜单从ISO文件直接安装Ubuntu

另外,为其他操作系统和可用光碟准备的GRUB2菜单项示例展示在 GRUB2/ISO启动/例子 页面.


下载ISO文档

下载

用户必须首先明确下载哪些ISO文档.桌面版本的32位和64位版本都可用.32位版本(i386)可以运行在64位的机器上,但是64位版(amd64)不能运行在32位机器上.同时也有服务器版本,还为了满足一些用户的特殊需求诸如使用RAID或者LVM而提供了候选的光碟版

Ubuntu cd或者dvd 可以从官方站点下载 点此下载 安装辅导和可选的下载站点都可以从那个页面看到.

Ubuntu CD/DVDs can be downloaded from the official Ubuntu site: Ubuntu Download page. Links to installation help and alternative download sites are accessible from that page as well.


ISO文件位置

ISO File Location

Ubuntu默认的下载位置通常是用户的下载目录,但是ISO也可能出现在桌面和用户指定的其他位置。官方定义的64位桌面版的文件名使用这样的格式:ubuntu-XX.XX-desktop-amd64.iso 32位的使用 ubuntu-XX.XX-desktop-i386.iso,其中XX.XX指代版本号(例子:12.04,11.10等 我的是16.04 LTS)

储存ISO文件

一旦下载完成,用户必须决定将文件存储在哪里.典型的现象,ISO cd镜像 大约是700MB大小,dvd版会更多。当系统分区(/分区)空间有限而将之存储在一个非系统分区是我们推荐的办法.另外,用户在备份系统的时候也不希望将系统分区下包含ISO文件的目录包含进去.

为了这个目的,ISO将被存放在用户的下载目录(/home/user-name/Downloads).

注意:当你正在使用一个空间较小的独立的/boot分区时而在那里存储ISO文件也是不推荐的.

1.ISO文件可被存储在任意GRUB2可以访问到的分区.而且那些分区的格式也不一定就要是ext3或者ext4.

2.如果存储在一个拥有和系统不一样的文件系统的分区上,那么为了可成功访问到它,文件系统模块(ntfs,日志文件系统,等)就必须被包含进GRUB菜单项.
3.特殊情况下,系统分区下可以保留ISO文件.

4.如果系统使用一个独立的分区诸如:/home或者/boot,用户必须在菜单项里面确认是否指明了ISO文件正确的存储路径.在这样的情形下,除非GURB2直接加载那个分区,否则完整路径将不能包含/home或者/boot.

浏览ISO文件的内容

有一些办法可以使用户检查ISO文件的内容.浏览那些包含在ISO里面的目录和文件有利于决定菜单项里面的关乎到文件目录和文件的确切路径.有2个最重要的文件,用来建立菜单项,分别是kernel和initrd镜像文件.在一个标准的Ubuntu ISO文件里面这些文件驻留在casper目录下.kernel内核链接是vmlinuz,镜像文件是initrd.img.

其他的可以启动的linux ISO 和 有效cd,这些文件可被安放在另外的目录,也可能名字不同(linuz0,initramfs,等).注意到一些非Ubuntu ISO包含一个扩展名为.gz的initrd镜像,它并不使用现今的Ubuntu沿用的.lz扩展名.

结构管理器

Archive Manager或者 File Roller 是一个图形化用户接口应用程序,它能检测ISO文件的内容.Archiive Manager 能通过以下途径启动:

在 Nautilus,右键单击ISO文件,然后选择 Open with Archive Manager.

通过DASH Home按钮(屏幕的左上角).输入 Archive Manager 并 按下 ENTER.

通过终端 使用 file-roller 或者 gksu file-roller



命令行

用户能通过一个终端加载ISO镜像 然后通过命令行或者打开一个文件浏览器来检测那些内容.通过终端加载ISO的办法如下:

1.正常启动进入到Linux操作系统.

2.如有需要,创建一个精确的挂载点.一个已经存在的挂载点也可以被使用

3.挂载ISO

例如:sudo mount -o loop /home/user-name/Downloads/ubuntu-desktop.amd64.iso /mnt/iso

4.打开一个文件浏览器来浏览那些内容

sudo mkdir /mnt/iso # Optional - the ISO file can be mounted on an existing mount point if desired.
sudo mount -o loop /<path>/<filename>.iso /mnt/iso
gksu nautilus /mnt/iso
sudo umount /mnt/iso # When finished inspecting the contents.

GRUB 终端

GRUB2终端操作指令允许浏览器分区和ISO文件的内容.如果我们在通过菜单项启动ISO文件镜像的时候产生了一些错误信息,那么下面的GRUB命令是有帮助的:

ls Display partitions known to GRUB.

ls (hdX,Y)/ Display the contents of the / folder on /dev/sdXY

通过GRUB终端挂载一个ISO镜像,确定好ISO文件的位置或者路径,然后:

loopback loop (hdX,Y)/<path>/<filename.iso> Example: loopback loop (hd0,5)/my_isos/ubuntu-12.04-desktop-amd64.iso

一旦通过以上命令挂载成功,就能使用ls命令检测ISO了.ISO将被挂载于 (loop).

ls (loop)/

ls (loop)/casper On an Ubuntu ISO, this should display vmlinuz and initrd.img, among other files.

创建GRUB2菜单项

一些办法能建立从Ubuntu ISO启动的GRUB2菜单项.提供了2个选项,如下 -使用grml-rescueboot包来自动建立它,或者手动编辑GRUB2配置脚本或者文件.

同时也有一种办法能自动制作USB多启动随身碟,grub-n-iso_multiboot.

grml-rescueboot

grml-resueboot是一个非常简便的从可启动ISO文件建立GRUB菜单项的办法 参考:http://520dt.cn/thread-582-1-1.html

这个软件包干了以下的事情:

1.创建一个/boot/grml目录.

2.自动为任何放置在/boot/grml目录下的ISO文件添加菜单项到GRUB菜单.任何时候执行update-grub指令将使其生效.
3.被创建的菜单项被选中的时候,将提供一个子选项用于如何启动那个ISO文件,包括 Try Ubuntu 这个选项讲试用Ubuntu系统,用户所做的更改不保留 .和 安装 选项.

为了使用grml-rescue选项:To use the grml-rescueboot option:

1.安装grml-rescueboot

sudo apt-get install grml-rescueboot

2.将ISO文件安放到/boot/grml目录下.如果/boot目录空间不足请参考:http://520dt.cn/thread-581-1-1.html
既然这是一个系统目录,命令就要被指明为root.例如:如果ISO文件被安置在用户的下载目录,命令应该是这样的:

sudo mv ~/Downloads/<filename.iso> /boot/grml/

3.更新GRUB

sudo update-grub

在我的机器上没有找到Ubuntu ISO 镜像,所以我使用了systemrescuecd-x86-4.9.0.iso作为示范





提示多了一个 ISO 启动菜单了 值得一提的是:grml-rescueboot工具不会移除以前的启动菜单项

grub-n-iso_multiboot

一个制作USB多启动设备的简单方法包括grub启动器和用于Ubuntu ISO文件镜像的GRUB菜单项是通过同时使用grub-n-iso_multiboot和带shell-script脚本文件的mk-grub-n-iso.它得益于一大堆正在启动的系统配置文件从而自动完成了工作的主要部分.

shell-script容易被使用,但是如果你对终端窗口和命令行有一些经验的话会更有帮助.

制作一个能启动几乎所有pc的USB盘

这个盘设备可能在UEFI或者BIOS模式下被制作,用2条不同的命令行命令来完成2个grub安装流程.

$ grep grub-install mk-grub-n-iso
grub-install --force --removable --no-floppy --boot-directory=/mnt/target/boot --efi-directory=/mnt/target/EFI/BOOT "$2"
grub-install --force --removable --no-floppy --boot-directory=/mnt/target/boot "$2"

这个工具在Ubuntu系列操作系统中的14.04LTS或者更新版本中工作正常.(可能的话使用也可以Ubuntu12.04LTS,但是那个系统有一个老版的grub,并且这个方法只能BIOS模式下工作正常.)

64位版本只能在64位机器上运行。32位版本可以同时在32位和64位机器上工作于BIOS模式下,并且现在也支持UEFI模式.我们可以使用根据以下2条链接的 Intel和 Amd处理器制作启动大部分pc的grub-n-iso 盘设备,

如何制作一个 EFI/UeFI GRUB2多启动设备用于启动ISO镜像

建立你自己的启动所有Intel或者AMD系列电脑的单启动或者多启动设备盘

位于以下grub菜单后面的盘设备是使用命令行命令制作的

sudo ./mk-grub-n-iso multiboot /dev/sdx

使用目录 grub-n-iso_multiboot 下的链接到目标iso文件的链接.例行任务是回答几个问题(提供一个字符),然后根据脚本自身使用gparted来编辑分区(分区大小,文件系统类型:fat32和ext2).


手动编辑所有GRUB文件

制作一个grub菜单项的另外一种办法是添加一些内容进 /etc/grub.d/40_custom 文件.

1.在文本编辑器中作为管理员身份打开 /etc/grub.d/40_custom 文件.

gksu gedit /etc/grub.d/40_custom

2.添加菜单项.
3.保存文件.
4.更新GRUB2菜单.

sudo update-grub

菜单项示例

下面是一个Ubuntu 12.04 64位ISO文件镜像的GRUB菜单项例子,文件被安置在用户的下载目录,物理分区是sda5.
更新Ubuntu12.04版本会将64位内核描述为vmlinuz.efi. 这个文件依然安置在/casper目录.在创建菜单项的过程中,为64位版本在linux一行中使用vmlinuz.efi而非vmlinuz.

menuentry "Ubuntu 12.04 ISO" {
set isofile="/home/<username>/Downloads/ubuntu-12.04-desktop-i386.iso"
# or set isofile="/<username>/Downloads/ubuntu-12.04-desktop-i386.iso"
# if you use a single partition for your $HOME
loopback loop (hd0,5)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
initrd (loop)/casper/initrd.lz
}

64位Ubuntu12.04版本(更新2):

menuentry "Ubuntu 12.04.2 ISO" {
set isofile="/home/<username>/Downloads/ubuntu-12.04.2-desktop-amd64.iso"
# or set isofile="/<username>/Downloads/ubuntu-12.04.2-desktop-amd64.iso"
# if you use a single partition for your $HOME
loopback loop (hd0,5)$isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject
initrd (loop)/casper/initrd.lz
}

菜单项详情

以上菜单项结构通过以下建议来建立.

1.菜单项

菜单项标题(在2个引号中间)是由用户决定的.任何菜单都能被使用.那一行的行尾必须是 {

2设置iso文件
1.isofile 描述符变量非必需,但是将使得创建多个Ubuntu ISO菜单项变得简单.通过这个惯例,用户能复制一个已存在的ISO菜单项,如果其他的ISO文件被安置在同样的目录,简单的在这行上改变菜单项的标题和ISO文件名即可.其他的更改不需要了.

2.setfile 行将反映ISO文件的精确名称

The set isofile line should reflect the exact name of the ISO file
3.loopback

loopback行必须反映确切的ISO文件位置.例如,ISO文件被存储在用户的下载目录.


1.X 是驱动器编号,开始于0;Y是分区编号,开始于1
1.sda5 将被描述为(hd0,5),sdb1将会是(hd1,1)

其他关于位置的例子:

(hd0,5)/boot/$isofile Located in the system's normal /boot partition on sda5

(hd0,6)/$isofile Located in a separate boot partition on sda6

(hd0,7)/username/Downloads/$isofile Located in a separate home partition on sda7

(hd1,2)/iso/$isofile Located in the /iso folder of the sdb2 data partition
4.linux

这行指明Ubuntu系列的ISO文件群.其他的Linux发布版本和系统ISO将会使用不同的文件名,目录和启动转换器.查看Grub2/ISOBoot/Examples页面了解是否那个例子存在于那里.用户也能挂载那个ISO和浏览它的内容来确保菜单项包含了正确的文件名和路径.
5.initrd

参考linux行说明.另外,一些其他系统的ISO文件镜像使用initrd.gz而非initrd.lz.

如果ISO文件储存在一个不同于你的主操作系统格式的分区上,那么在GRUB能访问它之前可能需要为指定的格式加载相应的模块.在这个情形下,立即为需要的格式(ntfs,日志文件系统,等)添加以下行到菜单项行的后面.这可能不是必需的,但是如果GRUB不能读取ISO的话那些ISO9660的模块仍然能被加载:

insmod ntfs

insmod iso9660

关乎创建一个自定义菜单项的更多信息,请访问 Grub2/CustomMenus.

启动ISO镜像

一旦菜单项已经被创建,GRUB2被更新后,启动过程中ISO项就会出现在GRUB菜单中.如果项目在 /etc/grub.d/40_custom 文件中被建立起来了,它将出现在Ubuntu和列在主GRUB菜单中的其他的操作系统列表之后.

要启动哪个ISO镜像,就将高亮行移到它上面并按回车或者F10.

如果菜单项是使用 grml-rescueboot 建立的,一旦ISO被从菜单项中的选项诸如 Try Me 或者 Install选中,将会出现在启动过程之前

不使用GRUB菜单项启动
回复