本文教大家如何利用Ubuntu Base镜像文件和kernel构建属于自己的Ubuntu精简版。
本贴以制作Ubuntu 22.04.3为例。
在你的Windows电脑中安装VMware workstation虚拟机软件,安装任意发行版Linux,例如Ubuntu Server系列;
登录Linux,准备一个文件夹用于制作,这里举例使用/data目录,rootfs用于放置根文件系统
mkdir /data/rootfs -p cd /data/rootfs
下载地址:Index of /ubuntu-base/releases
选择你需要的发行版,这里选择22.04.3,点击release
右键复制链接,下载到rootfs目录
wget http://cdimage.ubuntu.com/ubuntu-base/releases/22.04.3/release/ubuntu-base-22.04.3-base-amd64.tar.gz -C /data/rootfs
解压缩
tar -zxf ubuntu-base-22.04.3-base-amd64.tar.gz #也可以删除tar.gz文件,我这里是移动到上层目录/data mv ubuntu-base-22.04.3-base-amd64.tar.gz ..
默认的/etc/apt/sources.list内容都是指向Ubuntu官网,但在中国大陆访问Ubuntu官方源的速度比较慢,建议更换为中国大陆一些公司对外提供的软件源,例如阿里云:
Ubuntu 22.04 的代号是Jammy
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
有小伙伴会问,为啥你这里只有这两行,因为其他源对于我们这种极度精简的根文件系统来说没有必要,添加了反而成为负担。
默认的DNS服务器是空的,需要我们手动指定
echo "nameserver 8.8.8.8" > etc/resolv.conf
设置了软件源和DNS后,我们就可以愉快的使用apt命令来安装和更新软件啦。
此处内容隐藏,回复后可见!立即回复 回复后请刷新页面!刷新
如果此时打包,并配合kernel启动后是无法启动根文件系统的,kernel会报错崩溃,这时需要先创建init启动文件。
我们直接使用vi或者vim工具创建一个文件,vi编辑器的用法我不想多说,网上有相关教程
vim init
按 i 键,写入以下内容:
此处内容隐藏,登录后可见!立即登录 登录后请刷新页面!刷新
按 :x 保存并退出
还需要给init文件可执行权限
chmod +x init
如果此时直接打包,会发现体积还是比较大,所以建议清理垃圾文件。
apt-get clean
在chroot之后,执行:
这样清理过后,根文件系统的体积会小很多,而且对系统并不会产生坏的影响。
保证当前目录是/data/rootfs,使用以下命令开始打包构建
find . | cpio -o -H newc | gzip -9 > ../initrd.gz
得到了29MB大小的根文件系统压缩包,此时可以配合你编译好的Linux kernel进行启动啦。
gzip -d initrd.gz cpio -idm < initrd
我们用Qemu模拟启动
不错,可以正常启动shell
👍牛人厉害啊 !感谢支持!
这么快就出文档了效率很高 😁
真的是牛人
好好好,学废了,可以定制想要的功能进去了
制作了好多次,始终领悟不到版主的精简版的精髓,提出来的initrd.gz都在80多90M
minigg 制作了好多次,始终领悟不到版主的精简版的精髓,提出来的initrd.gz都在80多90M
删除apt缓存
厉害,学废了