首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

自己定制软盘上的Linux系统方案 03

自己定制软盘上的Linux系统方案 03

 取4M大小的内存块格式化为ext2格式,并将其mount到bootldr/initrd/ramdisk上。
  
  dd if=/dev/zero of=/dev/ram9 bs=1k count=4096
  mke2fs /dev/ram9
  mount -t ext2 /dev/ram9 ramdisk/
  
  把local中的文件复制到ramdisk目录中,也就是那块内存中。
  
  cp -R local/* ramdisk/
  umount ramdisk
  
  将内存中的内容压缩为initrd.gz,并复制到bootldr盘中
  
  dd if=/dev/ram9 bs=1k | gzip -v9 > initrd.gz
  cp initrd.gz /mnt/floppy/
  umount /mnt/floppy
  
  这样,bootldr盘就完成了。
  
  六.定制根文件系统  一个根文件系统需要包含支持Linux系统运行的所有文件。通常包括:
  
  基本的文件系统结构
  
  基本的目录: /dev, /proc, /bin, /sbin, /etc, /usr, /tmp等。
  
  基本的工具: sh, ls, cp, cd, mv等。
  
  基本的配置文件: rc, inittab, fstab等。
  
  设备: /dev/hd*, /dev/tty*, /dev/fd0, /dev/ram*, /dev/console等.
  
  基本的运行库。
  
  Busybox和Tinylogin是在嵌入式系统上常用的工具包,它们包含了上面提到的常用的工具和目录结构等,而且经过重新改写后所生成的代码比普通的Linux系统上的工具要小的多。
  
  编辑Busybox的Config.h文件,选择自己需要的工具。修改Busybox和Tinylogin的Makefile文件,制定它们使用静态链接方式(DOSTATIC=true),这样就不需要在生成的系统中添加运行库了。将编译好的Busybox和Tinylogin文件放到rootfs/local中。
  
  在rootfs/local中在自己创建下面几个目录:dev/, tmp/, etc/, proc/
  
  可以将系统中/dev下的设备复制到这个目录下,只需要复制必要的就可以了,例如:
  
  #cp -dpR /dev/tty[0-9] /mnt/rootfs/dev
  #cp -dpR /dev/ram* /mnt/rootfs/dev
  
  但是要注意一定要包含必要的接各设备/dev/console, /dev/kmem, /dev/mem, /dev/tty, /dev/ram0, /dev/null等。
  
  etc/目录下包含了目标系统运行所必须的配置文件,它包括的内容依赖与目标系统所要运行的程序。最低限度,它包括下面几个文件:inittab、rc、fstab、passwd、group、shadow、termcap等。做为init进程的参数,inittab可以非常简单,仅需要包括下面几行即可:
  
  ::sysinit:/etc/rc
  ::askfirst:/bin/login
  tty2::askfirst:/bin/login
  tty3::askfirst:/bin/login
  tty4::askfirst:/bin/login
  ::ctrlaltdel:/sbin/reboot
  ::restart:/sbin/init
  ::shutdown:/bin/umount -a -r
  ::shutdown:/sbin/swapoff -a
  
  其中sysinit指明系统初始化脚本rc。rc所包含内容也可以非常少:
  
  #!/bin/sh
  /bin/mount -av
  /bin/umount /mnt/initrd
  /bin/hostname papaya
  
  fstab的内容为:
  
  none /proc proc defaults 0 0
  none /tmp tmpfs defaults 0 0
  
  其他的配置文件可以从原来的系统中获得,然后修剪掉不必要的内容即可。
  
  现在在/mnt/rootfs中已经包含了运行一个最低限度Linux系统所必须的所有文件和工具,
返回列表