制作 img 镜像

编辑时间:2026.05.02


1.更新源

sudo apt-get update

2.安装必须的依赖

sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev bc
sudo apt-get install grub-efi-amd64 grub-pc-bin

3.编译内核

https://www.kernel.org/ 下载一个 Linux 内核,并放在用户目录下

解压内核(把 * 换成对应的版本号)

tar -xvf linux-*.tar.xz

配置编译 x86_64 内核

cd linux-*
make x86_64_defconfig
make bzImage -j$(nproc)

复制到用户目录下备用

sudo cp arch/x86/boot/bzImage ~/

4.制作 initrd

cd ~/
sudo mkinitramfs -o ~/initrd

5.创建镜像

镜像大小根据内核大小来定

dd if=/dev/zero of=linux.img bs=1M count=256

给镜像创建分区

fdisk linux.img

(n p 回车 回车 回车 w)

图片

查看镜像的分区情况

fdisk -l linux.img
图片

6.挂载为 loop 设备

sudo losetup -fP linux.img
LOOPDEV=$(losetup -j linux.img | cut -d: -f1)

7.挂载分区

sudo mkfs.vfat -F32 ${LOOPDEV}p1
sudo mkdir -p mnt/data
sudo mount ${LOOPDEV}p1 mnt/data

8.安装启动的文件

安装 Legacy 启动文件

sudo grub-install --target=i386-pc --boot-directory=mnt/data/boot --modules=part_msdos $LOOPDEV

安装 EFI 启动文件

sudo grub-install --target=x86_64-efi --efi-directory=mnt/data --boot-directory=mnt/data/boot --removable

9.创建 GRUB 配置文件

sudo nano mnt/data/boot/grub/grub.cfg

输入以下内容

set timeout=10
menuentry 'Linux' {
  linux (hd0,msdos1)/casper/bzImage console=tty0
  initrd (hd0,msdos1)/casper/initrd
}

按 Ctrl+O 保存,按 Ctrl+X 关闭


10.复制内核到分区

sudo mkdir -p ~/mnt/data/casper
sudo cp ~/bzImage ~/mnt/data/casper/
sudo cp ~/initrd ~/mnt/data/casper/

11.卸载分区和镜像

sudo umount mnt/data
sudo losetup -d $LOOPDEV

启动镜像

支持 Legacy 和 EFI 启动

可通过 qemu 启动,或刻录到U盘启动