1.安装号所需文件
sudo apt update && sudo apt install -y linux-source build-essential debootstrap squashfs-tools grub-pc-bin xorriso qemu-system-x86 cpio mtools

创建专属目录,避免文件混乱
mkdir -p ~/minilinux/{kernel,rootfs,iso}
进入该文件夹
cd ~/minilinux
2.构建 Ubuntu 最小根文件系统
sudo debootstrap --arch=amd64 jammy ./rootfs http://mirrors.aliyun.com/ubuntu/

该命令会下载约 200MB 左右的基础文件,等待执行完成即可。
3.裁剪根文件系统
进入根文件系统的chroot环境
sudo chroot ./rootfs

卸载无用包(按需删减,保留核心即可)
apt remove -y man-db manpages wireless-tools network-manager xserver-common
apt autoremove -y
apt clean
设置 root 密码(必须,否则无法登录)
passwd root

退出chroot环境
exit
4.制作可引导的ISO镜像
创建iso/casper目录,在~/minilinux目录下执行以下命令,创建所需的目录结构
sudo mkdir -p ./iso/casper
-p参数的作用:递归创建目录,如果父目录(iso)已存在,只创建子目录(casper);如果父目录不存在,会一并创建,避免 "目录不存在" 的错误。

打包根文件系统为squashfs压缩镜像
sudo mksquashfs ./rootfs ./iso/casper/filesystem.squashfs -comp xz

复制当前系统的内核和initrd到ISO目录
sudo cp /boot/vmlinuz-$(uname -r) ./iso/casper/vmlinuz
sudo cp /boot/initrd.img-$(uname -r) ./iso/casper/initrd

5.创建 GRUB 引导配置
mkdir -p ./iso/boot/grub
sudo tee ./iso/boot/grub/grub.cfg <<EOF
set default="0"
set timeout=5
menuentry "Minimal Linux" {
linux /casper/vmlinuz boot=casper root=/dev/ram0 quiet splash
initrd /casper/initrd
}
EOF

6.生成ISO镜像
sudo grub-mkrescue -o ./minilinux.iso ./iso/

验证镜像生成成功
ls -lh ./minilinux.iso

发现成功生成
7.启动Linux
在当前minilinux目录下执行命令,直接模拟启动镜像,适合快速测试
qemu-system-x86_64 -cdrom ./minilinux.iso -m 512M
其中-cdrom指定镜像文件为光盘启动源,-m 512M给虚拟机分配512MB内存。启动后若能看到GRUB菜单,选择"Minimal Linux"并成功进入系统控制台,说明镜像启动正常。

系统出现了Kernel panic(内核恐慌),错误提示是Attempted to kill init!,这说明系统的初始化进程(init)无法正常启动,是构建极简Linux时的常见问题。
8.排查问题
挂载根文件系统(之前的rootfs目录)
sudo mount -o bind ./rootfs /mnt
检查是否存在init相关程序
ls /mnt/bin/bash
ls /mnt/sbin/init

发现文件都在,排除了"程序缺失"的原因,那QEMU启动时出现Kernelpanic的核心问题就聚焦在GRUB配置的挂载方式不匹配。
编辑GRUB配置文件
sudo nano ./iso/boot/grub/grub.cfg
将原有内容替换为:
set default="0"
set timeout=5
menuentry "Minimal Linux" {
linux /casper/vmlinuz root=/dev/ram0 init=/sbin/init quiet splash
initrd /casper/initrd
}
重新生成ISO镜像
sudo grub-mkrescue -o ./minilinux.iso ./iso/

用QEMU重新启动测试
qemu-system-x86_64 -cdrom ./minilinux.iso -m 512M

系统启动时出现了根文件系统设备等待超时的问题,最终进入了BusyBox的急救Shell,这是Linux启动过程中"根文件系统挂载失败"的典型表现。
在当前的(initramfs)提示符下,尝试手动查找并挂载根文件系统,列出所有可用的块设备,找到根文件系统镜像(通常是/dev/sr0,对应光盘)
lsblk

在initramfs的急救Shell中执行lsblk命令时提示sh:lsblk:notfound,这说明当前的初始化内存文件系统(initramfs)中缺少lsblk工具(该工具属于util-linux包,可能在构建initramfs时未被包含)。
在宿主Ubuntu中重新配置initramfs,确保包含lsblk工具,安装 util-linux(lsblk 所属包,若未安装)
sudo apt install -y util-linux
编辑initramfs配置,强制包含lsblk,创建钩子脚本
sudo nano /etc/initramfs-tools/hooks/lsblk
写入以下内容:
#!/bin/sh
PREREQ=""
prereqs() {
echo "$PREREQ"
}
case "$1" in
prereqs)
prereqs
exit 0
;;
esac
. /usr/share/initramfs-tools/hook-functions
复制 lsblk 到 initramfs
copy_exec /usr/bin/lsblk /bin
赋予脚本执行权限
sudo chmod +x /etc/initramfs-tools/hooks/lsblk
重新生成initramfs
sudo update-initramfs -u -k $(uname -r)
将更新后的initrd文件覆盖到./iso/casper/目录,确保镜像使用新的initramfs
sudo cp /boot/initrd.img-6.8.0-40-generic ./iso/casper/initrd
重新生成ISO镜像
sudo grub-mkrescue -o ./minilinux.iso ./iso/
用QEMU重新启动测试
qemu-system-x86_64 -cdrom ./minilinux.iso -m 512M
尝试手动查找并挂载根文件系统,列出所有可用的块设备
lsblk
挂载squashfs根文件系统到/root
mount /mnt/casper/filesystem.squashfs /root
若发现没有反应,则表示执行成功,可以检查系统基本信息
查看内核版本
uname -r

查看根文件系统挂载情况
df -h

查看当前进程
ps aux

测试文件操作
创建测试文件,并查看
touch /test.txt
ls

写入内容
echo "Hello, My Minimal Linux!" > /test.txt
读取内容
cat /test.txt

至此,已经完成构建极简版Linux发行版。
9.将最终的minilinux.iso镜像文件提前复制到VMware所在的主机中

打开 VMware,点击「创建新的虚拟机」,选择「自定义(高级)」→ 点击「下一步」。

兼容性选择默认的「Workstation 17.x」(或对应版本)→ 点击「下一步」。

选择「安装程序光盘映像文件(ISO)」,点击「浏览」选择你的 minilinux.iso → 点击「下一步」。

选择「Linux」,版本选择「Ubuntu64位」(或与你制作的Linux架构匹配的版本,如x86_64对应64位)→点击「下一步」。

输入名称(如「MinimalLinux」),选择存储位置→点击「下一步」。

默认1个处理器即可(极简系统资源需求低)→点击「下一步」。

分配512MB(或1GB)即可,无需过高→点击「下一步」。

使用桥接网络或者仅主机模式都行

默认「LSI Logic」→ 点击「下一步」。

默认「SCSI」→ 点击「下一步」。

选择「创建新虚拟磁盘」→ 点击「下一步」。
磁盘大小:分配 2GB 即可(极简系统占用极小),选择「将虚拟磁盘存储为单个文件」→ 点击「下一步」。

点击「完成」,VMware 会自动创建虚拟机。

启动该虚拟机即可。

也可输入命令
ls

至此,已经在Vmware上部署好Minimal Linux虚拟机。