iTop-4412配置内核开发环境
虽然理论上开发板拿过来就可以使用,但如果正确配置环境,可以大大提高开发效率,事半功倍。
搭建内核编译环境
使能32位程序支持
因为交叉编译器为32位程序,因此需要安装32位动态库。
1
2sudo dpkg --add-architecture i386
sudo apt install lib32z1 lib32ncurses6 lib32stdc++6安装交叉编译器
1
2
3
4
5
6
7
8# Download prebuilt toolchain
wget https://github.com/colorfulshark/arm-2009q3/archive/refs/heads/master.zip
unzip master.zip
mv arm-2009q3-master arm-2009q3
# install to target directory
sudo mkdir /usr/local/arm
sudo mv arm-2009q3 /usr/local/arm/克隆内核源码
1
git clone https://github.com/colorfulshark/iTop4412_Kernel_3.0.git
编译内核
1
2
3# setup default config
cp config_for_linux_9.7 .config
make刷写内核
1
2
3
4
5
6# execute in uboot
fastboot
# execute in host
sudo fastboot flash kernel arch/arm/boot/zImage
sudo fastboot reboot
搭建文件系统编译环境
这里使用Buildroot构建文件系统,因为其对老内核的支持较好。
克隆代码
1
2git clone https://gitlab.com/buildroot.org/buildroot.git
cd buildroot配置Buildroot
1
2
3
4
5
6
7
8
9
10
11make menuconfig
Target options:
Target Architecture: ARM (little endian)
Target Architecture Variant: cortex-A9
Toolchain:
C library: musl
Kernel Headers: Manually specified Linux version
linux version: 3.0.15
Custom kernel headers series: 3.0.x构建Buildroot
1
make
解压rootfs
1
sudo tar -xf output/images/rootfs.tar -C /rootfs
设置NFS Boot网络启动
使用NFS挂载根文件系统可以减少文件传输操作,提高开发效率,这里使用Buildroot作为根文件系统。
配置NFS服务器
1
2
3
4
5
6
7
8
9sudo apt install nfs-kernel-server
sudo vim /etc/exports
>>>
/rootfs *(rw,sync,no_root_squash)
<<<
sudo systemctl restart nfs-kernel-server配置内核选项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Networking support:
Networking options:
IP: kernel level autoconfiguration:
IP: DHCP support: Y
IP: BOOTP support: Y
IP: RARP support: Y
File systems:
Network File Systems:
NFS client support:
NFS client support for NFS version 3: Y
Root file system on NFS: Y
Boot options:
Default kernel command string: "root=/dev/nfs nfsroot=192.168.0.1:/rootfs,proto=tcp,vers=3 rw ip=192.168.0.2:192.168.0.1:192.168.0.1:255.255.255.0:itop4412:eth0:off init=/linuxrc console=ttySAC2,115200 lcd=9.7"调试NFS启动问题
如果内核无法挂载NFS根文件系统,可以使用以下内核cmdline进行调试
- nfsrootdebug: 启用NFS Root调试日志
- rootdelay=N: 等待N秒后再挂载文件系统
- rootwait: 等待root出现后再挂载
参考
https://blog.csdn.net/ComputerInBook/article/details/107575590
https://blog.colorfulshark.net/2020/08/23/setup-linux-2-6-system-from-scratch.html