本网站是本人的个人博客网站海外站,国内网站为https://suyihang15.com,本网站主要面对海外用户

编译自己的操作系统(基于Linux)

注:本文主要介绍如何基于Linux的内核编译一个最简单的操作系统,编译Linux内核+BusyBox,制作可启动迷你Linux系统

1、环境准备

wsl –install(在windows安装Linux的环境)

2、编译步骤

一、更换国内软件源(解决下载慢)

备份原有软件源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
 

作用:备份系统默认源,后续出错可以恢复

写入阿里云高速镜像源

sudo tee /etc/apt/sources.list > /dev/null << ‘EOF’
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
EOF
 

作用:替换国外源,大幅加快软件下载速度

更新软件仓库

sudo apt update

sudo apt upgrade -y
 

作用:刷新源缓存,升级系统基础软件

二、安装全套编译依赖环境

sudo apt install -y gcc make flex bison libncurses-dev cpio xorriso grub-common grub-pc-bin grub-efi-amd64-bin libelf-dev libssl-dev bc wget qemu-system-x86
 

作用介绍

  •  gcc/make :C语言编译工具
  •  flex/bison :内核语法编译依赖
  •  libncurses-dev :图形配置界面依赖
  •  cpio/xorriso :打包文件、制作ISO镜像
  •  grub系列 :系统引导必备工具
  •  qemu-system-x86 :虚拟机运行自制系统

三、创建专属编译工作目录

mkdir -p ~/mini_os

cd ~/mini_os
 

作用:统一存放源码、编译文件,路径干净无权限冲突

四、编译Linux原生内核

下载Linux内核源码(阿里云镜像)

wget https://mirrors.aliyun.com/linux-kernel/v6.x/linux-6.1.tar.xz
 

解压内核源码

tar -xf linux-6.1.tar.xz
 

进入内核源码目录

cd linux-6.1
 

生成内核默认配置

make defconfig
 

作用:自动生成通用电脑适配内核配置,新手无需手动修改

多核全速编译内核

make -j$(nproc)
 

作用:调用电脑全部CPU核心编译,提升编译速度
编译完成产物: arch/x86_64/boot/bzImage  内核镜像

返回上级目录

cd ..
 

五、编译BusyBox极简命令工具箱

BusyBox集成ls、cd、mkdir等所有Linux基础命令

下载BusyBox源码

wget https://busybox.net/downloads/busybox-1.36.1.tar.bz2
 

解压源码

sudo apt install -y bzip2(下载解压软件)

tar -xf busybox-1.36.1.tar.bz2
 

进入BusyBox目录

cd busybox-1.36.1
 

生成默认配置

make defconfig

开启静态编译(核心关键)

sed -i ‘/CONFIG_STATIC=/d’ .config
echo “CONFIG_STATIC=y” >> .config
 

作用:编译成独立静态程序,不依赖系统动态库,迷你系统可直接运行

多核编译BusyBox

make -j$(nproc)
 

安装编译好的命令工具

make install
 

作用:命令全部输出到 _install 目录,作为系统基础命令集

返回上级目录

cd ..
 

六、搭建迷你Linux根文件系统

创建根文件系统文件夹

mkdir rootfs
 

拷贝BusyBox所有命令到根系统

cp -r busybox-1.36.1/_install/* rootfs/
 

创建系统必备空目录

mkdir -p rootfs/{dev,proc,sys,etc}
 

作用:dev设备目录、proc系统信息目录、sys硬件目录

创建系统必要设备文件

sudo mknod rootfs/dev/console c 5 1
sudo mknod rootfs/dev/null c 1 3
 

作用:控制台终端、空设备,系统启动必需

配置系统开机自动启动终端

echo ‘::askfirst:-/bin/sh’ > rootfs/etc/inittab
 

作用:系统开机直接进入命令行终端

七、打包内核内存文件系统

进入根文件系统目录

cd rootfs
 

打包压缩为initramfs启动文件

find . | cpio -o -H newc | gzip > ../initramfs.cpio.gz
 

作用:把整个根系统打包,让内核启动时加载

返回上级目录

cd ..
 

八、制作GRUB引导启动ISO镜像

创建ISO镜像目录结构

mkdir -p iso/boot/grub
 

拷贝内核与启动文件到ISO目录

cp linux-6.1/arch/x86_64/boot/bzImage iso/
cp initramfs.cpio.gz iso/
 

编写GRUB系统启动菜单

cat > iso/boot/grub/grub.cfg << ‘EOF’
menuentry “My Self Linux” {
linux /bzImage
initrd /initramfs.cpio.gz
}
EOF
 

作用:虚拟机启动时显示系统选项,指定内核与根文件系统

生成最终可启动ISO镜像

grub-mkrescue -o mylinux.iso iso
 

生成文件: mylinux.iso  自制完整Linux系统镜像

其是可以直接安装在虚拟机上的

总结:其用Linux搭建操作系统本身不难,因为已经用很成熟的内核这些了,但本身还是调用别人的东西,希望后面有人能完整的搞出完整的独立操作系统吧。

0 条对“编译自己的操作系统(基于Linux)”的回复

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

© 2026 苏的小站

Go to top