最近在研究gcc 本身-pg + gprof的热点分析支持,可析我们开发板的uclibc不支持此选项,于是产生更换uclibc为glibc的想法,由于以前自己未曾构建过根文件系统,为了避免一次一次的写FLASH,决定使用nfs rootfs启动.
首先内核加入选项
Root file system on nfs
编译内核
使用命令mkimage -A arm -T kernel -C none -a 0xe0800000 -e 0xe0800000 -n hilinux -d arch/arm/boot/zImage kernel 构建内核镜像
然后把当前目录中的kernel拷贝到/srv/tftp我的tftp服务目录中
使用如下参数启动(uboot下面)
setenv bootargs mem=200M console=ttyAMA0,115200 root=/dev/nfs rw nfsroot=192.168.50.54:/opt/rootfs_test/,nolock ip=192.168.50.253:192.168.50.54:192.168.50.1:255.255.255.0::eth0: pcimod=host pciclksel=1 mac=00:11:22:33:44:55
setenv ipaddr 192.168.50.253
setenv serverip 192.168.50.54
tftp 0xe4000000 kernel;bootm 0xe4000000
大概解释
[板子IP] [NFS服务端IP] ·[网关] [子网掩码]
ip=192.168.50.253:192.168.50.54:192.168.50.1:255.255.255.0::eth0:
提示eth0不能被找到,启动失败
分析原因发现板子上的网卡驱动是以模块的形式存在的
将网卡驱动添加到内核kbuild树里面编译到内核里面
再次使用以上的命令,启动成功
注:根文件系统使用的是解决方案以前提供的构建好的
之后就可以进行根文件系统的文件替换了 很方便了