环境:
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,全部选择默认即可。
安装好后如上图所示
配置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 /):
passwd root #设置登录密码,忘了你就进不去了
至此,最小系统搭建完成。
进入virtualbox,将安装ubuntu桌面的分区删除,点击启动就可以进入刚刚做好的最小系统中。
grub界面用于选择内核
成功进入最小系统
不过,目前的最小系统并不是很完善,无法联网,没有桌面环境。下一章对其继续优化。