CentOS6结合Busybox完成自制Linux系统

本文主要介绍基于busybox上制作一个小巧版的linux,一般发行版的体积太过庞大,很多功能可能我们碰都不会去碰。那么我就在想可不可以自己裁剪内核和外围的应用程序,制作自己的Linux系统。答案是肯定的,现在就开始制作自己的Linux系统吧。

环境准备阶段

  1. 一个Centos主机(本文采用的是6.8,其他版本请自行测试)
  2. 额外添加一块硬盘(后面用来当做系统盘使用)
  3. 下载内核程序包(这里用的版本是3.19.1,阿里云下载地址
  4. 下载Busybox程序包(下载地址

磁盘配置

  1. 新建3个分区
    第一个主分区(做boot分区):200M
    第二个主分区(做/根分区):20G
    第三个主分区(做swap分区):2G
    1
    2
    3
    4
    5
    6
    mkfs.ext4 /dev/sda1
    mkfs.ext4 /dev/sda2
    mkswap /dev/sda3
    mkdir -pv /mnt/{boot,sysroot}
    mount /dev/sda1 /mnt/boot/
    mount /dev/sda2 /mnt/sysroot/

编译内核

  1. 下载完程序包,解压缩至/usr/src目录下

    1
    2
    3
    4
    tar -Jxf linux-3.13.6.tar.xz -C /usr/src/
    cd /usr/src/
    ln -sv linux-3.13.6 linux
    cd linux
  2. 安装相关依赖包和包组

    1
    2
    yum groupinstall -y "Development tools" "Server Platform Development"
    yum install -y ncurses-devel glibc-static libmcrypt-devel
  3. 根据实际需求选择需要的功能编译内核

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    make allnoconfig
    make menuconfig
    # 我们把这些内容全部编译进内核、不编译成模块、*号表示编译进内核(M表示以模块的方式装载)
    # 注意:以下*号标识的选项一定要选择*号,否则系统无法正常启动
    [*]64-bit kernel :64位操作系统的内核
    General setup --> Local version --> -MyLinux: 给内核定一个自己的版本
    Processor type and features --> Processor family --> (X)Generic-x86-64:这里是CPU类型、这个是通用x86-64
    Processor type and features --> [*]Symmetric multi-processing support:选择CPU支持多核心处理
    [*]Enable loadable module support: 选择内核动态模块加载
    Bus options (PCI etc.) --> [*]PCI suppor:支持PCI总线
    Device Drivers --> <*>SCSI device support -->[*]SCSI disk support要支持SCSI硬盘
    Device Drivers -->Fusion MPT device support (NEW) --> <*>Fusion MPT ScsiHost drivers for SPI、<*>Fusion MPT misc device (ioctl) driver、[*]Fusion MPT logging facility:支持对硬盘的驱动
    File systems --> <*>The Extended 4 (ext4) filesystem:支持文件系统
    Executable file formats / Emulations --> [*]Kernel support for ELF binaries、[*]Write ELF core dumps with partial segments (NEW)、 <*>Kernel support for scripts starting with #!:可执行文件的格式
    Device Drivers -->Input device support --> [*]Keyboards -> <*>AT keyboard (NEW) [*]Mice:支持输入输出设备、比如健盘
    Device Drivers > Generic Driver Options > [*] Maintain a devtmpfs filesystem to mount at /dev [*]Automount devtmpfs at /dev, after the kernel mounted the rootfs
    [*] Networking support ---> > Networking options[*] TCP/IP networking [*]IP:multicasting [*]IP: advanced router [*]IP: policy routing [*]IP: verbose route monitoring [*]IP: kernel level autoconfiguration [*]IP: DHCP support [*]IP: BOOTP support [*]IP: RARP support <*>IP: tunneling <*>Unix domain sockets <*>UNIX: socket monitoring interface:支持协议
    Device Drivers > Network device support > Ethernet driver support[*]Intel devices (NEW)<*>Intel(R) PRO/1000 Gigabit Ethernet support<*>Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support:只要Intel的、其他的他都去掉、这是选择网卡设备的驱动程序
    OK、到这里保存退出、把配置文件备份一份出来
    cp .config /root/3.13.6.ch-x86_64
    make SUBDIR=/arch #开始编译内核,这里时间较长,耐心等待的过程中可以做一点其他的事
    cp arch/x86_64/boot/bzImage /mnt/boot/ # 编译完成之后将文件拷入到boot目录下
    grub-install --root-directory=/mnt hd1 # 安装grub

编译Busybox


1
2
3
tar -xf busybox-20160822.tar.bz2 -C /usr/local/
cd /usr/local/busybox
make menuconfig

make menuconfig时就选择这项就可以了、其他的都使用默认选项:
Busybox Settings –>Build Options –>[*] Build BusyBox as a static binary (no shared libs):把busybox编译也静态二进制,不用共享库

1
2
make
make install
火柴 wechat
扫描上方二维码关注我的博客!
0%