基于飞凌imx6q的高版本uboot和内核移植(五、文件系统制作)

基于飞凌imx6q的高版本uboot和内核移植(五、文件系统制作)

采用buildroot制作文件系统:

下载并解压:https://buildroot.org/downloads/buildroot-2024.02.tar.xz

进入源码目录执行make menuconfig

基础配置(核心步骤)

Target Architecture --->
Target Architecture (ARM (little endian))
Target Architecture Variant (cortex-A9)
ARM instruction set (ARM)
[*] Enable VFP extension support
Target ABI (EABIhf)


Toolchain --->
采用内部自带工具链


[*] Enable C++ support # 需要C++/Qt/应用务必勾选

Kernel Headers (Manually specified Linux version) --->
(6.6.52) linux version

(Kernel Header,选择Manually specified Linux version6.6.52)

Kernel --->
[] Linux kernel 关闭内核相关处理(单独编译不在这编译)

System --->
(imx6q) Target hostname 主机名自定义
(i.MX6Q) System banner 开机提示语
Init system (BusyBox init) 默认 BusyBox init
/dev management (Dynamic dev with mdev) 选 mdev(嵌入式标准)
[*] Use mdev to populate /dev 自动创建设备节点
Root password () 可设置 root 密码


Filesystem images --->
[*] ext2/3/4 root filesystem
ext4 filesystem variant
(128M) Size of root filesystem image 分区大小按需设置

进入 Target packages,按需勾选:
Shell/Utilities:BusyBox(默认已开,基础命令)
Target packages
→ Networking
→ iproute2
[*] iproute2

编译make -j4

生成文件系统/buildroot-2024.02/output/images/rootfs.tar

开发板nfs挂在文件系统报错:
[ 5.421327] VFS: Mounted root (nfs filesystem) on device 0:15.
[ 5.428578] devtmpfs: mounted
[ 5.435238] Freeing unused kernel image (initmem) memory: 1024K
[ 5.442177] Run /sbin/init as init process
mount: you must be root
mount: you must be root
mkdir: can't create directory '/dev/pts': Permission denied
mkdir: can't create directory '/dev/shm': Permission denied
mount: you must be root
hostname: sethostname: Operation not permitted
Seeding 256 bits without crediting
seedrng: RNDADDENTROPY: Operation not permitted
Starting syslogd: OK
Starting klogd: OK
Running sysctl: OK
Starting mdev... OK
modprobe: can't change directory to '/lib/modules': No such file or directory
Starting network: RTNETLINK answers: Operation not permitted
RTNETLINK answers: Operation not permitted
FAIL
Starting dhcpcd...
main: control_open: Connection refused
dhcpcd-10.0.5 starting
ps_root_startcb: dhcp_openraw: Operation not permitted
ps_root_startcb: ipv6nd_open: Operation not permitted
ps_root_startcb: dhcp6_openraw: Operation not permitted
ps_inet_startcb: dhcp_open: Permission denied
ps_inet_startcb: ipv6nd_open: Operation not permitted
dhcp6_openudp: Permission denied
ps_inet_startcb: dhcp6_open: Permission denied
ps_dropprivs: chroot: /: Operation not permitted
failed to drop privileges: Operation not permitted

修改开发板的文件系统权限(在Ubuntu下操作)
sudo chown -R root:root .
sudo chmod 4755 bin/busybox
sudo chmod 755 sbin/* bin/*
sudo mknod -m 666 dev/null c 1 3
sudo mknod -m 600 dev/console c 5 1

重启开发板成功进入:

# cd /

# ls
bin lib media proc sbin usr
dev lib32 mnt root sys var
etc linuxrc opt run tmp