寸阳分阴须爱惜,休负春色与时光。这篇文章主要讲述Linux 系统裁剪--制作一个最小化的Linux iso镜像相关的知识,希望能为你提供帮助。
1.前言
一直以来都想制作一个最小化的Linux系统,这个小系统需要有常用的Linux 命令
,以及定制化的某些功能。可是由于种种原因一直没能实现,最近终于有时间把它做了出来。
本文所说的精简的Linux
系统主要由内核
,busybox
,以及引导程序构成。
感谢网友[windy_ll](https://blog.csdn.net/qq_41374107)
的文章,我是看着他的教程一步一步完成以下操作的。
2.安装配置内核所需要的依赖
我的环境是ubuntu20.04
,初装的系统,软件源已配置为阿里的源。
文章图片
为了保证后续软件的顺利安装先更新一下源。
apt update
文章图片
2.1 安装依赖
==由于需要配置内核,本文的所有操作都在root用户下进行==
apt install -y make
apt install -y make-guile
apt install -y gcc
apt install -y flex
apt install -y bison
apt install -y libelf-dev
apt install -y openssl
apt install -y libncurses-dev
apt install -y libssl-dev
小插曲:就在刚刚我的
ubuntu20.04
ctrl+shift + insert
粘贴键不好用了,重启了一下系统又好了。读者诸君你们大可不必一个命令一个命令的去敲,使用快捷键粘贴就可以了。2.2下载内核
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.13.8.tar.gz
文章图片
此处下载的内核就是咱们将要制作的镜像系统的内核。
tar -zxvf linux-5.13.8.tar.gz
cd linux-5.13.8
文章图片
2.3 配置内核
常见的配置有以下几种:
- make defconfig - 默认配置
- make allyesconfig - 创建能选yes就选yes的配置
- make allnoconfig - 创建能选no就选no的配置
- make menuconfig - 基于ncurser的图形化界面配置
make defconfig
文章图片
2.4 编译内核
make bzImage
文章图片
这个过程有点漫长,先去洗个脸:smile:
如果没有什么报错,出现下图说明编译成功了。
文章图片
编译好的内核文件在arch文件夹相应的架构文件夹下面,如下图所示:
文章图片
3.制作根文件系统
3.1 下载
busybox
wget https://busybox.net/downloads/busybox-1.32.1.tar.bz2
3.2 配置busybox
编译busybox
与编译内核步骤基本一致,将下载好的压缩包进行解压,然后进入文件夹中,使用make defconfig配置默认编译选项,这里需要注意的是,在生成的.config配置文件中,需要设置CONFIG_STATIC=y,如果没有,添加即可,如下图所示:cd ~/Downloads
wget https://busybox.net/downloads/busybox-1.32.1.tar.bz2
tar -jxvf busybox-1.32.1.tar.bz2
cd busybox-1.32.1
make defconfig
vim .config
文章图片
3.2 编译busybox
make busybox install
文章图片
编译完成后,会在当前目录下新增一个
_install
文件夹,里面就是编译好的busybox
。文章图片
3.3 制作根文件
删除_install目录下的
linuxrc
文件cd _install/
rm -rf linuxrc
文章图片
复制_install 文件夹下的除linuxrc以外的所有文件到rootfs文件夹下面。
cd ..
cd ..
mkdir rootfs
cd rootfs
cp -r ../busybox-1.32.1/_install/bin/ .
cp -r ../busybox-1.32.1/_install/sbin/ .
cp -r ../busybox-1.32.1/_install/usr/ .
mkdir dev proc sys
文章图片
在当前目录(rootfs)下新增一个
init
文件vim init
添加如下内容
#!/bin/shdmesg -n 1
mount -t devtmpfs none /dev
mount -t proc none /proc
mount -t sysfs none /sys
setsid cttyhack /bin/sh
文章图片
然后将rootfs文件夹下的所用内容赋777权限。
cd ..
chmod 777 -R rootfs/
文章图片
3.4 打包系统文件
利用命令
find . | cpio -R root:root -H newc -o | gzip &
gt;
../rootfs.gz
将文件系统打包find . | cpio -R root:root -H newc -o | gzip >
../rootfs.gz
文章图片
4. 创建BIOS引导
这里我们使用syslinux来创建bios引导的一个linux iso镜像,
4.1 先下载并解压syslinux
wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz
gunzip syslinux-6.03.tar.gz
tar -xvf syslinux-6.03.tar
文章图片
4.2 准备制作镜像文件所需的文件
新建一个文件夹
isobios
,将解压后的syslinux
文件夹下面的bios/core/isolinux.bin
,bios/com32/elflink/ldlinux/ldlinux.c32
复制到isobios
文件夹下面。mkdir isobios
cd isobios
cp ../rootfs.gz .
cp ../linux-5.13.8/arch/x86/boot/bzImage kernel.gz
cp ../syslinux-6.03/bios/core/isolinux.bin .
cp ../syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 .
文章图片
4.3 创建启动引导配置文件
isolinux.cfg
vim isolinux.cfg
文章图片
添加如下内容
default kernel.gz initrd=rootfs.gz
文章图片
4.4 生成ISO镜像
【Linux 系统裁剪--制作一个最小化的Linux iso镜像】在isobios文件夹下面使用命令xorriso -as mkisofs -o ../testbios.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ./生成iso镜像文件,如下图所示:
需要用到
xorriso
,要先安装apt install -y xorriso
xorriso -as mkisofs -o ../testbios.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ./
文章图片
好了,至此我们的精简的
Linux
镜像已经制作好了,接下来就要验证一下这个小系统能不能跑起来了。5.验证
首先将我们前面制作的ISO文件复制出来。
然后使用
vmware
虚拟机新建一个虚拟机。和平常我们安装新的虚拟机系统一样,这里我们制作的ISO镜像使用了
5.13.8
的内核,在虚拟机制作时选择其他Linux5.X或更高版本内核64位
。文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
好了,挂载我们制作的镜像文件,开启一下看看吧。
文章图片
文章图片
文章图片
好了,系统引导成功了。
文章图片
探索一下这个小系统有什么吧?
文章图片
简单试了一下,常用的
ls
,pwd
,touch
,ifconfig
,chmod
等还是有的。如果一个
linux
系统没有网络功能也就失去了灵魂,接下来把我们的小系统的网络开启起来吧。ifconfig eth0 192.168.2.110 netmask 255.255.255.0
route add default gw 192.168.2.1
文章图片
ping一下宿主机。
文章图片
宿主机对ping一下。
文章图片
漂亮,双方对ping一切OK。
:palestinian_territories: 至此我们的精简的
linux
镜像就制作完成了。可能还会有一些问题,比如我想添加多一点的命令,(关机,重启,vim),网络功能还有点弱,还想增加镜像的安装功能,那就等博主的后续文章吧。特别感谢网友:「windy_ll」
推荐阅读
- Windows server 2012R2系统时钟跳变一例“yyds干活盘点”
- (运维服务)系统调用外部邮箱发送告警邮件
- #展望我的2022Flag#web安全day49(SQL注入原理危害分类,动手写MYSQL最基本操作命令)
- #yyds干货盘点#Prometheus 之监控应用程序
- #yyds干货盘点#CCNA学习记录7
- 3个小时搭建全套最新高可用 kubernetes 学习环境
- Win10照片查看器的系统进程是啥?
- Win10系统如何清理注册表垃圾以提高系统运行速度
- Win10设置应用程序运用麦克风的技巧