使用chroot预安装软件到ubuntu22中

devtools/2025/3/10 17:43:19/


 

1、安装依赖

# 安装依赖工具

sudo apt update && sudo apt install -y \

squashfs-tools \

genisoimage \

xorriso \

isolinux \

syslinux-utils \

p7zip-full

sudo apt update

sudo apt install grub-pc-bin grub-efi-amd64-bin -y

# 创建工作目录

mkdir -p ./custom-iso/{original,edit}

2、提取ISO内容

# 挂载原始ISO

sudo mount -o loop ubuntu-22.04.5-live-server-amd64.iso /mnt

# 复制文件到工作目录

sudo rsync -a /mnt/ ./custom-iso/original/

sudo umount /mnt

cd ./custom-iso

3、 解压系统文件

# 解压squashfs文件

sudo unsquashfs -f -d ./edit ./original/casper/ubuntu-server-minimal.squashfs

4、配置Chroot环境

# 进入chroot环境

sudo chroot ./edit

# ---------- 在Chroot环境中操作,以下是安装nginx的例子 ----------

# 配置基础环境

apt update

apt install -y debconf-utils

export DEBIAN_FRONTEND=noninteractive

# 添加自定义软件(示例安装nginx)

apt install -y nginx

# 清理缓存

apt clean

rm -rf /var/lib/apt/lists/*

rm -rf /tmp/*

# ---------- 在Chroot环境中操作,以下是安装nginx的例子 ----------

# 退出chroot

exit

5、重新打包系统文件

# 生成新squashfs文件

rm -rf original/casper/ubuntu-server-minimal.squashfs

sudo mksquashfs edit original/casper/ubuntu-server-minimal.squashfs \

-comp xz \

-b 1M \

-noappend

#生成md5

cd original

find -type f -exec md5sum {} \; > md5sum.txt

cd ..


 

xorriso -as mkisofs -iso-level 3 -full-iso9660-filenames \

-volid "Custom Ubuntu" \

-eltorito-boot boot/grub/i386-pc/eltorito.img \

-no-emul-boot -boot-load-size 4 -boot-info-table \

-eltorito-alt-boot -e EFI/boot/grubx64.efi -no-emul-boot \

-isohybrid-gpt-basdat \

-o ./custom-ubuntu-22.04.5-fixed.iso ./original

6、验证

qemu-system-x86_64 -m 2G -cdrom ./custom-ubuntu-22.04.5-fixed.iso -curses


http://www.ppmy.cn/devtools/166063.html

相关文章

三、0-1搭建springboot+vue3前后端分离-idea新建springboot项目

一、ideal新建项目1 ideal新建项目2 至此父项目就创建好了,下面创建多模块: 填好之后点击create 不删了,直接改包名,看自己喜欢 修改包名和启动类名: 打开ServiceApplication启动类,修改如下: …

深入理解 TCP 协议:可靠传输、连接管理与经典面试题解析

TCP(Transmission Control Protocol)是互联网中最重要的传输层协议之一,其设计目标是提供可靠的、面向连接的、全双工的数据传输服务。本文将从核心机制、工作原理到经典面试题,全面解析 TCP 协议的关键特性。 一、TCP 核心特性 …

Django ORM 中的 RelatedManager 特殊方法

Django ORM 中的 RelatedManager 特殊方法 在 Django 的 ORM(对象关系映射)框架中,处理关联关系是一项核心功能。当我们在模型之间定义外键(ForeignKey)、一对多(OneToMany)或多对多&#xff0…

Visual Studio工具

高亮显示匹配的标签(小括号,中括号,大括号)

no space left on device,内存不足/inode不足

问题描述 k8s集群中运行kafka报错no space left on devicedescribe-->报错内存不足,调度失败 排查方向 内存 free -h #查看内存剩余量 [rootsulibao ~]# free -htotal used free shared buff/cache available Mem: 8G …

PyCharm 对接 DeepSeek 大模型的详细操作流程

以下是使用 PyCharm 对接 DeepSeek 大模型的详细操作流程,基于 Python 开发环境。假设你已具备 DeepSeek API 的访问权限(需提前申请 API Key): 步骤 1:PyCharm 环境准备 创建新项目 打开 PyCharm → New Project → …

Unity 通用UI界面逻辑总结

概述 在游戏开发中,常常会遇到一些通用的界面逻辑,它不论在什么类型的游戏中都会出现。为了避免重复造轮子,本文总结并提供了一些常用UI界面的实现逻辑。希望可以帮助大家快速开发通用界面模块,也可以在次基础上进行扩展修改&…

Spring40种注解(下)!!

Spring Bean 注解 ComponentScan ComponentScan注解用于配置Spring需要扫描的被组件注解注释的类所在的包。 可以通过配置其basePackages属性或者value属性来配置需要扫描的包路径。value属性是basePackages的别名。 Component Component注解用于标注一个普通的组件类&#…