Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15357852
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类: 嵌入式

2009-08-07 16:47:58

  使用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].
阅读(4776) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~