你是否想要一个独属于自己的Debian底座的操作系统?本文将带你如何一步一步的创造一个属于自己的操作系统。
一.准备工作
debian底座所以我们使用ubuntu来进行创建,我这里使用的ubuntu-24.04版本
1.1下载创建镜像所需的包
sudo apt install debootstrap grub-efi-amd64-bin parted dosfstools qemu-system-x86 squashfs-tools
debootstrap:用于在debian下构建最小根文件系统,可以直接从镜像库下载如/bin等文件
grub-efi-amd64-bin:包含创建grub efi镜像所需文件
parted:用于进行磁盘管理
dosfstools:用于创建efi镜像所需要的FAT32格式
qemu-system-x86:用于测试新构建的系统
1.2创建镜像文件
#创建一个6GB的镜像文件(为EFI分区预留所需的空间)
dd if=/dev/zero of=my_linux.img bs=1M count=6144
#关联loop设备
sudo losetup -fP my_linux.img
# 查看分配的loop设备
losetup -a
二.磁盘分区和格式化
2.1创建GPT分区表
# 创建 GPT 分区表
sudo parted /dev/loop0 mklabel gpt
# 创建 EFI 分区(从0开始)
sudo parted /dev/loop0 mkpart primary fat32 0% 512MiB
sudo parted /dev/loop0 set 1 esp on
# 创建根分区
sudo parted /dev/loop0 mkpart primary ext4 512MiB 100%
# 查看分区结果
sudo parted /dev/loop0 print
2.2格式化分区
#格式化EFI分区为FAT32
sudo mkfs.fat -F 32 /dev/loop0p1
#格式化根分区为ext4
sudo mkfs.ext4 /dev/loop0p2
#创建挂载点(按顺序来)
sudo mkdir -p /mnt/my_linux
sudo mount /dev/loop0p2 /mnt/my_linux
sudo mkdir -p /mnt/my_linux/boot/efi
sudo mount /dev/loop0p1 /mnt/my_linux/boot/efi
三.安装基本系统
3.1使用debootstrap安装Debin基础系统
# 安装最小Debian系统
sudo debootstrap --arch=amd64 --variant=minbase bookworm /mnt/my_linux http://deb.debian.org/debian
# 如果网络有问题,可以尝试国内镜像
# sudo debootstrap --arch=amd64 bookworm /mnt/my_linux https://mirrors.aliyun.com/debian/
3.2准备chroot环境
# 挂载必要的虚拟文件系统
sudo mount --bind /dev /mnt/my_linux/dev
sudo mount --bind /proc /mnt/my_linux/proc
sudo mount --bind /sys /mnt/my_linux/sys
sudo mount --bind /dev/pts /mnt/my_linux/dev/pts
# 挂载efivarfs以支持EFI变量访问
sudo mount -t efivarfs efivarfs /mnt/my_linux/sys/firmware/efi/efivars
# 复制网络配置
sudo cp /etc/resolv.conf /mnt/my_linux/etc/
# 进入chroot环境
sudo chroot /mnt/my_linux /bin/bash
四.基础系统设置
4.1基础设置
# 设置主机名
echo "my-custom-linux" > /etc/hostname
# 设置时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 配置locale
apt update
apt install -y locales
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
echo "zh_CN.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
# 创建fstab文件
cat > /etc/fstab << 'EOF'
# Live system fstab - minimal entries
/dev/sr0 /cdrom iso9660 ro,noauto 0 0
/dev/disk/by-label/MY_LINUX / iso9660 ro 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
devtmpfs /dev devtmpfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /run tmpfs defaults 0 0
EOF
4.2安装核心软件包
# 更新包列表
apt update
# 安装Linux内核
apt install -y linux-image-amd64
# 安装系统基础工具
apt install -y systemd systemd-sysv
apt install -y sudo curl wget vim nano
apt install -y net-tools iproute2
# 安装EFI引导相关包
apt install -y grub-efi-amd64 shim-signed efibootmgr
# 安装核心软件包,为制作iso做准备
apt install -y live-boot
# 配置静态网
cat > /etc/resolv.conf << 'EOF'
nameserver 8.8.8.8
nameserver 114.114.114.114
EOF
# 禁用 Live 环境中不必要的服务
systemctl mask systemd-timesyncd.service
systemctl mask systemd-logind.service
# 配置无线固件
mkdir -p /etc/modprobe.d
echo "options cfg80211 ieee80211_regdom=US" > /etc/modprobe.d/cfg80211.conf
4.3设置用户
# 设置root密码
passwd root
# 创建普通用户(替换yourusername为你想要的用户名)
adduser yourusername
# 将用户添加到sudo组
usermod -aG sudo yourusername
# 配置sudo(可选:设置无需密码)
echo "yourusername ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
五.安装EFI引导程序
5.1安装GRUB到EFI分区
#确保EFI分区已正确挂载
mount | grep efi
#安装GRUB(EFI模式)
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=my_linux --removable --recheck
# 生成GRUB配置文件
update-grub
#检查安装结果
ls -la /boot/efi/EFI/
如果报错显示
# grub-install: warning: EFI variables are not supported on this system.. Installation finished. No error reported.
#使用该命令确定是否可以访问EFI变量
ls /sys/firmware/efi/efivars
#如果为空或者不存在证明chroot环境无法访问EFI变量
#退出chroot
exit
#在主机shell中进行挂载
mount -t efivarfs efivarfs /mnt/my_linux/sys/firmware/efi/efivars
六.配置系统使用命令行界面
#设置GRUB终端类型为终端控制
echo 'GRUB_TERMINAL="serial console"' >> /etc/default/grub
#配置串口通信参数
echo 'GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"' >> /etc/default/grub
#配置内核控制台
echo 'GRUB_CMDLINE_LINUX="console=ttyS0,115200n8"' >> /etc/default/grub
# 更新 GRUB 配置
update-grub
七.清理系统
# 清理包缓存
apt clean
apt autoremove -y
# 清理日志和临时文件
find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
rm -rf /tmp/* /var/tmp/*
# 退出chroot环境
exit
# 卸载所有挂载点
sudo umount -l /mnt/my_linux/dev/pts
sudo umount -l /mnt/my_linux/dev
sudo umount -l /mnt/my_linux/proc
sudo umount -l /mnt/my_linux/sys
sudo umount /mnt/my_linux/boot/efi
sudo umount /mnt/my_linux
# 释放loop设备
sudo losetup -d /dev/loop0
八.启动系统
#安装OVMF包用于启动EFI模式
sudo apt install ovmf
#启动镜像
qemu-system-x86_64 \
-drive file=my_linux.img,format=raw \
-m 2G \
-smp 2 \
-netdev user,id=net0 -device e1000,netdev=net0 \
-bios /usr/share/ovmf/OVMF.fd \
-nographic \
-serial mon:stdio
九.制作iso文件
9.1挂载镜像
# 挂载镜像
sudo losetup -fP my_linux.img
LOOP_DEVICE=$(losetup -a | grep my_linux.img | awk -F: '{print $1}')
sudo mount ${LOOP_DEVICE}p2 /mnt/my_linux
9.2编写配置
# 创建 ISO 目录
mkdir -p /tmp/iso/{boot/grub,live}
# 复制内核文件
sudo cp /mnt/my_linux/boot/vmlinuz-* /tmp/iso/live/vmlinuz
sudo cp /mnt/my_linux/boot/initrd.img-* /tmp/iso/live/initrd.img
# 创建文件系统
sudo mksquashfs /mnt/my_linux /tmp/iso/live/filesystem.squashfs
# 创建启动配置
echo 'set timeout=5
menuentry "My Linux" {
linux /live/vmlinuz boot=live console=ttyS0,115200n8
initrd /live/initrd.img
}' > /tmp/iso/boot/grub/grub.cfg
9.3制作iso
# 生成 ISO
grub-mkrescue -o my_linux.iso /tmp/iso/
# 清理
sudo umount /mnt/my_linux
sudo losetup -d $LOOP_DEVICE
9.4测试
# 测试 Live ISO
qemu-system-x86_64 -cdrom my_linux.iso -m 2G -smp 2 -nographic -serial mon:stdio
# 注意修改镜像名
声明:本站所有文章均为永久链接,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系邮箱:jyxs_top@163.com进行处理。

评论(1)
很详细,👍