# elegant_linux_design **Repository Path**: 91yang/elegant_linux_design ## Basic Information - **Project Name**: elegant_linux_design - **Description**: linux kernel统一学习平台 - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 16 - **Created**: 2023-03-03 - **Last Updated**: 2023-03-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 《linux驱动优雅设计》 by cxj 2023. # 1 目录结构 ├── busybox-1.35.0 //busybox源码 ├── elegant-design //课程设计源码 ├── linux-5.9 //linux源码 ├── qemu //qemu虚拟开发环境 └── README.md # 2 使用说明 ## 2.1 基础环境 ### 2.1.1 arm64交叉编译工具: - 直接安装方式:`sudo apt-get install gcc-aarch64-linux-gnu`,安装默认版本 - 其他方式:`https://releases.linaro.org/components/toolchain/binaries/` 选择各类发布版本source或者binary.选择该方式往往是主机或者服务器的环境比较老旧,默认安装的gcc版本较低 - 选定交叉编译工具目录后,配置qemu/armXX/export_env,如: ``` ARCH=arm64 CROSS_COMPILE=/home/user1/codes/elegant_linux_design/qemu/arm64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- ``` 如果是直接安装的方式,可以: ``` ARCH=arm64 CROSS_COMILE=aarch64-linux-gnu- ``` - 注意: - 配置CROSS_COMPILE选用选用绝对路径或者环境变量名 ### 2.1.2 Qemu 环境 - 直接安装方式:`sudo apt-get install qemu-system-aarch64` - 各发布版本的下载:`https://download.qemu.org/`, 具体安装可以参考官网wiki。选用该方式,往往是主机或者服务器的环境比较老旧,默认安装版本较低。 ## 2.2 单独编译busybox 在qemu/armXX中依次执行: - Step1: `./config_busybox` - 选择静态编译:`Settings--->Build static binary(no shared libs)`,退出保存即可 - 结果:在busybox-1.35.0下面会生成`build_busybox_arm64_out/.config`文件 - Step2: `./build_busybox` - 在当前目录下会生成ramdisk - 结果:在`build_busybox_arm64_out`目录下生成_install目录,也就是busybox的最终生成结果 - 如果需要重新编译busybox(如修改其中的源码),需要删除`build_busybox_arm64_out`目录 - Step3: `./make_ramdisk` - 用于在当前目录下生成rootfs ## 2.3 单独编译kernel 在qemu/armXX中依次执行: - Step1: `./config_kernel` - 配置`General Settup-->Initramfs source file(s)`中回车,填入对应的rootfs路径,如:ramdisk64 - 结果:在kernel_out目录下产生.config配置文件,并生成制定的rootfs目录(如ramdisk64)。 - 如果仅通过该命令更新ramdisk,那么可以选择执行`./config_kernel nomenu` - Step2: `./build_kernel` - 结果:产生kernel_out目录,同时在该目录下的arch/armXX/boot/有Image生成,这是后续qemu启动arm虚拟环境所需要的镜像 注意: - 必须要先生成ramdisk才能编译kernel,因为在制作Image镜像时需要打包该目录内容 - 如果qemu/armXX/ramdisk有修改,需要重新执行./config_kernel,便于镜像打包文件的更新,否则单独执行该命令或者单独启动qemu,rootfs不会发生任何改变 - kernel_out下的ramdisk是qemu/armXX/ramdisk的副本,用于镜像编译使用,每次编译都会从原本(qemu/armXX/ramdisk)中更新。 ## 2.4 启动arm平台(暂未支持) `./setup arm` ## 2.5 启动arm64平台 `./setup arm64` ## 2.6 退出qemu 键盘上执行`ctrl+A`,释放按键之后,单独输入 `x` 即可。