您的位置:首页 > 其它

mini2440下制作nfs启动的根文件系统

2012-01-10 12:37 471 查看
学习驱动前,需要了解下一些基础:比如制作嵌入式系统的根文件系统。本文制作的根文件系统是在友善的mini2440下面用nfs运行的。mini2440使用的是自己移植的uboot、nfs服务器配置已经在uboot里面配置好了(不需要在内核配置,uboot会把这些配置传入内核的)。我的服务器地址是:192.168.0.104。下面直接上步骤吧!

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]# saveenv
2、配置服务器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 3
6、将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  profile
7、编译内核模块,将内核模块安装到根文件系统(我用的是友善提供的内核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的启动流程、内核与根文件系统关系以及熟记一些常用命令。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐