环境:

Virtualbox + ubuntu-desktop-20.04.2-adm64

生成最小系统的环境:

内核版本:5.4.123-rt59

Ubuntu 版本: 20.04

一、配置主机环境

安装ubuntu

         安装virtual box,之后新建一个虚拟主机,添加两块虚拟磁盘,一个分配40G,用来装ubuntu桌面版,一个10G用来制作我们的最小系统。下载好ubuntu-20.04.2.0-desktop-amd64,将其添加到ide。

最小的操作系统镜像 最小电脑操作系统_最小的操作系统镜像

 直接启动配置好的虚拟机,安装ubuntu20.04,全部选择默认即可。

最小的操作系统镜像 最小电脑操作系统_最小的操作系统镜像_02

 安装好后如上图所示

配置ubuntu环境

vi /etc/atp/source.list,添加中科大的源,注意源的版本要和ubuntu的版本对应。

deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse

 主要是安装的debootstrap,grub默认好像是安装的。

apt update
apt install debootstrap 
apt install grub2

二、制作最小系统

盘分区和格式化

 虚拟机中有两个盘,sda和sdb(可以用fdisk -l 看一下或者去/dev/下直接查,名字可能不一样),sda是装了ubuntu的,sdb还没有被分区和格式化

sudo fdisk /dev/sdb

先n,之后一路默认,最后w写入。此时/dev下会有一个sbd1,即刚刚分好的区。

sudo mkfs.ext4 /dev/sdb1 #将其格式化为ext4格式,否则无法进行挂载。
sudo mkdir -p /mnt/minisys #建立挂载点
sudo mount /dev/sdb1 /mnt/minisys #挂载
sudo debootstrap –-arch amd64 focal /mnt/minisys #利用debootstrap建立最小系统 
sudo grub-install  --root- directory=/mnt/minisys /dev/sdb1 
安装grub到sdb1分区的第一个扇区,这样开机boot之后会加载grub进行内核的引导。root-directory 在指定目录安装grub镜像。

搭建chroot 环境,并chroot

sudo mount –o bind  /dev /mnt/boot/dev
sudo mount –o bind  /proc /mnt/boot/proc
sudo mount –o bind  /sys /mnt/boot/sys
sudo chroot /mnt/minisys

最小系统的启动配置

vi /etc/atp/source.list依旧添加中科大的源

apt update

apt install grub2 //不更新源找不到

apt install initramfs-tools #用于生成initramfs,内核加载时必须要用

下载内核安装包和自己需要补丁https://mirrors.edge.kernel.org/pub/linux/kernel/

image header modules三个包都要下载,并安装。

笔者是通过make-dpgk自己编译生成的内核deb安装包。安装好了后会在boot下生成initrd,vmlinuz,config。

grub-mkconfig -o /boot/grub/grub.cfg #生成grub的配置文件,用于内核启动选项。

update-grub2 //更新grub配置项

修改grub.cfg的cmdline参数,grub更新后默认是ro,要改成rw,否则会提示系统只读(也可以进入系统后 mount -o rw,remount /):

最小的操作系统镜像 最小电脑操作系统_最小的操作系统镜像_03

passwd root #设置登录密码,忘了你就进不去了

 至此,最小系统搭建完成。

进入virtualbox,将安装ubuntu桌面的分区删除,点击启动就可以进入刚刚做好的最小系统中。

最小的操作系统镜像 最小电脑操作系统_linux_04

grub界面用于选择内核

最小的操作系统镜像 最小电脑操作系统_操作系统_05

 成功进入最小系统

不过,目前的最小系统并不是很完善,无法联网,没有桌面环境。下一章对其继续优化。