mini2440下制作nfs启动的根文件系统
2012-01-10 12:37
471 查看
学习驱动前,需要了解下一些基础:比如制作嵌入式系统的根文件系统。本文制作的根文件系统是在友善的mini2440下面用nfs运行的。mini2440使用的是自己移植的uboot、nfs服务器配置已经在uboot里面配置好了(不需要在内核配置,uboot会把这些配置传入内核的)。我的服务器地址是:192.168.0.104。下面直接上步骤吧!
1、配置uboot
配置uboot主要是让uboot启动内核,内核引导根文件系统。
其中/nfsroot/rootfs:允许其他计算机访问的目录,
192.168.0.*:被允许访问该目录的客户端IP地址,
r'w:文件系统可读可写,
sync:同步写磁盘(async:资料会先暂存于内存当中,而非直接写入磁盘)。
3、下载busybox和ect目录脚本文件:http://download.csdn.net/detail/xgg0602/4012229。下载后,用smb服务器放在linux下的一个新建的目录里面。我这里放在/home/guoqian/4-3-2目录下。
4、创建根文件系统目录
在nfs服务器根目录:nfsroot下,创建rootfs目录,以及根文件系统的各个目录。
内核在引导根文件系统时候,需要用到设备节点console和null,因此,在这里还要创建设备文件。
[root@www modules]# cd /home/guoqian/4-3-2/
[root@www 4-3-2]# tar -xvz -f busybox-1.13.3
[root@www 4-3-2]# cd busybox-1.13.3
[root@www busybox-1.13.3]# make menuconfig
进入图形化配置界面后:
1)、进入"Busybox Settings"-->"Build Options ",选中“Build Busybox as a static binary”(直接按键盘空格键到“*”)。注意:这里是静态链接。
2)、同时在“Build Busybox as a static binary”同一个页面的下面“ Cross Compiler prefix”,按键盘Enter键进入,然后输入:“arm-linux-” ,这时出现如下的图示:
3)、进入"Busybox Settings"-->"Installation Options",选中“Don‘t use /user”(这是为了不将busybox安装在/usr/sbin目录下);同时,在同一个页面下的“ BusyBox installation prefix ”添加安装路径:“/nfsroot/rootfs”,如下图所示:
9、编译和安装busybox。
[root@www busybox-1.13.3]# make ARCH=arm CROSS_COMPILE=arm-linux-
[root@www busybox-1.13.3]# make install
10、检查busybox是否安装好
具体方法为:查看/nfsroot/rootfs/sbin目录下是否有init存在。注意:如果init不存在说明busybox没有安装好,那么根文件系统是不能用的,这个时候,可以换个busybox试试。
11、启动开发板、测试根文件系统是否可用
这样,就完成了根文件系统的制作,比较简单。主要是想掌握linux的启动流程、内核与根文件系统关系以及熟记一些常用命令。
1、配置uboot
配置uboot主要是让uboot启动内核,内核引导根文件系统。
[u-boot@MINI2440]# setenv ipaddr 192.168.0.33 [u-boot@MINI2440]# setenv serverip 192.168.0.104 [u-boot@MINI2440]# setenv bootcmd 'tftp 31000000 uImage \; bootm 31000000' [u-boot@MINI2440]# setenv bootargs 'root=/dev/nfs rw nfsroot=192.168.0.104:/nfsroot/rootfs ip=192.168.0.33:192.168.0.1::255.255.255.0 console=ttySAC0,115200 init=/linuxrc mem=64M' [u-boot@MINI2440]# saveenv2、配置服务器nfs路径
[root@www bin]# vi /etc/exports在里面添加“/nfsroot/rootfs 192.168.0.*(rw,sync)”,
其中/nfsroot/rootfs:允许其他计算机访问的目录,
192.168.0.*:被允许访问该目录的客户端IP地址,
r'w:文件系统可读可写,
sync:同步写磁盘(async:资料会先暂存于内存当中,而非直接写入磁盘)。
3、下载busybox和ect目录脚本文件:http://download.csdn.net/detail/xgg0602/4012229。下载后,用smb服务器放在linux下的一个新建的目录里面。我这里放在/home/guoqian/4-3-2目录下。
4、创建根文件系统目录
在nfs服务器根目录:nfsroot下,创建rootfs目录,以及根文件系统的各个目录。
[root@www nfsroot]# mkdir -p /nfsroot/rootfs [root@www nfsroot]# cd /nfsroot/rootfs [root@www rootfs]# mkdir bin dev etc lib proc sbin sys usr mnt tmp var [root@www rootfs]# mkdir usr/bin usr/lib usr/sbin lib/modules
5、创建设备文件
内核在引导根文件系统时候,需要用到设备节点console和null,因此,在这里还要创建设备文件。
[root@www rootfs]# cd dev/ [root@www dev]# mknod -m 666 console c 5 1 [root@www dev]# mknod -m 666 null c 1 36、将etc包(上面的地址有)安装到/nfsroot/rootfs里面。
[root@www dev]# cd /home/guoqian/4-3-2/ [root@www 4-3-2]# tar -xvz -f etc.tar.gz -C /nfsroot/rootfs [root@www 4-3-2]# ls /nfsroot/rootfs/etc/ fstab init.d inittab profile7、编译内核模块,将内核模块安装到根文件系统(我用的是友善提供的内核linux-2.6.32.2)
[root@www 4-3-2]# cd /arm/Friendly_Linux/linux-2.6.32.2/ //进入内核根目录 [root@www linux-2.6.32.2]# make modules_install ARCH=arm INSTALL_MOD_PATH=/nfsroot/rootfs [root@www linux-2.6.32.2]# cd /nfsroot/rootfs/lib/modules/ //这是为了查看内核模块是否安装在lib/modules下 [root@www modules]# ls 2.6.32.2-FriendlyARM //成功安装8、配置busybox
[root@www modules]# cd /home/guoqian/4-3-2/
[root@www 4-3-2]# tar -xvz -f busybox-1.13.3
[root@www 4-3-2]# cd busybox-1.13.3
[root@www busybox-1.13.3]# make menuconfig
进入图形化配置界面后:
1)、进入"Busybox Settings"-->"Build Options ",选中“Build Busybox as a static binary”(直接按键盘空格键到“*”)。注意:这里是静态链接。
2)、同时在“Build Busybox as a static binary”同一个页面的下面“ Cross Compiler prefix”,按键盘Enter键进入,然后输入:“arm-linux-” ,这时出现如下的图示:
3)、进入"Busybox Settings"-->"Installation Options",选中“Don‘t use /user”(这是为了不将busybox安装在/usr/sbin目录下);同时,在同一个页面下的“ BusyBox installation prefix ”添加安装路径:“/nfsroot/rootfs”,如下图所示:
9、编译和安装busybox。
[root@www busybox-1.13.3]# make ARCH=arm CROSS_COMPILE=arm-linux-
[root@www busybox-1.13.3]# make install
10、检查busybox是否安装好
具体方法为:查看/nfsroot/rootfs/sbin目录下是否有init存在。注意:如果init不存在说明busybox没有安装好,那么根文件系统是不能用的,这个时候,可以换个busybox试试。
[root@www busybox-1.13.3]# cd /nfsroot/rootfs/sbin/ [root@www sbin]# ls adjtimex dhcprelay fsck.minix ifup lpd pivot_root route svlogd vconfig arp dnsd getty inetd lsmod popmaildir runlevel swapoff watchdog blkid fakeidentd halt init makedevs poweroff sendmail swapon zcip brctl fbset hdparm insmod man raidautorun setconsole switch_root chpasswd fbsplash httpd klogd mdev rdate setfont sysctl chroot fdisk hwclock loadfont mkfs.minix rdev setlogcons syslogd crond findfs ifconfig loadkmap mkswap readprofile slattach telnetd depmod freeramdisk ifdown logread modprobe reboot start-stop-daemon udhcpc devmem fsck ifenslave losetup nameif rmmod sulogin udhcpd同时我们可以看到bin目录下很多命令。
11、启动开发板、测试根文件系统是否可用
这样,就完成了根文件系统的制作,比较简单。主要是想掌握linux的启动流程、内核与根文件系统关系以及熟记一些常用命令。
相关文章推荐
- mini2440 最小根文件系统制作和nfs启动
- mini2440 linux2.6 内核制作-nfs启动根文件系统
- mini2440无盘启动------文件系统制作以及从u-boot启动无盘mini2440-----3
- mini2440 -- 设置Kernel通过nfs方式启动文件系统
- qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统
- beagelboard-xm上dvsdk移植4:sd卡启动脚本以及NFS文件系统的制作和配置
- qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统
- 如何在ubuntu 12.04系统下通过vivi的命令行来启动mini2440的nfs网络文件系统
- mini6410基于linux2.6.36内核通过NFS启动根文件系统总结(四制作根文件系统及通过NFS挂载文件系统)
- mini6410基于linux2.6.36内核通过NFS启动根文件系统总结(四制作根文件系统及通过NFS挂载文件系统)
- mini6410基于linux2.6.36内核通过NFS启动根文件系统总结(四制作根文件系统及通过NFS挂载文件系统)
- 开发板启动时通过nfs访问文件系统时出现的错误
- 一步一步制作yaffs/yaffs2根文件系统(八)---总结及怎么样使系统自动启动自己编写的程序
- mini2440文件系统yaffs制作
- Linux-2.6.32.2内核在mini2440上的移植(四)---根文件系统制作(1)
- 配置内核支持NFS启动文件系统
- mini2440 uboot使用nfs方式引导内核,文件系统
- 内核直接NFS挂载Android文件系统启动
- QEMU模拟Mini2440开发板运行环境(二):NFS挂载根文件系统
- Exynos4412 文件系统制作(一)—— 文件系统的启动过程分析