优先通过使用docker选择合适的ubuntu系统编译系统, 以下路径为相对路径
安装基础开发包
# apt install build-essential
安装 libncurses 包 (TUI) 文本UI界面,比如 make menuconfig
# apt-cache search libncurses
libncurses5 - shared libraries for terminal handling
libncurses5-dbg - debugging/profiling libraries for ncurses
libncurses5-dev - developer's libraries for ncurses
# apt-get install libncurses5 libncurses5-dev
开始编译镜像
# wget <https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.9.229.tar.xz>
# tar -Jvxf linux-4.9.229.tar.xz
# export ARCH=x86
# make x86_64_config
# make menuconfig
General setup --->
----> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
Device Drivers --->
[*] Block devices --->
<*> RAM block device support
(65536) Default RAM disk size (kbytes) # 配置成64m
# make # 编译成功后的内核位于:arch/x86_64/boot/bzImage
# wget <https://busybox.net/downloads/busybox-1.30.0.tar.bz2>
# tar -vxf busybox-1.30.0.tar.bz2
# make menuconfig
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary (no shared libs) # 设置静态库,也就是打包成一个执行文件
# make && make install # 编译成功后会生成到 _install 文件夹里
/bin:存放一些常用的命令和程序,如ls、cp、ping等。/boot:存放一些启动时需要用到的文件,如内核文件、引导程序等。/dev:存放一些设备文件,如硬盘、键盘、鼠标等。/etc:存放一些系统配置文件和管理文件,如网络配置、用户信息、服务启动脚本等。/home:存放普通用户的主目录,每个用户都有自己的子目录,如/home/john。/lib:存放一些系统库文件,如C语言库、动态链接库等。/media:存放一些可移动设备的挂载点,如U盘、光驱等。/mnt:存放一些临时挂载其他文件系统的点,如光驱、网络共享等。/opt:存放一些可选的附加应用程序,如第三方软件等。/proc:存放一些进程信息和系统信息,这是一个虚拟的文件系统,它反映了内核和内存的状态。/root:存放系统管理员(root用户)的主目录。