initramfs文件系统的制作和移植

  initramfs文件系统——基于RAM的文件系统

initramfs在编译内核的同时被编译并与内核生成一个映像文件,可以压缩也可以不压缩,但是目前只支持cpio包格式。它是根文件系统制作和制作的一种非常简单的方法,由于initramfs使用cpio包格式,所以很容易将一个单一的文件、目录、node编译链接到系统中去,这样很简单的系统中使用起来很方便,不需要另外挂接文件系统。但是也有缺点,因为是基于RAM的文件系统,掉电后文件丢失.

制作如下:

由于制作initramfs文件系统启动时会在根文件系统中执行第一个init程序,它对uboot传过来的参数init=/linuxrc不予理睬,所以需要在上面制作的根文件系统里的根目录加入init程序,否则无法启动。init指向busybox,在这里可以看出busybox的强大.

[luminqi@localhost rootfs]$ ln -s bin/busybox init

##创建busybox的软链接,相当于快捷方式

[luminqi@localhost linux-3.0]$ vt100

##完整命令为export TERM=vt100,可以自己在环境变量中设置别名,这里表示环境变量TERM设置为终端机,防止出现乱码!

[luminqi@localhost linux-3.0]$ make menuconfig


General setup  --->

[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

(/opt/rootfs) Initramfs source file(s)


[luminqi@localhost linux-3.0]$ make

生成文件linuxrom-s3c2440.bin,用sz命令将它放到Windows下的tftp文件夹下,

改名为uImage_initramfs.bin


移植过程:

启动开发板,u-boot下的操作如下

[fl2440@lingyun]# set bkri 'tftp 30008000 uImage_initramfs.bin;nand erase 100000 f00000;nand write 30008000 100000 800000'
[fl2440@lingyun]# set bootcmd_initramfs 'nand read 30008000 100000 800000;bootm 30008000'
[fl2440@lingyun]# set bootargs_initramfs 'console=ttyS0,115200 mem=64M init=/linuxrc rw loglevel=7'
[fl2440@lingyun]# set bootargs 'console=ttyS0,115200 mem=64M init=/linuxrc rw loglevel=7'
[fl2440@lingyun]# set bootcmd 'run bootcmd_initramfs'
[fl2440@lingyun]# save
[fl2440@lingyun]# run bkri
[fl2440@lingyun]# boot

说明

1 run bkri即执行tftp 30008000 uImage_initramfs.bin;nand erase 100000 f00000;nand write 30008000 100000 800000这三个命令

2 boot(对应bootcmd)即执行run bootcmd_initramfs,而bootcmd_initramfs对应nand read 30008000 100000 800000;bootm 30008000

3 bootargs_initramfs可设置也可不设置,主要为了方便记下参数

4 最关键的是bootargs,bootcmd,还有记得要save(即保存到nandflash中).如果不保存,重启后设置就没了,又要重新设置.



启动过程省略,用户登录root,无密码

>: mount
rootfs on / type rootfs (rw)
proc on /proc type proc (rw,relatime)
tmpfs on /tmp type tmpfs (rw,relatime)
tmpfs on /dev type tmpfs (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600)

文件系统已经挂载在根(/)下

移植完成!




你可能感兴趣的:(文件系统制作和移植)