内核和文件系统很大至少要50G硬盘,如果当下虚拟机的硬盘空间不够大,扩展硬盘需要的操作太麻烦,至少得一个下午,甚至还会有遗留问题,建议直接重新创建一个新的虚拟机。
创建新的虚拟机后需要下载的工具:
1.vim 2.gcc 3.交叉编译工具
内核移植
需要的压缩包:linux-3.5-20190720.tgz
配置操作:
1.把压缩包复制进虚拟机中,在解压后的目录下,将厂商提供的内核默认配置文件复制进config里
cp tiny4412_linux_defconfig .config
.config是一个隐藏文件,在linux里,加点表示隐藏
2.进入图形化配置页面进行个性化配置,保存退出
make menuconfig
System Type --->
[ ] Support TrustZone-enabled Trusted Execution Environment //去掉内核保护机制
File systems --->
<*> Ext3 journalling file system support //设置内核支持的文件系统的类型
Device Drivers --->
Generic Driver Options ---> //文件系统/dev 下设备文件显示
[*] Maintain a devtmpfs filesystem to mount at /dev
[*] Automount devtmpfs at /dev, after the kernel mounted the rootfs
//<>为不选择, <*> 则压缩到内核映像zImage放到内存中运行,< M>为编译成moudule内核模块,存放在ROM中,使用时由zImage调用动态加载到内存
3.编译内核 , j3表示两个内核的三个线程同时编译,,各个线程老师都试过,三个线程的效率最高
time make -j3
4.烧录到SD卡。编译完成后的内核文件是 linux-3.5/arch/arm/boot/zImage
sudo dd iflag=dsync oflag=dsync if=./zImage of=/dev/sdb seek=1057
文件系统移植
需要的压缩包:buildroot-2023.02.4.tar.gz 和 dl.tar
配置操作:
1.下载软件。
首先把 dl.tar 解压到 buildroot-2023.02.4.tar.gz 解压后的目录下,dl里面有很多软件,能节省接下来编译的时候下载软件的时间
再更新软件源列表 sudo apt-get update
下载buildroot需要的安装包
sudo apt-get install gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler gcc-aarch64-linux-gnu mtools parted libudev-dev autoconf m4 intltool libdrm-dev curl sed make binutils build-essential gcc g++ bash patch gzip gawk bzip2 perl tar cpio python unzip rsync file bc wget libncurses5 libglib2.0-dev libgtk2.0-dev libglade2-dev cvs git mercurial rsync openssh-client subversion asciidoc w3m dblatex libc6:i386 libssl-dev expect fakeroot cmake flex bison liblz4-tool libtool keychain expect-dev
安装的时候不要一下全部都安装完,会出错,可以一个一个的安装,或几个几个安装。
2.进入图形化配置页面进行个性化配置。在buildroot目录下执行 make menuconfig
Target Architecture //选择arm架构
(X) ARM (little endian) //小端模式
Target Architecture Variant (cortex-A9) ---> //A9芯片
Toolchain ---> //配置交叉编译工具
Kernel Headers (Linux 4.19.x kernel headers) ---> //内核是向下兼容,选3.5以上的就行
[*] Enable compatibility shims to run on older kernels
[*] Install glibc utilities
[*] Enable C++ support
[*] Enable Fortran support
[*] Enable D language support
[*] Enable compiler OpenMP support
[*] Enable graphite support
[*] Copy gconv libraries
Build options ---> //配置编译库的选项
libraries (both static and shared) ---> //静态库和动态库都要
System configuration ---> //系统配置
/dev management (Dynamic using devtmpfs + mdev) --->
Filesystem images ---> //文件系统的配置
[*] ext2/3/4 root filesystem
ext2/3/4 variant (ext4) --->
[*] ubi image containing an ubifs root filesystem
Target packages //选择安装软件包
Audio and video applications --->
可以选择ffmpeg
madplayer
3.编译文件系统 time make -j2