尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
制作最小Linux(Ubuntu)系统
一、确保本地PC或虚拟机上已安装了Ubuntu22.04的系统二、下载并编译内核2.1 配置软件源可配置为阿里的源命令(1)备份原始配置文件sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup(2)编辑软件源配置文件sudo nano /etc/apt/sources.list或sudo vim /etc/apt/sources.list(3)替换为阿里云镜像源删除原有内容粘贴以下配置x86架构标准版deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse(4)保存配置并更新sudo apt-get update2.2 更新一下源apt update2.3 安装配置内核所需要的依赖apt install -y make apt install -y make-guile apt install -y gcc apt install -y flex apt install -y bison apt install -y libelf-dev apt install -y openssl apt install -y libncurses-dev apt install -y libssl-dev2.4 下载内核网址https://mirrors.edge.kernel.org/pub/linux/kernel/命令​ wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.13.8.tar.gz ​2.5编译内核cd linux-5.13.8# 使用默认配置make defconfig# 添加必要配置这些是关键缺少任何一个都会导致启动失败cat .config EOF CONFIG_BLK_DEV_INITRDy # initramfs 支持 CONFIG_RD_GZIPy # gzip 解压支持如果用 gzip 压缩 CONFIG_DEVTMPFSy # /dev 自动设备节点 CONFIG_DEVTMPFS_MOUNTy # 启动时自动挂载 /dev CONFIG_TMPFSy # tmpfs 文件系统initramfs 需要 CONFIG_BINFMT_ELFy # ELF 可执行文件格式 CONFIG_BINFMT_SCRIPTy # shebang 脚本支持#!/bin/sh EOF# 应用配置并编译make olddefconfigmake -j$(nproc)# 复制内核cp arch/x86/boot/bzImage ../isobios/isolinux/kernel.gz三、下载并编译busybox3.1 下载busybox网站https://busybox.net/命令​ wget https://busybox.net/downloads/busybox-1.32.1.tar.bz2 ​3.2 配置busybox编译busybox与编译内核步骤基本一致将下载好的压缩包进行解压然后进入文件夹中使用make defconfig配置默认编译选项这里需要注意的是在生成的.config配置文件中需要设置CONFIG_STATICy如果没有添加即可。命令cd ~/Downloads wget https://busybox.net/downloads/busybox-1.32.1.tar.bz2 tar -jxvf busybox-1.32.1.tar.bz2 cd busybox-1.32.1 make defconfig vim .config3.3 编译busybox命令make busybox install编译完成后会在当前目录下新增一个_install文件夹里面就是编译好的busybox3.4 准备最小根文件系统mkdir -p rootfs/{bin,dev,etc,proc,sys,sbin,lib,lib64}# 复制 busybox推荐静态链接版本cp busybox rootfs/bin/cd rootfs/bin/for cmd in $(./busybox --list); do ln -s busybox $cmd; donecd ../..# 创建 /bin/sh 链接ln -s busybox rootfs/bin/sh# 创建 init 脚本cat rootfs/init EOF #!/bin/sh dmesg -n 1 mount -t devtmpfs none /dev mount -t proc none /proc mount -t sysfs none /sys /bin/sh EOFchmod x rootfs/init rootfs/bin/busybox3.5 打包正确做法进入目录内打包cd rootfs find . | cpio -o -H newc | gzip ../isobios/isolinux/rootfs.gz cd ..错误做法会导致 rootfs.gz 包含自身变成几个 GB# 在父目录打包会包含 isobios 子目录find . | cpio -o -H newc | gzip isobios/isolinux/rootfs.gz错误示范检查大小ls -lh isobios/isolinux/rootfs.gz# 正常应该 10MB如果显示几百 MB 或几 GB说明打包错误3.6 换行符检查Windows 用户特别注意# 检查是否有 Windows 换行符cat -A rootfs/init | head -3# 如果有 ^M 字符转换sed -i s/\r$// rootfs/init四、创建BIOS引导4.1 下载并解压syslinux网址https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz命令wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz gunzip syslinux-6.03.tar.gz tar -xvf syslinux-6.03.tar4.2 准备制作镜像文件所需的文件新建一个文件夹isobios,将解压后的syslinux文件夹下面的bios/core/isolinux.bin,bios/com32/elflink/ldlinux/ldlinux.c32复制到isobios文件夹下面。命令mkdir isobios cd isobios cp ../rootfs.gz . cp ../linux-5.13.8/arch/x86/boot/bzImage kernel.gz cp ../syslinux-6.03/bios/core/isolinux.bin . cp ../syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 .4.3 创建启动引导配置文件isolinux.cfg命令vim isolinux.cfg添加如下内容DEFAULT linux LABEL linux KERNEL kernel.gz APPEND initrdrootfs.gz注意• initrd 指定 initramfs 路径• 不要加 root/dev/ram0 等参数cpio 格式的 initramfs 不需要五、目录结构规范isobios/ # ISO 根目录└── isolinux/ # 必须放在子目录中├── isolinux.bin # ISOLINUX 引导文件├── isolinux.cfg # 启动配置文件├── kernel.gz # 压缩后的内核├── ldlinux.c32 # ISOLINUX 辅助文件└── rootfs.gz # 压缩后的根文件系统建议 10MB关键isolinux.cfg 中的路径是相对于 ISO 根目录的但因为该文件在 isolinux/ 子目录中所以配置里写 kernel.gz 而不是 isolinux/kernel.gz。六、生成 ISO 镜像genisoimage -o testbios.iso \ -b isolinux/isolinux.bin \ -c isolinux/boot.cat \ -no-emul-boot \ -boot-load-size 4 \ -boot-info-table \ -J -R -V Mini Linux \ isobios/整个系统文件大小10.9MB。七、测试启动# 使用 QEMU 测试qemu-system-x86_64 -cdrom testbios.iso -m 512M八、常见错误及解决错误信息原因解决方案failed: No such file or directory文件路径错误检查 isolinux.cfg 路径确保文件在正确位置failed: Bad file numberrootfs.gz 太大 100MB或损坏重新用 cpio 制作确保大小合理 10MBNo working init foundinit 不存在/不可执行/格式错误检查 init 权限755、换行符LF、busybox 是否静态链接Unable to mount root fs内核缺少 initramfs 支持启用 CONFIG_BLK_DEV_INITRD, CONFIG_RD_GZIPunknown-block(0,0)内核找不到 root 设备启用 CONFIG_DEVTMPFS, CONFIG_DEVTMPFS_MOUNTcannot execute /initbusybox 是动态链接但缺少库文件复制 libc.so 和 ld-linux 到 lib/ 目录或重新静态编译 busybox九、完整流程速查# 1. 准备 rootfscd rootfs find . | cpio -o -H newc | gzip ../isobios/isolinux/rootfs.gz# 2. 编译内核确保配置正确cd ../linux-5.13.8 make cp arch/x86/boot/bzImage ../isobios/isolinux/kernel.gz# 3. 生成 ISOcd .. genisoimage -o testbios.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -R -V Mini Linux isobios/# 4. 测试qemu-system-x86_64 -cdrom testbios.iso -m 512M最关键的三点1. rootfs.gz 必须用 cpio newc 格式且大小要合理正常几百 KB 到几 MB2. 内核必须启用 CONFIG_BLK_DEV_INITRD 和 CONFIG_RD_GZIP3. init 脚本必须是 Unix 换行符LF且有执行权限祝你的 mini Linux 制作顺利
RELATED

相关推荐

深度学习入门:从神经网络基础到CNN/RNN核心原理与实践

深度学习入门:从神经网络基础到CNN/RNN核心原理与实践

1. 从零开始:我们为什么需要深度学习?如果你最近关注科技新闻,或者对人工智能有点兴趣,大概率会频繁听到“深度学习”这个词。它听起来很高深,似乎和“人工智能”、“神经网络”这些概念紧密相连。但说实话&#xff0c…

📅 2026/10/25 17:42:13
低延迟AI游戏伙伴实战:从语音识别到游戏动作的全链路解析

低延迟AI游戏伙伴实战:从语音识别到游戏动作的全链路解析

Varkos 是一个很有意思的“AI 游戏伙伴”项目,核心玩法是在《上古卷轴5:天际》里加一个能实时对话、实时回应、看起来真在陪你玩的 AI 同伴。它最值得关注的点不是“能聊天”,而是“低延迟实时陪玩”:玩家的语音指令、AI 对游戏环…

📅 2026/10/29 2:15:45
动态规划精讲:从LIS到本质上升序列的计数与优化

动态规划精讲:从LIS到本质上升序列的计数与优化

1. 问题引入:从“上升”到“本质”的跨越 最近在复盘一些经典的动态规划题目,特别是蓝桥杯国赛级别的难题,发现“本质上升序列”这道题很有意思。它不像普通的“最长上升子序列”(LIS)那样,只关心长度这个单…

📅 2026/11/9 9:53:47
MORE NEWS

更多资讯

📰

北京哪里能考电工证啊 电子证书怎么申请才靠谱

北京哪里能考电工证啊 电子证书怎么申请才靠谱 工地太忙根本没时间复习考试,这几乎是所有建筑行业从业人员的心声。特别是像低压电工、高压电工这类特种作业人员,既要承担一线作业压力,又要面对考试和证件办理的问题,稍有不慎就可能耽误工期甚至面临处罚…

📰

资阳办理电工证怎么报名?没证根本找不到电工工作

资阳办理电工证怎么报名?没证根本找不到电工工作 你是不是正准备找电工相关工作,但手里还没拿到电工证?别急,我来告诉你资阳办理电工证怎么报名,以及没有电工证到底有多难找工作。很多在资阳本地的建筑工人、维修电工、安装电工,都是因为这个证没拿到,…

📰

漯河电工证考试在哪里官方回应外省证书能不能转过来

漯河电工证考试在哪里官方回应外省证书能不能转过来 之前考的证在外省能不能转过来?这是很多准备在漯河从事电工工作的朋友最关心的问题。 官方回应…

📰

吉林特种工怎么转证?考前押题帮你搞定

吉林特种工怎么转证?考前押题帮你搞定 之前考的证在外省能不能转过来?这几乎是每个在外地工作、想在吉林扎根的特种作业人员都会问的问题。其实, 吉林特种工…

📰

全椒县电工证培训通过率揭秘:实操考试心里没底怕挂科怎么办

全椒县电工证培训通过率揭秘:实操考试心里没底怕挂科怎么办 实操考试心里没底怕挂科?全椒县电工证培训通过率揭秘,帮你找到突破点。…

📰

滑县电工证怎么复审?郑州报考避坑指南全解析

滑县电工证怎么复审?郑州报考避坑指南全解析 之前考的证在外省能不能转过来?这个问题,几乎每个想在河南滑县从事电工工作的人都问过。特别是从外省过来的打工者,最担心的就是证能不能用,能不能复审。今天就来聊聊滑县电工证怎么复审,结合郑州报考避坑指…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬