arm linux rootfs的制作

1、编译busybox, 选择静态链接还是动态链接,生成/bin /sbin /usr/bin /usr/sbin 下  busybox等命令

   make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig 
   make ARCH=arm CROSS_COMPILE=arm-linux-
   make install CONFIG_PREFIX=../rootfs_20150417


    Busybox Settings --->
                Busybox Library Tuning --->
[*] Tab completion            tab键 命令补全
                        [*] Username completion 显示控制命令行提示符有用, 在profile中导出环境变量PS1='[\u@\h \W]\# '
                        [*] Fancy shell prompts       显示控制台命令行提示符有用, 在profile中导出环境变量PS1='[\u@\h \W]\# '
  root@linux   user@hostname
   
2、lib目录构建,拷贝busybox所需的动态库,若busybox是静态编译的,则可以不用
      从工具链中拷贝对应的库


3、etc下文件构建
inittab : init解析文件
init.d/rcS : init解析inittab执行的第一个脚本
fstab : 当执行mount -a时,会自动解析的脚本
hostname : 当执行hostname -F hostname,会修改主机的名字
profile : 环境变量文件,每次启动shell的时候都会,都会解析该文件

调用getty or telnet 登录时,会调用login
getty: Open a tty,printf /etc/issue and prompt for a login name, then invoke /bin/login 

login 会解析passwd、shadow、group文件,并调用shell,所以/etc/profile会被再次解析,对应用户下的.profile以及 .bashrc也会被调用解析
passwd : LOGNAME:PASSWORD:UID:GID:USERINFO:HOME:SHELL 
group             : 组文件
shadow : 用户密码存储在/etc/shadow,格式为(以“:”为分割符)

mdev.conf : mdev的配置文件,后用udev替代
mtab      : 自动生成的文件


4、创建基本的/dev/下节点,根据情况,有些版本可不用创建, /dev/下保持空即可,mdev或者udev已创建好
   /bin/mknod /dev/console c 5 1
   /bin/mknod /dev/null c 1 3 


5、创建其他必须的目录
bin sbin /usr/bin /usr/sbin     -------->由busybox创建
lib    -------->所需的动静态库
etc    -------->启动及环境变量配置
dev    -------->挂载tmpfs,由udev或者mdev生成动态节点
proc    -------->挂载proc文件系统
sys    -------->挂载sysfs文件系统
tmp    -------->挂载tmpfs文件系统
var    -------->syslogd能生成日志文件
boot 
home 
root
media
mnt
opt
lost+found

5、使用工具生成镜像

一页512b

mkyaffs2image-512b-page   rootfs_20150417/   Rootfs_512b.yaffs       

一页2k
mkyaffs2image-2k-page   rootfs_20150417/   Rootfs_2k.yaffs


6、根文件系统的启动
uboot下烧写
#define CONFIG_RUNDR "mw.b 0x30008000 ff 0x56c100;tftp 0x30008000 Rootfs.yaffs;nand erase 0x02d60000 0x56c100;nand write.yaffs 0x30008000 0x2d60000 0x56c100;"   //(521b一页) 0x56c100/(512+16) =10975 yaffs2文件系统的页大小为(512+16)B,因此,烧写的大小应该是这个页大小的整数倍,否则会导致根文件系统起不来
#define CONFIG_RUNDR "mw.b 0x30008000 ff 0x630000;tftp 0x30008000 Rootfs.yaffs;nand erase 0x02d60000 0x630000;nand write.yaffs2 0x30008000 0x2d60000 0x630000;"  //(2k一页)   0x630000%(2048+64) = 0,一页大小要是2048+64的整数倍

从nand flash启动
setenv bootargs "noinitrd root=/dev/mtdblock5 rootfstype=yaffs2 rw init=/sbin/init console=ttySAC0,115200 mem=0x4000000"


从网络启动
setenv bootargs "noinitrd console=ttySAC0,115200 mem=64M init=/linuxrc root=/dev/nfs rw nfsroot=192.168.0.101:/home/smb/uboot_kernel/rootfs_20150417,intr,nolock,proto=tcp,nfsvers=3 ip=192.168.0.110:192.168.0.101:192.168.0.1:255.255.255.0:xlpc:eth0:off"



nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
nfsroot=192.168.0.101:/home/smb/uboot_kernel/rootfs_20150417,intr,nolock,proto=tcp,nfsvers=3


nfsaddrs =    <my-ip>   : <serv-ip>   :   <gw-ip> :  <netmask>  :<name>:<dev>:<auto>

  ip     = 192.168.0.240:192.168.1.200:192.168.1.1:255.255.255.0: xlpc : eth0: off



7、附件中是对应的/etc文件下的文件



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值