Linux内核裁减及根文件系统定制(之二)--------根文件系统定制_第1页
Linux内核裁减及根文件系统定制(之二)--------根文件系统定制_第2页
Linux内核裁减及根文件系统定制(之二)--------根文件系统定制_第3页
Linux内核裁减及根文件系统定制(之二)--------根文件系统定制_第4页
Linux内核裁减及根文件系统定制(之二)--------根文件系统定制_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、linux内核裁减及根文件系统定制(之二)根文件系统定制二、根文件系统定制1、创建一个全新的根文件系统你可以用mkinitrd来创建,这里介绍另外一种方式,用dd命令:# mkdir -p /mnt/initrd创建一个设备点,用于临时挂载根文件系统。# cd /tmp在tmp下创建根文件系统# dd if=/dev/zero of=/tmp/initrd bs=512 count=40960创建一个名为 initrd 的根文件系统,系统每个块的大小为512字节,共40960块。# mke2fs -f -m 0 initrd 格式化根文件系统,其中f表示强制执行;表示不为系统预留空间。#mou

2、nt -o loop /tmp/initrd /mnt/initrd挂载根文件系统,记住这里耍使用-0 loop选项,否则挂载会失败。# cd /mnt/initrd2、创建基本的目录结构#mkdir dev proc etc etc/rc.d sbin bin lib mnt tmp var usr #chmod 755 dev etc etc/rc.d sbin bin lib mnt tmp var usr #chmod 555 proc3、添加设备你口j以使用mknod创建,也口j以从现冇的系统中拷贝过來,拷贝 的时候一定要注意,最好使用-dfr,这样有两个好处:1、拷贝路 径下的所冇

3、文件,如呆冇文件夹,则嵌套拷贝整个文件夹下的内容; 2、保持文件(设备)的属性不变。这里采用mknod创建的方式,以下设备是必须的console、kmem、mem、 null> ramo> tty 等。建立一般终端机设备# mknod tty c 5 0# mkdir c on sole c 5 1# chmod 666 tty con sole建立vga display虚拟终端机设备# mknod tty1 c 4 0# chmod 666 ttyo建立ram disk设备# mknod ramo b 1 0# chmod 600 ramo建立null设备# mknod null

4、 c 1 3# chmod 666 null4、创建配置文件到这里我们就有了一个初步的小型根文件系统,但是还需要配置一些有关的 shell script來完善它。在etc下创建最基木的配置文件fstabinittab、rc.d/rc.sysinit,其中侮个配置文件 中至少应该包含以下对应的内容:fstab应包括:/proc /proc proc defaults 0 0inittab应包括::sysi nit:/etc/rc.d/rc.sysi nit:sysinit:/bin/sh (注意,这电如果用getty或minigetty代替sh,那么shell就会等待用 户登录,而不会直接进入s

5、hell )rc.d/rc.sysi nit 应包括:/bin/mount -a5、添加 bin、sbin、usr/bin> usr/sbin b*的可执行文件系统至少应该包含工具sh, is, cp, mv, inito我们可以将/bin /sbin /usr/bin /usr/sbi n下的对应工具拷贝过来,拷贝的吋候采用cp -dffl系统中的可执行文件一般都 比较人,在内存或磁盘空间紧张的情况下不适合,我们可以用busybox来解决这个问题。 busybox 包含了七十多种linux上标准的工具程序,仅需要儿百k磁盘空间,在嵌入式系统上常用 到它。下载了busybox的源代码包示

6、可以按照如下的步骤操作:dostatic=true然后修改busybox 41的init.c,设定系统耍执行的第个程序为:/etc/rc.d/rc.sysinit#define init_srcipt "/etc/rc.d/rc.sysinit"开始编译busybox#make#make install到这步我们就得到了可执行命令busybox将 busybox 复制到/mnt/initrd/bin 目录下# cp busybox /mnt/initrd/bin然示创建常用命令的link,具体的工作原理请参阅busybox的官方说明。我们可以使用./busybox -hel

7、p來查看busybox中都有哪些工具。常用的工 具及 busybox的用法如下:# in s busybox is# in -s busybox cp# in -s busybox mountumount morepssh# in -s busybox# in s busybox# in -s busybox# in -s busybox现在我们就冇了所需的常用命令。6、添加库到lib下该目录屮包含有你的启动盘启动过程中所需要的共享函数库,如果缺少必须的函数 库,系统会停止启动或出现一大堆错误信息,所以一定要注意。儿乎所有的程序都需要libc库,列一下目录/lib中的libc:is -i /l

8、ib/libc*rwxrxrx 1 root root 4016683 apr 16 18:48 libc2.1.1 .so* irwxrwxrwx 1 root root 13 apr 10 12:25 libc.so.6 > libc2.1.1 .so* libc.so.6的6表示版本号,它指向的文件才是你真正需要的。查看/bin /sbin /usr/bin /sur/sbin下每一个程序使用的函数库,用命 令 idd,如:idd /sbin/mke2fsiibext2fs.so.2 => /iib/libext2fs.so.2 (0x40014000)libcom_err.

9、so.2 => /lib/libcom_err.so.2 (0x40026000) libuuid.so.1 => /lib/libuuid.so.1 (0x40028000) libc.so.6 => /lib/libc.so.6 (0x4002c000)/lib/ld linux.so.2 => /lib/ld linux.so.2 (0x40000000)输出右边的库都是必须的,有的可能是链接文件。在/lib目录下你还必须有函数库装载器,这个装载器或是id.so (对a.out 库)或是ldlinux.so (对elf库)。新版本的idd-般会告诉你所需库的装载器。7、加载模块如呆你冇一个模块化的内核,你述得考虑需耍加载的模块,它们都位于 /lib/modules 下cp -dfr /lib/modules/x.y.z /mnt/initrd/lib/modules8、打包# cd /tmp# umount /mnt/initrd# gzip

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论