# 安装编译依赖(Ubuntu/Debian)
sudo apt update && sudo apt install -y \
build-essential \
libncurses-dev \
flex \
bison \
libssl-dev \
libelf-dev
cd ~
mkdir -p ~/miniiso/iso
一,编译内核
#download 5.4.18
cp linux-5.4.18.tar.xz ~/miniiso
cd ~/miniiso/
tar -xvf linux-5.4.18.tar.xz
cd ~/miniiso/linux-5.4.18
make defconfig
# 关键配置调整(可选,看个人需要)
# scripts/config \
# --disable DEBUG_INFO \ # 禁用调试符号(减少体积)
# --enable VIRTIO \ # 启用虚拟化驱动
# --disable MODULES \ # 禁用动态模块加载
# --enable STATIC_KEYS \ # 优化内核功能开关
# --enable BPF_JIT # 支持eBPF
scripts/config --disable DEBUG_INFO --enable VIRTIO --disable MODULES --enable STATIC_KEYS --enable BPF_JIT
make -j$(nproc)
二. 基于ubuntu base制作根文件系统
下载ubuntu-base-20.04.5-base-amd64.tar.gz,
解压缩,产生ubuntu-base-20.04.5-base-amd64目录,重命名为initramfs,拷贝到~/miniiso
cd initramfs
sudo chroot ./
sudo echo "nameserver 8.8.8.8" > ./etc/resolv.conf
apt install vim sudo kmod net-tools ethtool ifupdown language-pack-en-base rsyslog htop iputils-ping -y //添加一些需要的应用
(备注:参考文档 https://zhuanlan.zhihu.com/p/656735763 )
三,编写初始化脚本
cd ~/miniiso/initramfs
cat > init <<'EOF'
#!/bin/sh
# 挂载虚拟文件系统
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devtmpfs devtmpfs /dev
# 启动交互Shell
exec /bin/sh
EOF
sudo chmod +x init
四. 打包
cd ~/miniiso/initramfs
find . | cpio -H newc -o | gzip > ../initramfs.img
五,构造iso内核
#down syslinux 6.03
cp syslinux-6.03.tar.xz ~/miniiso
cd ~/miniiso
tar -xf syslinux-6.03.tar.xz
cp ~/miniiso/syslinux-6.03/bios/core/isolinux.bin ~/miniiso/iso
cp ~/miniiso/syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 ~/miniiso/iso
cp ~/miniiso/linux-5.4.18/arch/x86/boot/bzImage ~/miniiso/iso/vmlinuz
cp ~/miniiso/initramfs.img ~/miniiso/iso/initrd
cd ~/miniiso/iso
cat > isolinux.cfg <<'EOF'
default vmlinuz initrd=initrd
EOF
sudo chmod +x isolinux.cfg
cd ~/miniiso/iso
xorriso -as mkisofs -o ../testbios.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ./