如图,现在物理机部署好的ubuntu 18.04 LTS,安装了一些软件,如果重新封装成ISO,可以U盘刻录安装?
求教程
谢谢
萌新求助,如何打包现有的系统为ISO
-
- 帖子: 1
- 注册时间: 2022-04-06 17:14
- 系统: 18.04
- astolia
- 论坛版主
- 帖子: 6569
- 注册时间: 2008-09-18 13:11
Re: 萌新求助,如何打包现有的系统为ISO
如果你只是想搞个备份,或者想把一台机器的系统完整复制到其他机器,直接用clonezilla https://zhuanlan.zhihu.com/p/354584111
-
- 帖子: 12
- 注册时间: 2023-04-06 9:18
- 系统: mint
Re: 萌新求助,如何打包现有的系统为ISO
如果是恢复到另一台没有安装过linux的机子,astolia 写了: ↑2022-04-07 17:21 如果你只是想搞个备份,或者想把一台机器的系统完整复制到其他机器,直接用clonezilla https://zhuanlan.zhihu.com/p/354584111
再生龙 会自动设置好启动吗?
还是必须手动自己操作呢?
- astolia
- 论坛版主
- 帖子: 6569
- 注册时间: 2008-09-18 13:11
Re: 萌新求助,如何打包现有的系统为ISO
见链接的第一段langyun 写了: ↑2023-04-06 9:48如果是恢复到另一台没有安装过linux的机子,astolia 写了: ↑2022-04-07 17:21 如果你只是想搞个备份,或者想把一台机器的系统完整复制到其他机器,直接用clonezilla https://zhuanlan.zhihu.com/p/354584111
再生龙 会自动设置好启动吗?
还是必须手动自己操作呢?
-
- 帖子: 103
- 注册时间: 2013-12-13 6:57
-
- 帖子: 12
- 注册时间: 2023-04-06 9:18
- 系统: mint
Re: 萌新求助,如何打包现有的系统为ISO
谢谢大大,另一个回答收藏做笔记
-
- 帖子: 103
- 注册时间: 2013-12-13 6:57
Re: 萌新求助,如何打包现有的系统为ISO
如果打算把热备份 squashfs 文件用 UtralISO 等工具替换原 ubuntu 安装盘里的 /casper/filesystem.squashfs 做成自定义 ISO 文件来启动的话,也需要修改光盘里面的 grub.cfg 配置(位于ISO文件根目录 boot/grub 下),改成类似下面这种样子:
不改动 grub.cfg 是启动不了的,因为热备份出来的 squashfs 不采用 casper 方式启动。
所以,你可以任意改变 squashfs 文件的名称,任意改变放置的位置,只要在 grub.cfg 里指定正确的文件路径和文件名就可以。原有光盘里只需要保留 BOOT 和 EFI 两个目录就可以了,其他所有东西包括 casper 启动相关的文件和目录都可以精简删除掉。
另外,如果打算将 ISO 拿到其他电脑上启动,在热备份的时候,需要把 /etc/fstab 中本地硬盘(数据盘)挂载相关的东西都删除,只保留 / 和 /tmp 两个挂载点的配置(类似下面这种样子),不然可能会搜索不到指定的硬盘数据分区而导致启动失败:
代码: 全选
set timeout=30
loadfont unicode
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
menuentry "Try Ubuntu live CD" {
set gfxpayload=keep
set file="/casper/filesystem.squashfs"
search --no-floppy -f --set=SFSROOT $file
probe -u --set=SFSUUID ${SFSROOT}
loopback loop (${SFSROOT})/$file
linux (loop)/boot/vmlinuz root=UUID=${SFSUUID} rootfstype=iso9660 squashfs=/casper/filesystem.squashfs rw apparmor=0 quiet splash locale=zh_CN.UTF-8 initramfs.runsize=50% vt.global_cursor_default=0
initrd (loop)/boot/initrd.img
}
grub_platform
if [ "$grub_platform" = "efi" ]; then
menuentry 'Boot from next volume' {
exit 1
}
menuentry 'UEFI Firmware Settings' {
fwsetup
}
else
menuentry 'Test memory' {
linux16 /boot/memtest86+.bin
}
fi
所以,你可以任意改变 squashfs 文件的名称,任意改变放置的位置,只要在 grub.cfg 里指定正确的文件路径和文件名就可以。原有光盘里只需要保留 BOOT 和 EFI 两个目录就可以了,其他所有东西包括 casper 启动相关的文件和目录都可以精简删除掉。
另外,如果打算将 ISO 拿到其他电脑上启动,在热备份的时候,需要把 /etc/fstab 中本地硬盘(数据盘)挂载相关的东西都删除,只保留 / 和 /tmp 两个挂载点的配置(类似下面这种样子),不然可能会搜索不到指定的硬盘数据分区而导致启动失败:
代码: 全选
overlay / overlay rw 0 0
tmpfs /tmp tmpfs nosuid,nodev 0 0
-
- 帖子: 1
- 注册时间: 2023-06-06 9:58
Re: 萌新求助,如何打包现有的系统为ISO
我把boot和EFI单独放在sata磁盘的sda1分区,其他的都放到sda2分区,使用上面的grub.cfg配置不行,无法找到root,请问大佬这是什么原因,我这个分区设置的不正确吗sxgpic 写了: ↑2023-04-13 9:30 如果打算把热备份 squashfs 文件用 UtralISO 等工具替换原 ubuntu 安装盘里的 /casper/filesystem.squashfs 做成自定义 ISO 文件来启动的话,也需要修改光盘里面的 grub.cfg 配置(位于ISO文件根目录 boot/grub 下),改成类似下面这种样子:不改动 grub.cfg 是启动不了的,因为热备份出来的 squashfs 不采用 casper 方式启动。代码: 全选
set timeout=30 loadfont unicode set menu_color_normal=white/black set menu_color_highlight=black/light-gray menuentry "Try Ubuntu live CD" { set gfxpayload=keep set file="/casper/filesystem.squashfs" search --no-floppy -f --set=SFSROOT $file probe -u --set=SFSUUID ${SFSROOT} loopback loop (${SFSROOT})/$file linux (loop)/boot/vmlinuz root=UUID=${SFSUUID} rootfstype=iso9660 squashfs=/casper/filesystem.squashfs rw apparmor=0 quiet splash locale=zh_CN.UTF-8 initramfs.runsize=50% vt.global_cursor_default=0 initrd (loop)/boot/initrd.img } grub_platform if [ "$grub_platform" = "efi" ]; then menuentry 'Boot from next volume' { exit 1 } menuentry 'UEFI Firmware Settings' { fwsetup } else menuentry 'Test memory' { linux16 /boot/memtest86+.bin } fi
所以,你可以任意改变 squashfs 文件的名称,任意改变放置的位置,只要在 grub.cfg 里指定正确的文件路径和文件名就可以。原有光盘里只需要保留 BOOT 和 EFI 两个目录就可以了,其他所有东西包括 casper 启动相关的文件和目录都可以精简删除掉。
另外,如果打算将 ISO 拿到其他电脑上启动,在热备份的时候,需要把 /etc/fstab 中本地硬盘(数据盘)挂载相关的东西都删除,只保留 / 和 /tmp 两个挂载点的配置(类似下面这种样子),不然可能会搜索不到指定的硬盘数据分区而导致启动失败:代码: 全选
overlay / overlay rw 0 0 tmpfs /tmp tmpfs nosuid,nodev 0 0
-
- 帖子: 103
- 注册时间: 2013-12-13 6:57
Re: 萌新求助,如何打包现有的系统为ISO
那是把 squashfs 文件放光盘里的 grub 配置写法。2314742202@qq.com 写了: ↑2024-06-04 17:12 我把boot和EFI单独放在sata磁盘的sda1分区,其他的都放到sda2分区,使用上面的grub.cfg配置不行,无法找到root,请问大佬这是什么原因,我这个分区设置的不正确吗
如果放硬盘里的话,脚本的帮助里有提供示例,执行 sudo backup -h 可以看到。
代码: 全选
menuentry "Ubuntu Linux (boot from SQUASHFS backup file)" {
insmod probe
insmod squash4
set file="/backup05.06.2024.squashfs"
search --no-floppy -f --set=SFSROOT $file
probe -u --set=SFSUUID ${SFSROOT}
loopback loop (${SFSROOT})/$file
set root=${SFSROOT}
linux (loop)/boot/vmlinuz root=UUID=${SFSUUID} squashfs=$file ro quiet splash locale=en_US.UTF-8 initramfs.runsize=50%
initrd (loop)/boot/initrd.img
}
还有,最好将必要的文件系统直接编译进内核而不是编译成模块来加载。用这个帖子里的配置编译内核替换掉原来的内核,绝对100%成功。
另外旧版的备份脚本忘了在备份时自动在待备份目录 /boot 目录下建立 /boot/vmlinuz 和 /boot/initrd.img 软连接。
下面是我最近更新的版本: 1、patch 文件没时间针对 24.04 制作,希望对 24.04 仍然有效吧。反正20.04、22.04通用,debian 11、debian 12 也能通用,仍然有效。
2、rebuildtree函数mount方式由bind改为overlay
3、增加oemdeploy函数以方便在一台电脑上备份时可以针对别的电脑环境(例如账户、密码、个人设置、自动挂载路径等)到 /usr/local/share/deploy/目录下去复制OEM文件替换overlay挂载的待备份文件,使备份出来的 squashfs 文件针对别的电脑定制化。