ubuntu18从硬盘启动iso
前言一个类似u盘安装ubuntu系统时,try ubuntu的需求。不直接安装系统到硬盘上,仅通过启动引导器加载一个iso镜像文件。正文1 调研基础知识参考:https://wenku.baidu.com/view/62863b89680203d8ce2f2464.html#操作参考:https://www.linuxdashen.com/%E4%BD%BF%E7%94%A8grub2%E5%BC
前言
一个类似u盘安装ubuntu系统时,try ubuntu的需求。不直接安装系统到硬盘上,仅通过启动引导器加载一个iso镜像文件。
正文
1 调研
基础知识参考:
https://wenku.baidu.com/view/62863b89680203d8ce2f2464.html#
操作参考:
https://www.jb51.net/LINUXjishu/236496.html
2 实验
经过实验,在已经有ubuntu desktop 18的系统里,自带了grub2.
1) 拷贝so到文件系统中
比如我的路径是 /home/xxx/Downloads/ubuntu18.iso
- 配置grub菜单
#编辑 /etc/grub.d/40_custom , 添加
menuentry "ubuntu-18.04.3-desktop-amd64.iso" {
set isofile="/home/xxx/Downloads/ubuntu18.iso"
loopback loop (hd0,1)$isofile
linux (loop)/casper/vmlinuz iso-scan/filename=$isofile quiet noeject nopromt spalsh --
initrd (loop)/casper/initrd
}
如上述文章中所说 hd(0,1) 代表了第一块硬盘的第一个分区。 但是奇怪的是我的文件系统里显示操作系统所在的盘是/dev/sdb ,我使用hd(1,1) 的话是找不到iso的,有知道的大兄弟麻烦留言告诉我下
3)令grub配置生效并重启
sudo update-grub
sudo reboot
3 配置默认启动iso
4 向裸机中写入grub
4-1 legacy引导方式
参考: https://www.cnblogs.com/findumars/p/8087852.html
- 从u盘启动->try ubuntu (legacy方式启动u盘)
- fdisk对空硬盘分一个区, 比如/dev/sdb(需要dos 或者gpt 分区表,指定gpt时需要将分区1设置为bios_boot)
$sudo fdisk /dev/sdb
- mkfs.ext4将分区格式化为ext4
sudo mkfs.ext4 /dev/sdb1
- 挂载并安装grub到mbr
sudo mkdir /mnt/sdb
sudo mount /dev/sdb1 /mnt/sdb
sudo grub-install --root-directory=/mnt/sdb /dev/sdb
安装完grub会在根目录下创建/boot文件夹,目录下有个grub文件夹,可以配置默认的grub.cfg以便grub读取默认配置
如果遇到错误 grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won’t be possible
解决方法 : sudo parted /dev/sda set 1 bios_grub on
-
拷贝iso到该分区
放置于根目录
/ubuntu18.iso -
配置grub
编辑/mnt/sdb/boot/grub/grub.cfg
menuentry "ubuntu-18.04.3-desktop-amd64.iso" {
set isofile="/ubuntu18.iso"
loopback loop (hd0,1)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet noeject nopromt splash --
initrd (loop)/casper/initrd
}
7)reboot
4-2 UEFI引导方式
参考:https://www.cnblogs.com/sddai/p/7739567.html
与legacy不同的是,EFI 并不把启动程序放置在 MBR 中,而是先loader一个EFI可执行程序。再load指定的grub文件。
1)从u盘启动->try ubuntu (UEFI方式启动u盘)
2)对硬盘分区(需要gpt分区表)
比如/dev/sdb1和/dev/sdb2
3)第一个分区需要是EFI分区,fdisk进入后使用t修改分区类型
修改/dev/sdb1分区为EFI分区
4)格式化EFI分区为fat , 其他分区为ext4
格式化/dev/sdb1分区为fat格式
格式化/dev/sdb2分区为ext4格式
5)挂载EFI分区和boot分区
mount /dev/sdb1 /mnt/sdb1
mount /dev/sdb2 /mnt/sdb2
6)安装grub
grub-install --efi-directory=/mnt/sdb1 --boot-directory=/mnt/sdb2
–efi-directory 指定了efi的安装位置
–boot-directory 指定了grub的安装位置
7)在/mnt/sdb2/grub中编写grub.cfg文件
5 grub2引导img
要求initramfs写入ext4支持,启动盘格式为ext4
root指定img存放分区,loop指定文件存放位置
编辑/mnt/sdb/boot/grub/grub.cfg
menuentry "ubuntu-18.04.3-desktop-amd64.img" {
set isofile="/ubuntu18.img"
loopback loop (hd0,1)$isofile
linux (loop)/boot/vmlinuz root=/dev/sda1 loop=$isofile
initrd (loop)/boot/initrd
}
6 grub2引导squashfs
root指定img存放分区,loop指定文件存放位置
编辑/mnt/sdb/boot/grub/grub.cfg
menuentry "ubuntu-18.04.3-desktop-amd64.img" {
set isofile="/ubuntu18.squashfs"
loopback loop (hd0,1)$isofile
linux (loop)/boot/vmlinuz root=/dev/sda1 looptype=squashfs loop=$isofile
initrd (loop)/boot/initrd
}
ps: 引导img和squashfs,默认是只读模式,可以编辑rw变更为读写模式。与iso的内存读写方式不太一样。
更多推荐
所有评论(0)