Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1490264
  • 博文数量: 267
  • 博客积分: 3010
  • 博客等级: 少校
  • 技术积分: 3089
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-05 17:09
个人简介

尊天命,尽人事

文章分类

全部博文(267)

文章存档

2017年(6)

2015年(4)

2014年(27)

2013年(52)

2012年(59)

2011年(120)

分类: 嵌入式

2011-11-09 20:26:29

使用initramfs.gz启系统之后,当前的根目录为rootfs类型的内存文件系统,
如果需要切换到mtd磁盘之类的,可以使用busybox内部提供的switch_root命令,
但是该条命令必须由init程序自己直接执行,否则启动时将提示:
switch_root: not rootfs 
我的initramfs.gz原来根目录下的/init是指向/bin/busybox的符号链接,所以这里就需要变为sh脚本,以保证
switch_root在init脚本中被直接执行,下面以qemu-system-arm模拟器为基础,
initramfs启动versatilepb开发板之后,使用nfs方式mount主机pc上的/vobs/nfs目录,
之后switch_root切换到该目录作为/根目录,
init脚本内容如下:
#!/bin/sh
/bin/mount -o nolock -t nfs 172.20.0.1:/vobs/nfs /gliethttp
exec /sbin/switch_root /gliethttp /sbin/init

# 位于initramfs.gz中的gliethttp目录为mount上新的文件系统之后的目录,可以是我们这里的nfs系统,也可以是mtd闪存设备对应的jffs2等
# /sbin/init是将要切换成为根目录的文件系统上的需要执行init进程地址,
# 也就是nfs文件系统或者mtd设备上/sbin/init程序[luther.gliethttp].
阅读(4939) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~