arm64 linux+busybox 内核编译

 前言:最近学习arm,想要编译一个Linux,记录编译的过程

  • 环境:

OS:WSL2(Linux:5.15.133.1-1)(同样适用于Ubuntu系统)
1.gcc-aarch64-linux-gnu
2.Linux Kernel: linux-6.1.92
3.busybox: busybox-1.36.1
4.qemu

一.下载配置Linux 

Linux内核官网:https://www.kernel.org/

linux-6.1.92:

wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.1.92.tar.xz

安装必要文件:

sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install libncurses5-dev  build-essential git bison flex libssl-dev

 设置CPU架构

export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-

设置系统选项

make defconfig
make menuconfig

 在此设置一下内容

  1. 添加hotplug支持:
    Device Drivers                                                                                                 
        -> Generic Driver Options                                                                                             
            -> Support for uevent helper                                                                                                                
                (/sbin/hotplug) path to uevent helper
  2. 添加initramfs的支持: 
    General setup --->
        [*]Initial RAM filesystem and RAM disk(initramfs/initrd) 
        support(rootfs) Initramfs souce file(s)
  3. 内核页分别配置为 :
    Kernel Features  --->
        Page size(4KB)  --->
        Virtual address space size(48-bit)--->

至此配置工作结束

二.下载和编译busybox

busybox官网:https://busybox.net

busybox-1.36.1 :

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

解压:

tar jxvf busybox-1.36.1.tar.bz2

 设置CPU架构

export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-

 设置系统选项

make defconfig
make menuconfig

在这里设置一下内容:

Settings  ---> 
       --- Build Options  
       [*] Build static binary (no shared libs) 

编译:

make -j16

安装:

make install

默认路径为当期目录的_install文件夹,至此busybox静态编译完成

三.制作根文件系统rootfs

  •  创建根目录所需的目录
cd busybox-1.36.1/_install
mkdir -p dev etc home lib mnt proc root sys tmp var

根文件系统目录说明:

  1. /bin: 系统管理员和用户均可使用的命令
  2. /sbin: 系统管理员使用的系统命令
  3. /dev: 存储特殊文件或设备文件;设备两种类型:字符设备、块设备
  4. /etc: 系统配置文件
  5. /home: 普通用户目录
  6. /root:root用户目录
  7. /lib: 为系统启动或根文件上的应用程序(/bin,/sbin等)提供共享库,以及为内核提供内核模块
  8. /mnt:临时挂载点
  9. /tmp: 临时文件存储目录
  10. /usr:usr hierarchy,全局共享的只读数据路径
  11. /var:存储常发生变化的数据目录:cache、log等
  12. /proc: 基于内存的虚拟文件系统,用于为内核及进程存储其相关信息
  13. /sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径:其主要作用在于为管理linux设备提供一种统一模型的接口
  •  创建根目录所需的必要文件 
    cd busybox-1.36.1/_install/etc
    vim profile
    vim inittab
    chmod 755 inittab
    mkdir -p init.d/
    vim init.d/rcS
    chmod 755 init.d/rcS
    vim fstab
    

    inittab:

    ::sysinit:/etc/init.d/rcS
    ::respawn:-/bin/sh
    ::askfirst:-/bin/sh
    ::ctrlaltdel:/bin/umount -a -r
    

    rcS:

    /bin/mount -a
    mkdir -p /dev/pts
    mount -t devpts devpts /dev/pts
    echo /sbin/mdev > /proc/sys/kernel/hotplug
    mdev -s
    echo "Kernel Versio
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值