基于busybox制作mini2440根文件系统及使用nfs挂载
busybox详解制作根文件系统

详解制作根文件系统单击,返回主页,查看更多内容一、FHS(Filesystem Hierarchy Standard)标准介绍当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。
该标准规定了根目录下各个子目录的名称及其存放的内容:制作根文件系统就是要建立以上的目录,并在其中建立完整目录内容。
其过程大体包括:•编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录•利用交叉编译工具链,构建/lib目录•手工构建/etc目录•手工构建最简化的/dev目录•创建其它空目录•配置系统自动生成/proc目录•利用udev构建完整的/dev目录•制作根文件系统的jffs2映像文件下面就来详细介绍这个过程。
二、编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录这些目录下存储的主要是常用命令的二进制文件。
如果要自己编写这几百个常用命令的源程序,my god,这简直是一个噩梦!好在我们有嵌入式Linux系统的瑞士军刀——busybox,事情就简单很多。
1、从/下载busybox-1.7.0.tar.bz22、tar xjvf busybox-1.7.0.tar.bz2解包3、修改Makefile文件175 ARCH ?= arm176 CROSS_COMPILE ?= arm-linux-4、make menuconfig配置busyboxbusybox配置主要分两部分。
第一部分是Busybox Settings,主要编译和安装busybox的一些选项。
这里主要需要配置:1)、Build Options -- Build BusyBox as a static binary (no shared libs),表示编译busybox时,是否静态链接C库。
2410配置NFS方式启动内核

2410配置NFS方式启动内核My2410最小根文件系统启动by hipboi ee teamat.the.street@主机:ubuntu 8.10 x86_64编译了busybox之后,就开始考虑制作一个最小的根文件系统了。
还是从NFS启动。
把编译busybox生成的二进制文件放在NFS目录,有bin sbin usr 和linuxrc创建etc 目录,在etc目录新建inittab文件# /etc/inittab::sysinit:/etc/init.d/rcSttyS0::askfirst:-/bin/sh::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount -a -r# Linux100中文网/新建fstab文件#/etc/fstab# device mount-point type options dump fsck orderproc /proc proc defaults 0 0tmpfs /tmp tmpfs defaults 0 0在etc目录下新建子目录init.d及init.d目录下rcS文件mkdir init.dcd ninit.dvim rcS内容为#!/bin/shifconfig eth0 192.168.0.100mount -a保存,退出。
加上可执行属性sudo chmod +x==========================在NFS目录下创建其它目录mkdir dev tmp proc=======================在dev目录下创建必须设备文件sudo mknod console c 5 1sudo mknod ttyS0 c 204 64sudo mknod null c 1 3=====================启动开发板,看到Please press Enter to activate this console.回车,即可进入shell控制台,最小系统启动成功。
Mini2440通过NFS启动系统

Mini2440通过NFS启动系统一开始学习linux嵌入式就是一个摸索的过程,前面似懂非懂的完成了u-boot以及内核的基本功能移植,并且编译、下载至mini2440内存运行,流程走到了文件系统。
参照技术手册,想先移植文件系统,通过NFS启动。
环境介绍:windows xp,超级终端串口连接开发板Vmvare6+redhat9虚拟机IP:192.168.1.24 Submask:255.255.255.0 Gateway192.168.1.1主机IP:192.168.1.100 Submask:255.255.255.0 Gateway192.168.1.1网友发布的虚拟机NFS配置方法:1、miniarm2440说明书第202页中的 /etc/exports ,内容中的/opt/FriendARM/MINI2440/root_nfs *(rw,sync,no_root_sqush) ,将MINI2440应改为mini2440;2、vmware连网要改为桥接方式,VM->settings->Hardware->Netwaor Adapter,在右边将Network Connection,改为Bridged,3、vmware中Edit->Virtual Network Editor->Host Virtual Network Mapping中的 VMnet0选为你的计算机网卡。
4、网卡设置,计算机上网网卡IP:192.168.1.100,子网掩码:255.255.255.0,网关:192.168.1.1,DNS:192.168.1.1redhat9.0中网卡设计IP:192.168.1.24,子网掩码:255.255.255.0,网关:192.168.1.1,DNS:192.168.1.15、进入超级终端Supervivi 后,用以下指令Supervivi>param set linux_cmd_line "console=ttySAC0 root=/dev/nfsnfsroot=192.168.1.24:/opt/FriendlyARM/mini2440/root_nfsip=192.168.1.70:192.168.1.24:192.168.1.24:255.255.255.0:sbc244 :eth0:off" 就可以引导了按照这个配置后产生问题:开发板在上电后在串口输入param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.24:/home/jiaxinxu/mini2440/root_nfsip=192.168.1.70:192.168.1.24:192.168.1.24:255.255.255.0:sbc244 :eth0:off" 后板子会启动并通过NFS加载文件系统:PC机上的/opt//mini2440/root_nfs但是上电后卡在Looking up port RPC 100003/2 ON 192.168.1.2处portmap: server 192.168.1.24 not responding, timed outRoot-NFS: Unable to get mountd port number from server, using default网上搜遍了相关介绍的文章,不得其解。
配置NFS服务器启动mini2440

NFS启动mini2440本文仅是学习的总结,仅供参考。
首先对NFS启动系统有一个感性的认识,NFS就是Network File System网络文件系统,通过NFS启动系统就是文件系统实际在宿主机上,有很大的硬盘空间。
在目标机上可以打开宿主机上的目录,看上去就相当于windows中的文件共享,别人共享的目录你在自己的电脑上可以查看,可以打开里面的文件,就像在你电脑上一样。
接下来开始吧。
硬件连接,串口线连接电脑和mini2440,还有网线把mini2440的网络端口与电脑的网络端口连接。
系统为红帽企业版五第一步:首先查看电脑或虚拟机里是否安装了NFS服务器。
运行# setup,将出现系统配置菜单如图首先进入Firewall configuration中把防火墙关了,把selinux设置成disable,不详细介绍接下来选择系统服务system services回车进入后如图查看有没有[]nfs项,有的话就说明已经安装了NFS服务器。
没有的话在系统光盘,或者是下载的镜像文件中找到NFS服务器的安装包,安装上就行了。
第二步:配置NFS服务器,要修改/etc/exports文件# vi /etc/exports加入允许被其他计算机访问的目录和访问权限原文见可能是空白的,在首行加入如下代码/nfsroot/rootfs 192.168.1.*(rw,sync,no_root_squash)1./nfsroot/rootfs:允许被其他计算机访问的目录,这里是安装文件系统的目录2.192.168.1.*:被允许访问该目录的客户端的地址,这里配置凡是与虚拟机ip(192.168.1.100)处于同一网段的客户机都可以访问3.rw:权限可读可写4.sync:同步写磁盘(async:资料会先暂存与内存当中,而非直接写入硬盘)5.no_root_squash:表示客户端root用户对该目录具备写权限第三步:启动NFS服务器,使用如下命令# /etc/init.d/nfs start或是重启NFS用如下命令# /etc/init.d/nfs restart如上图所示说明NFS服务器正常启动了,接下来制作根文件系统,可参考国嵌实验手册,不详细介绍。
使用BusyBox制作linux根文件系统

使⽤BusyBox制作linux根⽂件系统操作系统:Ubuntu9.04内核版本:linux-2.6.24.7开发板:博创arm2410s交叉编译⼯具:arm-linux-gcc-4.1.1BusyBox:busybox-1.11.1CramFS:CramFS-1.1注意:由于要制作的根⽂件系统使⽤了mdev(BusyBox简化版的udev),因此,需要内核⽀持sysfs、procfs和ramfs(tmpfs)⽂件系统以及hotplug(uevent)事件机制。
浅蓝⾊为命令,橘红⾊为代码和脚步1、准备根⽂件系统使⽤shell脚本create_rootfs.sh,建⽴根⽂件系统的⽬录框架lingd@ubuntu:~/arm2410s$ vi create_rootfs.shcreate_rootfs.sh 内容如下:#!/bin/shecho "------Create rootfs directons......"mkdir rootfscd rootfsecho "--------Create root,dev......"mkdir root dev etc bin sbin mnt sys proc lib home tmp var usrmkdir usr/sbin usr/bin usr/lib usr/modulesmkdir mnt/usb mnt/nfs mnt/etc mnt/etc/init.dmkdir lib/moduleschmod 1777 tmpcd ..echo "-------make direction done---------"为 create_rootfs.sh添加执⾏权限lingd@ubuntu:~/arm2410s$ chmod a+x create_rootfs.sh执⾏create_rootfs.sh,建⽴根⽂件系统的⽬录框架lingd@ubuntu:~/arm2410s$ ./create_rootfs.shlingd@ubuntu:~/arm2410s$ cd rootfslingd@ubuntu:~/arm2410s/rootfs$ lsbin dev etc home lib mnt proc root sbin sys tmp usr var2、创建设备⽂件mdev 是通过 init 进程来启动的,在使⽤ mdev 构造 /dev ⽬录之前,init ⾄少要⽤到设备⽂件/dev/console、/dev/null,所以需要事先建⽴这两个设备⽂件:lingd@ubuntu:~/arm2410s/rootfs$ cd devlingd@ubuntu:~/arm2410s/rootfs/dev$ sudo mknod -m 660 console c 204 64[sudo] password for lingd:lingd@ubuntu:~/arm2410s/rootfs/dev$ sudo mknod -m 660 null c 1 3lingd@ubuntu:~/arm2410s/rootfs/dev$ ls -ltotal 0crw-rw---- 1 root root 5, 1 2010-04-02 15:49 consolecrw-rw---- 1 root root 1, 3 2010-04-02 15:50 null注意:本来console的主次设备号应为5和1.但是因为init在执⾏完/etc/init.d/rcS脚本后,就会在⼀个控制台上,按照inittab的指⽰开⼀个shell(或者是开getty+login,这样⽤户就会看到提⽰输⼊⽤户名的提⽰符)。
用busybox做一个简单的文件系统

用busyb ox做一个简单的文件系统利用Busy Box做一个简单的根文件系统1、下载Busy Box源代码包 http://busybo /2、找个地方解压缩包,例如tar-xjvf busybo x-1.00.tar.bz23、进入busy box的文件夹,使用make menuco nfig进入设置[attach]244[/attach]4、在build option s中有一些选项要注意BuildBusyBo x as a static binary(no shared libs):如果选择了这个选项,那么Busy Box 将被静态编译,也就是不需要动态链接库的支持就能运行,但是这样会使编译后文件的体积增大。
Do you want to buildBusyBo x with a CrossCompil er:如果你的bu sybox将要运行机器与编译主机的体系结构不同,比如s3c2410是A RM,与我们的X86主机芯片系统结构不一样,那么这个一定要选上,并且在 CrossCompil er prefix中写上交叉编译器的名字,比如ARM用arm-linux-[attach]245[/attach]5、在Insta llati on Option s中 BusyBo x instal latio n prefix就是在编译完后运行m ake instal l 时,busybo x将被安装的地址。
[attach]246[/attach]6、其它的选项按照默认选项就行,当然自己也可以看看有没有需要,把其它一些命令加入到编译选项中来7、完成后保存,然后运行ma ke8、编译没有问题后运行ma ke instal l这样编译好的bus ybox就会自动安装到Busy Box instal latio n prefix中,一般是三个文件夹bin sbin usr和一个文件lin uxrc。
如何用busybox构建一个最小根文件系统

用busybox构建一个最小根文件系统busybox是所有命令的集合体,是一个工具集,包括了我们常用的工具。
一、一个最小根文件系统包括:(1) /dev/console/dev/null(2) init => busybox(3) /etc/inittab(4) 配置文件指定的应用程序(5) C库二、执行步骤:(一)配置编译busybox(1)下载源码:busybox-1.7.0.tar.bz2a.创建一个文件firstfs,将该文件保存其中b.解压cd firstfstar xjf busybox-1.7.0.tar.bz2执行上述命令后,解压出来busybox-1.7.0文件夹,c.配置在busybox-1.7.0目录下执行“make menuconfig”命令即可进入配置界面。
一般选择默认配置就行,现添加一个TAB补全功能:Busybox Settings------>Busybox Library Turning------>[*]Tab completion用“+/-”选好选项,输入y ,然后按tab选exit(2)编译busyboxa.修改busybox目录下的Makefile执行命令:vi Makefile ,然后输入“/CROSS”找到(“+/-”选择行)CROSS_COMPILE ?=arm-linux-输入“:wq”保存退出b.执行“make”命令编译busybox编译完成,出现如下界面:(3)安装busybox在交叉编译环境,千万不要直接执行make install,这样会破坏我们的操系统。
创建一个新文件夹first_fsmake CONFIG_PREFIX=first_fs install就会在这个文件夹下面生成bin,sbin,usr,linuxrc四个文件目录。
(二) 创建设备文件:/dev/console 和/dev/null(查看ls /dev/console /dev/null –l)mkdir devcd dev/sudo mknod console c 5 1 (创建终端字符设备主为5 次为1)sudo mknod null c 1 3(可以查看:ls –l)(三) 创建配置文件/etc/inittab (最简单基本的配置文件:标准输入、输出和错误信息定义到console)init进程根据/etc/inittab文件来创建其他子进程,etc目录下的内容取决与要运行的程序,本次只需要创建3个文件:etc/inittab, etc/init.d/rcS, etc/fstab。
ARM开发板如何挂载NFS开发环境的方法步骤(mini2440无盘启动)

ARM开发板如何挂载NFS开发环境的方法步骤(mini2440无盘启动)这个部分还是比较不好弄的。
想象要是不能通过nfs挂载网盘的话,他提出这个方法也就没什么用了。
这样看的话,是比较完美了。
在你实验之前你可以现挂载一下(用busybox生成文件系统后不用编译就可以了)确认没问题在编译下载镜像文件。
还有在作qt文件应用程序的时候很大用这种方法,相信不用考虑编译和裁减的情况下就可以直接运行了。
首先介绍一下我的开发环境:PC环境是ubuntu9。
04,开发板为友善之臂的MINI2440主机IP:192.168.50.72 网关:192.168.50.1 子网掩码:255.255.255.0开发板IP:192.168.50.168 网关:192.168.50.1 子网掩码:255.255.255.0为了能和主机建立起连接我必须得把开发板IP改成和主机一个网段的.这里首先要说明的是ubuntu的静态IP设置问题:默认安装完成后,右上角的网络配置上wired ..和eth0为灰色。
不能点选。
然后禁用networdmanager启动network以太网设置静态IP的时候,不管怎么设置,子网掩码都和网关一样,比如说:地址:192.168.0.22子网掩码: 192.168.0.1 //不管怎么输入255.255.255.0 ,都不行!网关:192.168.0.1 //这里改了255.255.255.0的话,上面就也成255.255.255.0了。
(auto ethernet是可以联上网的)。
所以就上GG找答案,找解决方法。
进入FC10,执行终端命令(也可以用VI修改)$ su -c ‘gedit /etc/sysconfig/networking/devices/ifcfg-eth0′直接修改文件中的子网掩码信息就可以代码为:# Broadcom Corporation NetXtreme BCM5752 Gigabit Ethernet PCI ExpressDEVICE=eth0HW ADDR=00:16:e6:db:c2:96ONBOOT=yesBOOTPROTO=static //这个应该是‖static‖,而不是―dhcp‖或―none‖;USERCTL=yesPEERDNS=yesIPV6INIT=noNM_CONTROLLED=yes//这个应该是―yes‖,如不修改,链接仍是disconnected;TYPE=EthernetNETMASK=255.255.255.0IPADDR=192.168.50.72GA TEW AY=192.168.50.1然后重新激活下网卡就可以了.#service network restart设置完成后,右上角的网络配置上System eth0与auto ethernet就可以点选了.需要说明的是因为我之前没有设置静态IP之前通过NFS 启动系统启动不了.连接主机和开发板我选择了串口线和网线连接起了主机和开发板连接好电源,串口线,网线,打开串口终端配置minicom(在FC10终端输入命令minicom -s)进入到minicom配置界面后选择:Serial port setup然后按照下面的设置下就OK了A – Serial Device : :/dev/ttyS0B – Lockfile Location : /var/lockC – Callin Program :D – Callout Program :E – Bps/Par/Bits : 115200 8N1F – Hardware Flow Control : NoG – Software Flow Control : No建立和配置NFS 服务(1)设置共享目录运行命令#gedit /etc/exports编辑nfs 服务的配置文件(注意:第一次打开时该文件是空的),添加以下内容:/opt/FriendlyARM/mini2440/root_qtopia *(rw,sync,no_root_squash)其中:/opt/FriendlyARM/mini2440/root_qtopia 表示nfs 共享目录,它可以作为开发板的根文件系统通过nfs 挂接;* 表示所有的客户机都可以挂接此目录rw 表示挂接此目录的客户机对该目录有读写的权力no_root_squash 表示允许挂接此目录的客户机享有该主机的root 身份(2)通过命令启动和停止nfs 服务在命令行下运行:#/etc/init.d/nfs restart这将启动nfs 服务,可以输入以下命令检验nfs 该服务是否启动。
JZ2440开发板网络文件系统搭建nfs

JZ2440网络文件系统nfs搭建问题描述:在驱动程序开发阶段,会涉及到频繁的编译调试程序,如果每次都把驱动程序编译到内核去,会浪费大量的时间。
所以通常把驱动程序编译成.ko的模块动态加载到内核,这样可以省去编译整个内核的过程,大大提高了驱动开发的效率。
那么虚拟机上编译好的驱动模块怎样传递给目标机(开发板)呢,就是通过本文介绍的网络文件系统,PC机共享出一个网络文件系统给开发板,开发板就相当于多了一个本地文件夹一样。
原料:1、JZ2440开发板+已经移植好的linux系统;2、USB转UART连接线一根;3、网线一根;4、笔记本电脑安装vmware + Ubuntu;步骤:1、设置开发板IP地址,使开发板与虚拟机在同一个局域网。
这里采用的是笔记本无线上网,有限网络连接到开发板,该部分不清楚的可以参考我之前的笔记《开发板通过笔记本的有线网络上网》。
a)开发板正常启动后,通过Uart中断:# ifconfigeth0 Link encap:Ethernet HWaddr 00:60:6E:33:44:55inet addr:192.168.1.17Bcast:192.168.1.255 Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:28 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:2776 (2.7 KiB) TX bytes:0 (0.0 B)Interrupt:51 Base address:0xa000b)查看虚拟机上的IP地址:book@book-desktop:~$ ifconfigeth3 Link encap:Ethernet HWaddr 00:0c:29:e4:a7:e1inet addr:192.168.2.102Bcast:192.168.2.255 Mask:255.255.255.0inet6 addr: fe80::20c:29ff:fee4:a7e1/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:3015 errors:0 dropped:0 overruns:0 frame:0TX packets:2173 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:940451 (940.4 KB) TX bytes:241758 (241.7 KB)Interrupt:18 Base address:0x2024eth4 Link encap:Ethernet HWaddr 00:0c:29:e4:a7:ebinet addr:192.168.3.54 Bcast:192.168.3.255 Mask:255.255.255.0inet6 addr: fe80::20c:29ff:fee4:a7eb/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:4657 errors:0 dropped:0 overruns:0 frame:0TX packets:1076 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:466534 (466.5 KB) TX bytes:182556 (182.5 KB)Interrupt:17 Base address:0x20a4c)将开发板ip改成192.168.2.100# ifconfig eth0 192.168.2.100# ifconfigeth0 Link encap:Ethernet HWaddr 00:60:6E:33:44:55inet addr:192.168.2.100Bcast:192.168.2.255 Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:28 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:2776 (2.7 KiB) TX bytes:0 (0.0 B)Interrupt:51 Base address:0xa000d)开发板和虚拟机互ping一下:book@book-desktop:~$ ping 192.168.2.100…64 bytes from 192.168.2.100: icmp_seq=2 ttl=63 time=0.720 ms (DUP!)64 bytes from 192.168.2.100: icmp_seq=2 ttl=64 time=0.975 ms (DUP!)64 bytes from 192.168.2.100: icmp_seq=2 ttl=63 time=0.978 ms (DUP!)^C 记得ctrl + C来终止--- 192.168.2.100 ping statistics ---2 packets transmitted, 2 received, +4 duplicates, 0% packet loss, time 1001msrtt min/avg/max/mdev = 0.719/1.955/4.201/1.570 ms# ping 192.168.2.102…64 bytes from 192.168.2.102: seq=2 ttl=64 time=1.446 ms (DUP!)64 bytes from 192.168.2.102: seq=2 ttl=63 time=1.661 ms (DUP!)64 bytes from 192.168.2.102: seq=2 ttl=64 time=1.871 ms (DUP!)--- 192.168.2.102 ping statistics ---3 packets transmitted, 3 packets received, 7 duplicates, 0% packet lossround-trip min/avg/max = 1.114/1.598/2.095 ms以上结果表明虚拟机和开发板的网络已经连上。
busybox制作根文件系统

使用Busybox制作CRAMFS文件系统成功来源: ChinaUnix博客日期:2008.08.20 16:16(共有条评论) 我要评论这几天在使用Busybox制作FS2410开发板的CRAMFS文件系统,由于开始下载的是Busybox1.10,每次下载到开发板中,然后启动总是出现”Failed to execute /linuxrc.Attempting defaults...“的错误。
到网上查了大量的资料,并做了大量的实验,发现都不能成功。
今天下午突然发现一个能够仿真arm的软件qemu,在Ubuntu中的安装方法:sudo apt-get install qemu,Busybox编译后,可以通过arm仿真来测试:qemu-arm ./busybox ls,如果成功,则会显示当前目录下的文件列表。
我对Busybox1.10编译后的结果进行测试,发现出现错误:qemu: unhandled CPU exception 0x8 - abortingR00=001c596c R01=00000000 R02=001c5960 R03=00000001R04=000cbf94 R05=00000000 R06=00000000 R07=00000000R08=000cbfdc R09=000cbf94 R10=00000000 R11=00000000R12=ffff0fff R13=b7d6c470 R14=000d4588 R15=ffff0fa0PSR=20000010 --C- A usr32 ffff0fa0s00=00000000( 0) s01=00000000( 0) d00=0000000000000000( 0)s02=00000000( 0) s03=00000000( 0) d01=0000000000000000( 0)s04=00000000( 0) s05=00000000( 0) d02=0000000000000000( 0)s06=00000000( 0) s07=00000000( 0) d03=0000000000000000( 0)s08=00000000( 0) s09=00000000( 0) d04=0000000000000000( 0)s10=00000000( 0) s11=00000000( 0) d05=0000000000000000( 0)s12=00000000( 0) s13=00000000( 0) d06=0000000000000000( 0)s14=00000000( 0) s15=00000000( 0) d07=0000000000000000( 0)s16=00000000( 0) s17=00000000( 0) d08=0000000000000000( 0)s18=00000000( 0) s19=00000000( 0) d09=0000000000000000( 0)s20=00000000( 0) s21=00000000( 0) d10=0000000000000000( 0)s22=00000000( 0) s23=00000000( 0) d11=0000000000000000( 0)s24=00000000( 0) s25=00000000( 0) d12=0000000000000000( 0)s26=00000000( 0) s27=00000000( 0) d13=0000000000000000( 0)s28=00000000( 0) s29=00000000( 0) d14=0000000000000000( 0)s30=00000000( 0) s31=00000000( 0) d15=0000000000000000( 0)FPSCR: 00000000qemu: uncaught target signal 6 (Aborted) - exiting说明,所编译得到的busybox不能使用在arm处理器,由于时间关系就放弃了使用Buxybox1.10版本。
nfs挂载方法

nfs挂载方法NFS挂载方法什么是NFS挂载NFS(网络文件系统)是一种用于在不同计算机上共享文件的协议,它允许在不依赖本地硬盘空间的情况下,将远程服务器上的文件系统挂载到本地系统。
这意味着你可以像访问本地文件一样访问远程服务器上的文件,实现共享和协作。
在这篇文章中,我们将详细介绍NFS挂载的各种方法。
方法一:命令行挂载1.在本地系统上使用以下命令安装NFS客户端:sudo apt-get install nfs-common2.创建一个本地目录用于挂载NFS共享:sudo mkdir /mnt/nfs3.使用以下命令将远程NFS共享挂载到本地目录:sudo mount -t nfs :/path/to/share /mnt/nfs其中,`是远程服务器的IP地址,/path/to/share`是共享文件在远程服务器上的路径。
4.现在,你可以通过访问/mnt/nfs目录来访问远程NFS共享了。
方法二:/etc/fstab配置挂载1.打开/etc/fstab文件:sudo nano /etc/fstab2.在文件的末尾添加以下行,以将NFS共享添加到挂载列表中::/path/to/share /mnt/nfs nfs defaults 0 0其中,`是远程服务器的IP地址,/path/to/share`是共享文件在远程服务器上的路径。
3.保存并关闭文件。
4.使用以下命令重新加载fstab文件以使配置生效:sudo mount -a现在,NFS共享将在系统启动时自动挂载到/mnt/nfs目录。
方法三:自动挂载脚本如果你希望在系统启动时自动挂载NFS共享,你可以创建一个自动挂载脚本。
1.创建一个新的脚本文件:sudo nano /etc/network//nfs-mount2.在该文件中输入以下内容:#!/bin/bashsudo mount -t nfs :/path/to/share /mnt/nfs注意替换:/path/to/share为实际的远程NFS共享路径。
nfs挂载根文件系统

使用NFS挂载根文件系统,在开发阶段有很多的好处,对根文件系统进行修改后不用每次都下载到NandFlash中,可以把制作的根文件系统放到主机中的NFS输出目录中,在正式成为产品以后在烧写到开发板中,这样可以方便很多,也可以把编译天生的内核也放到NFS 输出目录中这样也可以引导内核,很是方便,还等什么开始吧!NFS服务器真个配置已经在上一篇文章中写到过了。
U-boot中使用tftp协议也在另一篇文章中。
按道理来说NFS命令也是可以是使用的,由于都是基于网卡的,只要网卡驱动移植的没有题目,NFS也就直接可以使用了,不过在我这里可是行不通,在使用NFS传输文件中,一直出现下面的错误类型,提示挂载不上:U-Boot@mini2440]#nfs 0x 10.27.10.48:/home/ubuntu/kernel/fs/u-boot.bindm9000 i/o: 0x, id: 0xa46DM9000: running in 16 bit modeMAC: 08:00:3e:26:0a:5boperating at 100M full duplex modeUsing dm9000 deviceFile transfer via NFS from server 10.27.10.48; our IP address is 10.27.10.23Filename '/home/ubuntu/kernel/fs/u-boot.bin'.Load address: 0xLoading: *** ERROR: Cannot mount //仅仅提示挂载不上可还有下面的错误:[U-Boot@mini2440]#nfs 0x 10.27.10.48:/home/ubuntu/kernel/fs/u-boot.bindm9000 i/o: 0x, id: 0xa46DM9000: running in 16 bit modeMAC: 08:00:3e:26:0a:5boperating at 100M full duplex modeUsing dm9000 deviceFile transfer via NFS from server 10.27.10.48; our IP address is 10.27.10.23Filename '/home/ubuntu/kernel/fs/u-boot.bin'.Load address: 0xLoading: *** ERROR: Cannot mount*** ERROR: Cannot umount //这里还提示了不能卸载在网上查找资料,出现Cannot umount错误的解决方法是修改u-boot-2009.08/net/nfs.c 文件,在大约453行四周的位置:static intnfs_umountall_reply (uchar *pkt, unsigned len){struct rpc_t rpc_pkt;debug("%s\n", __func__);memcpy ((unsigned char *)&rpc_pkt, pkt, len);//if (ntohl(rpc_pkt.u.reply.id) != rpc_id) //原来的这一行修改成下面的一行if ((ntohl(rpc_pkt.u.reply.id)+1) != rpc_id)return -1;if (rpc_pkt.u.reply.rstatus ||..................}可是在我这里修改完以后还是不可以使用,一样出现上面的错误。
使用Busybox制作根文件系统

使用Busybox制作根文件系统1、BusyBox简介BusyBox 是很多标准 Linux 工具的一个单个可执行实现。
BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet;有些人将 BusyBox 称为 Linux 工具里的“瑞士军刀”。
BusyBox 揭露了这样一个事实:很多标准 Linux 工具都可以共享很多共同的元素。
例如,很多基于文件的工具(比如 grep 和 find)都需要在目录中搜索文件的代码。
当这些工具被合并到一个可执行程序中时,它们就可以共享这些相同的元素,这样可以产生更小的可执行程序。
实际上,BusyBox 可以将大约 3.5MB 的工具包装成大约 200KB 大小。
这就为可引导的磁盘和使用 Linux 的嵌入式设备提供了更多功能。
我们可以对 2.4 和 2.6 版本的 Linux 内核使用 BusyBox。
我们平时用的那些Linux命令就好比是分立式的电子元件,而BusyBox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍,在嵌入式linux应用中,BusyBox有非常广的应用。
2、BusyBox的用法可以这样用BusyBox#busybox ls他的功能就相当运行ls命令最常用的用法是建立指向BusyBox的链接,不同的链接名完成不同的功能.#ln -s busybox ls#ln -s busybox rm#ln -s busybox mkdir然后分别运行这三个链接:#./ls#./rm#./mkdir就可以分别完成了ls、rm和mkdir命令的功能.虽然他们都指向同一个可执行程序BusyBox,但是只要链接名不同,完成的功能就不同, BusyBox就是这么的神奇。
3、配置编译BusyBox下载首先需要下载BusyBox源代码。
友善之臂mini2440配置方案

5.3 建立交叉编译环境在Linux 平台下,要为开发板编译内核,图形界面Qtopia,bootloader,还有其他一些应用程序,均需要交叉编译工具链。
之前的系统,要使用不同的编译器版本才能正常编译各个部分,因此要在开发过程不断切换设置,这十分不利于初学者使用,也降低了开发的效率;自从Linux-2.6.29 开始,我们把交叉编译器统一为arm-linux-gcc-4.3.2,下面是它的安装设置步骤。
Step1:将光盘目录linux\中的arm-linux-gcc-4.3.2.tgz 复制到某个目录下如tmp\,然后进入到该目录,执行解压命令:#cd \tmp#tar xvzf arm-linux-gcc-4.3.2.tgz –C /注意:C 后面有个空格,并且C 是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思。
执行该命令,将把arm-linux-gcc 安装到/usr/loca/arm/4.3.2 目录。
解压过程如图所示:Step2:把编译器路径加入系统环境变量,运行命令#gedit /root/.bashrc编辑/root/.bashrc 文件,在最后一行export PATH=$PATH:/usr/local/arm/4.3.2/bin如图,保存退出。
重新登录系统(不必重启机器,开始->logout 即可),使以上设置生效,在命令行输入arm-linux-gcc –v,会出现如下信息,这说明交叉编译环境已经成功安装。
5.4 解压安装源代码及其他工具本小节将解压安装开发学习过程所用到的全部源代码以及其他一些小工具,这包括:- linux-2.6.29 内核源代码- 嵌入式图形界面Qropia 源代码(分为x86 和arm 平台两个版本)- busybox-1.13 源代码- linux 编程示例源代码(均为友善之臂自主开发并开放)- linux 下的开源bootloader(vivi 和u-boot)- 其他开源软件源代码,如boa(web server), madplay(一个命令行mp3 播放器)- 目标文件系统目录- 目标文件系统映象制作工具mkyaffsimage- 图形界面的Linux logo 制作工具logo_maker注意:所有的源代码和工具都是通过解压方式安装的,所有的源代码均使用统一的编译器arm-linux-gcc-4.3.2 编译(见上一节)下面是详细的解压安装过程,并有简要的介绍。
使用uboot去挂载根文件系统

1、根文件系统的制作1)创建根文件系统主目录:mkdir rootfs2)创建根文件系统的子目录cd rootfsmkdir bin dev etc lib proc sbin sys usr mnt tmp var 3)然后创建usr下的子目录mkdir usr/bin usr/lib usr/sbin lib/modules4)创建设备文件内核在引导时设备节点console,null必须存在cd dev/注:该目录为/mini2440/nfsroot/rootfs 下的dev目录mknod –m 666 console c 5 1mknod -m 666 null c 1 3c:表明类型为字符设备第一个数字(5,1):主设备号第二个数字(1,3):次设备号这两个设备文件设备号是固定的5)安装etcetc目录主要是一些启动时的脚本文件一般不需要修改tar etc.tar.gz –C /xxx/rootfs这个命令可能不给用改为:tar xvzf etc.tar.gz –C /xxx/rootfs6)编译内核模块内核模块保存在lib下面的module下配置内核:*直接编译到zimage m不链接到zimage而是编译成模块到.o就停住进入Linux内核目录(linux-2.6.32.2)make modules ARCH=arm CROSS_COMPILE=arm-linux-添加了ARCH=arm表示现在编译的是arm架构的内核CROSS_COMPILE=arm-linux-表示使用交叉编译工具链安装内核模块到根文件系统:make modules_install ARCH=armINSTALL_MOD_PATH=/xxx/rootfs7)配置busybox因为Linux很多命令都是通过软连接实现的,所以无法直接将这些命令复制到根文件系统中。
Busybox是一个工具集合,根文件系统很多命令都可以通过busybox编译得到,如命令ls,cd,mkdir。
我的mini2440根文件系统及使用nfs挂载-推荐下载

Build Options ---> [*]Build Busybox as a static binary(no shared libs) [*]Build with Large File Support (for accessing files > 2GB)
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线产中0不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资2负料2,荷试而下卷且高总可中体保资配障料置各试时类卷,管调需路控要习试在题验最到;大位对限。设度在备内管进来路行确敷调保设整机过使组程其高1在中正资,常料要工试加况卷强下安看与全22过,22度并22工且22作尽22下可护都能1关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编试技5写、卷术重电保交要气护底设设装。备备置管4高调、动线中试电作敷资高气,设料中课并技3试资件且、术卷料中拒管试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
如何使用Busybox做一个小巧的Linux操作系统

使用Busybox做一个小巧的Linux操作系统1.基础知识一个操作系统可以简单的抽象为,引导程序内核文件系统。
vmlinuz是Linux 内核的镜像文件,可以被引导程序加载,从而启动Linux系统。
initrd的全称是boot loader initialized RAM disk,它是系统启动时所使用的根文件系统映像文件,这个文件系统中包含几个驱动模块,用来装载实际的根文件系统,比如一个IDE或SCSI硬盘的驱动模块,内核装入这个模块之后用它来驱动硬盘,挂接硬盘到ramdisk的某个子目录,然后再用其中的pivot_root命令,将硬盘文件系统变成根文件系统,并开始执行init进程,此时init ram disk被umount,寿终正寝。
由此可见,我们可以用vmlinuz initrd.img做一个文件系同长驻内存的迷你Linux。
现在进入正题了:2.编译内核cd /usr/src/....----进入内核源代码目录,没有的话去官方网站,随便下make menuconfig-----配置编译选项请注意一定加入RAM disk support 和initial RAM disk(initrd) support 的支持(在block device中)。
另外最好将ext3文件系统编入内核,不要编成模块。
配置完毕后保存为.config(默认)make bzImage----编译在许多内核编译参考中还有make modulesmake modules_install两步但我们这里没有加入对modules的支持,所以不需要。
生成的bzImage文件在usr/src/linux/arch/.../boot中,省略的根据你的机器架构决定,make过程中会有提示,比如我的是x86_64. 注意这个文件非常重要,其实就是我们最终的vmlinuz.3.busyboxbusybox是一个集成了一百多个最常用linux命令和工具的软件,它甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.我们平时用的那些linux命令就好比是分力式的电子元件,而busybox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍,在嵌入式linux应用中,busybox有非常广的应用,另外,大多数linux发行版的安装程序中都有busybox的身影,安装linux的时候案ctrl alt F2就能得到一个控制台,而这个控制台中的所有命令都是指向busybox的链接.在我们的迷你Linux中,需要的也正是busybox的命令和工具。
arm9板配置NFS方式启动2410

Arm9开发板配置NFS方式启动2410,2440类似(平台相同的情况下方法类似)主机:ubuntu 8.10 x86_64 交叉编译器:/usr/local/arm/2.95.3/arm-linux-内核:linux-2.4.18-rmk7-pxa1-mz4.tar.bz2主机ip:192.168.0.234说明:原始的vivi只支持串口下载,速度较慢,下载内核就需要很长时间,而且若修改根文件系统每次都需要重新烧写,不仅时间长,而且影响板子寿命。
所以,当内核启动起来后,我们就可以利用linux强大的网络功能通过NFS来加载根文件系统,这样板子的存储空间变得非常大,这个概念有点像无盘工作站。
=================================首先,主机开通NFS服务,默认没有安装相关软件包sudo apt-get install nfs-kernel-server安装nfs-kernel-server时,apt会自动安装nfs-common和portmap这样,宿主机就相当于NFS Server配置NFS:----------------------编辑/etc/default/portmap 保证-i 127.0.0.1是注释掉的-----------------------编辑/etc/hosts.deny禁止任何host(主机)能和你的NFS服务器进行NFS 连接,加入:portmap:ALLlockd:ALLmountd:ALLrquotad:ALLstatd:ALL---------------------编辑/etc/hosts.allow允许那些你想要的主机和你的NFS服务器建立连接。
下列步骤将允许任何IP地址以192.168.0开头(因为我的ip是192.168.0.234)的主机(这里是我们的开发板)连接到NFS服务器上,也可以指定特定的IP地址,加入:### NFS DAEMONSportmap: 192.168.0.lockd: 192.168.0.rquotad: 192.168.0.mountd: 192.168.0.statd: 192.168.0.说明:--------------------------/etc/hosts.deny 和/etc/hosts.allow 设置对portmap的访问. 采用这两个配置文件有点类似黑名单,白名单的意思. 先在/etc/hosts.deny 中禁止所有用户对portmap的访问.再在/etc/hosts.allow 中允许某些特殊用户对portmap的访问。
FL2440根文件系统制作

根文件系统制作FL2440在移植完linux内核后,需要移植根文件系统才能正常的启动开发板上面的Linux系统。
下面介绍一下如何制作根文件系统。
首先要明确几个问题,首先,为什么要制作根文件系统?根文件系统是什么?文件系统又是什么?如何制作根文件系统?这里介绍的是制作方法,所以下面只回答最后一个问题。
至于其他问题,网上的资料以及相关的书籍上都有很详细的介绍,并且不是一句两句就能回答出来的,这里不多罗嗦。
开发板:FL2440SDRAM:64M NAND FLASH:256M环境:虚拟机vmware7.1.2.14247绿色版(网上到处是)、红帽企业版5交叉编译链:arm-linux-gcc-4.3.2(这里选择这个,低版本的比如3.4.1的等,在编译的过程中可能会提示很多错误)使用的工具:busybox-1.19.0.tar.bz2这里先改正一下错误,上次的linux-2.6.28.7内核移植到FL2440开发板时的触屏驱动有问题,需要改正几个错误,否则校正 3.5寸的屏幕时可能会出现错误,FL2440光盘中的linux-2.6.28的触屏驱动也存在此问题。
触屏校正有问题,校正不过去,需要修改源码中的触屏驱动才能解决。
文件:drivers/input/touchscreen/s3c2410_ts.cstatic irqreturn_t stylus_updown(int irq, void *dev_id)//172行函数中的data0 = readl(base_addr+S3C2410_ADCDA T0);//178行data1 = readl(base_addr+S3C2410_ADCDA T1);//179行修改为:data1 = readl(base_addr+S3C2410_ADCDA T0);//lysysjwdata0 = readl(base_addr+S3C2410_ADCDA T1);//lysysjwstatic irqreturn_t stylus_action(int irq, void *dev_id)//194行函数中的data1 = readl(base_addr+S3C2410_ADCDA T0);//199行data0 = readl(base_addr+S3C2410_ADCDA T1);//200行修改为data1 = readl(base_addr+S3C2410_ADCDA T0);//lysysjwdata0 = readl(base_addr+S3C2410_ADCDA T1);//lysysjw下面开始介绍根文件系统制作过程。
使用uboot去挂载根文件系统(优推内容)

1、根文件系统的制作1)创建根文件系统主目录:mkdir rootfs2)创建根文件系统的子目录cd rootfsmkdir bin dev etc lib proc sbin sys usr mnt tmp var 3)然后创建usr下的子目录mkdir usr/bin usr/lib usr/sbin lib/modules4)创建设备文件内核在引导时设备节点console,null必须存在cd dev/注:该目录为/mini2440/nfsroot/rootfs 下的dev目录mknod –m 666 console c 5 1mknod -m 666 null c 1 3c:表明类型为字符设备第一个数字(5,1):主设备号第二个数字(1,3):次设备号这两个设备文件设备号是固定的5)安装etcetc目录主要是一些启动时的脚本文件一般不需要修改tar etc.tar.gz –C /xxx/rootfs这个命令可能不给用改为:tar xvzf etc.tar.gz –C /xxx/rootfs6)编译内核模块内核模块保存在lib下面的module下配置内核:*直接编译到zimage m不链接到zimage而是编译成模块到.o就停住进入Linux内核目录(linux-2.6.32.2)make modules ARCH=arm CROSS_COMPILE=arm-linux-添加了ARCH=arm表示现在编译的是arm架构的内核CROSS_COMPILE=arm-linux-表示使用交叉编译工具链安装内核模块到根文件系统:make modules_install ARCH=armINSTALL_MOD_PATH=/xxx/rootfs7)配置busybox因为Linux很多命令都是通过软连接实现的,所以无法直接将这些命令复制到根文件系统中。
Busybox是一个工具集合,根文件系统很多命令都可以通过busybox编译得到,如命令ls,cd,mkdir。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常见的文件系统有yaffs2, jffs2,他们是适用于根文件系统镜像存在于NAND Flash上的情况。
而传统的Linux EXT2/EXT3文件系统格式适用于传统的block设备,比如SD卡或者硬盘。
cramfs同时适用于以上两种情况。
其不管采用哪种格式,内核都必须支持它,这是根文件系统正确挂载的前提条件。
其内核支持它是指:在对内核进行编译的时候必须加入对相应文件系统的支持。
由于在内核没有加入对yaffs2的支持,因此在最后根据mkyaffs2image制作yaffs2类型的根文件系统,在加载之前,必须要对linux内核进行打yaffs2的补丁。
将yaffs文件系统编译进内核。
之后在启动linux内核时候才能识别yaffs2文件系统。
我在自己的mini2440开发板上面通过nfs来加载制作好的"根文件系统",这里的"根文件系统"指的是:没有经过像mkyaffs2image工具转化的原始的类linux目录结构的文件。
其文件包括Linux启动时所必须的目录和关键性的文件。
nfs便于加载及验证我们制作的文件系统的正确性。
其加载时文件系统不用读写flash。
*******************************第一步:下载busybox并编译********************************下载busybox-1.19.2.tar.bz2/downloads/解压并进入目录# tar jxvf busybox-1.19.2.tar.bz2# cd busybox-1.19.2修改Makefile# gedit Makefile &把164 行修改为:CROSS_COMPILE = arm-linux-把190 行修改为:ARCH = arm配置# make menuconfig 或者make xconfig(为图形化界面)在Busybox Settings->Build Options之下选择Build BusyBox as a static binary (no shared libs) (STATIC)以静态的方式来编译busybox。
其他的比如安装目录及常用命令我没有设置,采用的是默认值。
如果有需要再添加。
编译# make安装# make install在busybox-1.19.2目录下可以找到_install子目录,其中就是编译好的命令。
[busybox-1.19.2]$lltotal 12drwxr-xr-x 2 root root 4096 Feb 9 14:43 binlrwxrwxrwx 1 root root 11 Feb 9 14:43 linuxrc -> bin/busyboxdrwxr-xr-x 2 root root 4096 Feb 9 14:43 sbindrwxr-xr-x 4 root root 4096 Feb 9 14:43 usr并将以上文件copy到/mini2440/rootfs目录下面*******************第二步:建立所需的目录及文件*************************1:建立目录使用以下脚本[root@centos /mini2440]$cat mkDir.sh //具有执行权限#!/bin/shecho "------Create rootfs directons start...--------"mkdir /mini2440/rootfscd /mini2440/rootfsecho "--------Create root,dev....----------"mkdir root dev etc boot tmp var sys proc lib mnt home usrmkdir etc/init.d etc/rc.d etc/sysconfigmkdir usr/sbin usr/bin usr/lib usr/modulesecho "make node in dev/console dev/null"mknod -m 600 dev/console c 5 1mknod -m 600 dev/null c 1 3mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/tempmkdir var/lib var/lock var/run var/tmpchmod 777 tmpchmod 777 var/tmpecho "-------make direction done---------"上面shell中建立的目录有的没有使用。
执行问脚本目录结构如下:[root@centos /mini2440/rootfs]$lsboot dev etc home lib mnt proc root sys tmp usr var [root@centos /mini2440/rootfs]$tree.|-- boot|-- dev| |-- console| `-- null|-- etc| |-- init.d| |-- rc.d| `-- sysconfig|-- home|-- lib|-- mnt| |-- data| |-- etc| |-- jffs2| |-- temp| `-- yaffs|-- proc|-- root|-- sys|-- tmp|-- usr| |-- bin| |-- lib| |-- modules| `-- sbin`-- var|-- lib|-- lock|-- run`-- tmp28 directories, 2 files:2:修改与添加系统初始化脚本都在/mini2440/rootfs目录下面进行(1)etc/inittab 系统init进程配置文件,并更改权限chmod +x inittab::sysinit:/etc/init.d/rcS::askfirst:-/bin/sh #没有这就不行,就不能打开console控制台。
::restart:/sbin/init::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount -a -r::shutdown:/sbin/swapoff -a(2)etc/init.d/rcS系统启动加载项文件,并更改权限chmod +x etc/init.d/rcS #!/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binrunlevel=Sprevlevel=Numask 022export PATH runlevel prevlevelmount -amkdir /dev/ptsmount -t devpts devpts /dev/pts #用于telnet登录时使用echo /sbin/mdev > /proc/sys/kernel/hotplugmdev -smkdir -p /var/lock/bin/hostname -F /etc/sysconfig/HOSTNAME(3)etc/fstab 系统挂载文件系统列表文件#device mount-point type option dump fsck orderproc /proc proc defaults 0 0sysfs /sys sysfs defaults 0 0mdev /dev ramfs defaults 0 0none /var ramfs defaults 0 0none /tmp ramfs defaults 0 0(4)etc/profile用户环境配置文件# Ash profile# vim: syntax= sh# No core file by defaults# ulimit - S - c 0> / dev/ null 2> & 1USER="id -un"LOGNAME=$USERPS1="[\u@\h \w]#" #\w 目录将显示全路径PATH=$PATHHOSTNAME= '/bin/hostname'alias cls="clear"export USER LOGNAME PS1 PATH(5)/etc/passwd shadow 用户文件以及密码把主机的passwd shadow 文件拷贝到/etc下# cp /etc/passwd /mini2440/rootfs/etc# cp /etc/group /mini2440/rootfs/etc# cp /etc/shadow /mini2440/rootfs/etc(6)etc/sysconfig/HOSTNAME的内容为你自己的名字即可,内容为"mini2440"gedit /etc/sysconfig/HOSTNAME 然后键入mini2440***********************第三步:以nfs方式加载测试********************************测试之前必须确保nfs服务已经开启,uboot中的bootargs参数已经设置成功。
bootcmd=nfs 0x30008000 192.168.1.149:/opt/FriendlyARM/uImage;bootmbootargs=noinitrd root=/dev/nfs proto=tcp,nolock,nfsvers=3, rwnfsroot=192.168.1.149:/mini2440/rootfs ip=192.168.1.144:192.168.1.149::255.255.255.0 console=ttySAC0,115200 init=/linuxrc mem=64M在reboot的时候[@mini2440 /etc]#reboot[@mini2440 /etc]#umount: mdev busy - remounted read-only是由于在reboot的时候执行了/etc/inittab中的::shutdown:/bin/umount -a -r 需要重新挂载设备所致,可以去掉此行。
有待改进:使用mkyaffs2image制作成为最终的根文件系统,烧写到flash中,启动的时候从flash中读取内容。
后面会做这一实验。