大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
一、搭建NFS服务器
查看另一篇博客:《1.3、Ubuntu18.04搭建NFS服务器》
二、使用BusyBox构建跟文件系统
-
下载busybox源码:
【点此进入busybox官网】,网站链接为:https://busybox.net/。进入官网后依次查找下述菜单,进入下载页面。
->Get BusyBox ->Download Source
2.1 修改顶层Makefile
-
进入Makefile
vim Makefile
-
找到CROSS_COMPILE和ARCH,并进行修改
将 CROSS_COMPILE ?= 修改为 # 备注:后面的路径为交叉编译工具链安装路径 CROSS_COMPILE ?= /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
将 ARCH ?= $(SUBARCH) 修改为: ARCH ?= arm
2.2 busybox中文支持
- 该步骤可有可无,此处不再赘述。可以查阅正点原子《嵌入式驱动开发指南》的《根文件系统构建》章节。
2.3 配置busybox
-
执行下属命令,采用默认配置即可:
make defconfig make menuconfig
-
采用动态编译,所以不要选中:
Location: -> Settings -> Build static binary (no shared libs)
-
选中:
Location: -> Settings -> vi-style line editing commands
-
不要选中:
Location: -> Linux Module Utilities -> Simplified modutils
-
确保mdev下面的子选项全部选中:
Location: -> Linux System Utilities -> mdev (16 kb) //确保下面的全部选中,默认都是选中的
-
选中unicode编码,以支持中文选中unicode编码,以支持中文
Location: -> Settings -> Support Unicode //选中 -> Check $LC_ALL, $LC_CTYPE and $LANG environment variables //选中
2.4 编译busybox
-
执行命令
make install CONFIG_PREFIX=/home/lsy/tools/lsy/nfs/rootfs
CONFIG_PREFIX参数指定生成的根文件系统保存的路径。
至此可以看到上述目录下已经生成了一个简单的文件系统,但是还需要添加一些其他文件完善rootfs。
2.5 向根文件系统添加lib库
2.5.1 向{rootfs}/lib目录下添加库文件
从交叉编译工具链的安装目录中拷贝lib库到rootfs的lib中。
-
在rootfs中创建lib文件夹
cd /home/lsy/tools/lsy/nfs/rootfs mkdir lib
-
拷贝{交叉编译工具链安装目录}/libc/lib/中的库文件到{rootfs}/lib目录下
备注1:“-d”表示拷贝符号链接,有个比较特殊的库文件: ld-linux-armhf.so.3,此库文件是个符号链接,相当于 Windows 下的快捷方式。
备注2:rootfs/lib目录中的d-linux-armhf.so.3是一个软连接,没用,所以先删除在将源文件拷贝进去
cd /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib/ cp *so* *.a /home/lsy/tools/lsy/nfs/rootfs/lib/ -d rm /home/lsy/tools/lsy/nfs/rootfs/lib/ld-linux-armhf.so.3 cp ld-linux-armhf.so.3 /home/lsy/tools/lsy/nfs/rootfs/lib/
-
拷贝{交叉编译工具链安装目录}/lib目录中的库文件到到{rootfs}/lib目录下
cd /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib/ cp *so* *.a /home/lsy/tools/lsy/nfs/rootfs/lib/ -d
2.5.2 向{rootfs}/usr/lib目录下添加库文件
-
在rootfs中创建lib文件夹
cd /home/lsy/tools/lsy/nfs/rootfs/usr mkdir lib
-
拷贝{交叉编译工具链安装目录}/libc/usr/lib
cd /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib/ cp *so* *.a /home/lsy/tools/lsy/nfs/rootfs/usr/lib/ -d
-
至此,库文件添加完成,输入如下命令复查文件库文件大小
#命令: cd /home/lsy/tools/lsy/nfs/rootfs/ du ./lib ./usr/lib -sh #结果如下: 57M ./lib 67M ./usr/lib
2.6 创建其他文件夹
-
创建如下文件夹
cd /home/lsy/tools/lsy/nfs/rootfs/ mkdir dev proc mnt sys tmp root
三、测试文件系统(NFS挂载)
3.1 设置uboot中环境变量
-
设置uboot中环境变量,命令如下
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.0.250:/home/lsy/tools/lsy/nfs/rootfs ip=192.168.0.100:192.168.0.250:192.168.0.1:255.255.255.0::eth0:off' saveenv
3.2 命令解析
-
命令解析
console=ttymxc0,115200 解析: 串口
root=/dev/nfs rw 解析: nfs,可读可写
nfsroot=192.168.0.250:/home/lsy/tools/lsy/nfs/rootfs 解析: 192.168.0.250是nfs服务器IP,即:nfs文件系统所在linux机器的IP /home/lsy/tools/lsy/nfs/rootfs是rootfs保存的目录。
ip=192.168.0.100:192.168.0.250:192.168.0.1:255.255.255.0::eth0:off' 解析: 192.168.0.100为:开发板ipaddr 192.168.0.250为:nfs服务器的IP 192.168.0.1为:网关 255.255.255.0为:子网掩码 eth0为:网卡名称
四、完善文件系统
4.1 创建{rootfs}/etc/init.d/rcS 文件
rcS 是个 shell 脚本, Linux 内核启动以后需要启动一些服务,而 rcS 就是规定启动哪些文件的脚本文件。
-
创建rcs文件
cd /home/lsy/tools/lsy/nfs/rootfs/ mkdir etc/init.d -p #注意路径是在rootfs目录下,即上步的cd命令一定要先执行,千万别敲成根目录了 cd etc/init.d/ touch rcS vim rcS
-
在rcs中加入如下代码:
#!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib export PATH LD_LIBRARY_PATH mount -a mkdir /dev/pts mount -t devpts devpts /dev/pts echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s
-
赋予rcS文件可执行权限
chmod 777 rcS
4.2 创建{rootfs}/etc/fstab 文件
-
创建fstab文件
cd /home/lsy/tools/lsy/nfs/rootfs/etc/ touch fstab vim fstab
-
在文件中加入如下内容:
#<file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 sysfs /sys sysfs defaults 0 0
4.3 创建{rootfs}/etc/inittab 文件
-
创建inittab文件
cd /home/lsy/tools/lsy/nfs/rootfs/etc/ touch inittab vim inittab
-
在文件中加入如下内容:
#etc/inittab ::sysinit:/etc/init.d/rcS console::askfirst:-/bin/sh ::restart:/sbin/init ::ctrlaltdel:/sbin/reboot ::shutdown:/bin/umount -a -r ::shutdown:/sbin/swapoff -a
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185159.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...