Chinaunix首页 | 论坛 | 博客
  • 博客访问: 158543
  • 博文数量: 54
  • 博客积分: 2030
  • 博客等级: 大尉
  • 技术积分: 640
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-12 23:03
文章分类

全部博文(54)

文章存档

2009年(4)

2008年(50)

我的朋友

分类: LINUX

2008-11-09 18:47:59

前段时间做了一个与Linux移植相关的项目,期间反复编译了很多遍的内核,修改了很多几次Initrd文件系统,经常因为内核版本和Initrd里面相应的驱动版本不同,导致系统无法引导,浪费了很多的时间。

项目结束之后,回过头想了一下,其实可以将Initrd直接写入到Vmlinuz的,这样就一个内核压缩文件,操作起来很方便。
经过一番试验后,总结制作方法如下:

1、首先是用BusyBox编译出来一个简单的Ramdisk系统,里面包含了基本的可执行程序,其实这个系统很小的,应为几乎所有的命令都指向了busybox这一个可执行文件。

2、创建一个目录busybox-initramfs ,将刚刚编译完成的BusyBox目录(我用的是_Install)拷贝到该目录下,在创建一些常见的目录,最后目录结构如下所示:
[root@localhost linux-2.6.26.5]# ls ../busybox-initramfs/
bin  dev  etc  home  init  proc  root  sbin  tmp  usr  var
[root@localhost linux-2.6.26.5]# 
这样一个最简单的Initrd就做好了,其实我在公司做的Initrd里面还有很多启动程序和相应的驱动,在这里就不详述了。

3、配置内核,使用make menuconfig命令进入内核配置菜单,进入General setup菜单,将如下菜单选中:
[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support  
这时候在弹出的窗口中指定我们刚刚建立的目录地址,我用的是/opt/busybox-initramfs。

4、保存退出后,查看.config文件时,能够看到:
CONFIG_INITRAMFS_SOURCE="/opt/busybox-initramfs"
说明配置成功。

5、这时候我们之前制作的BusyBox-initramfs就已经被编译到内核中了,并且内核会将该目录编译成cpio格式的?ramdisk文件系统。

6、使用编译出来的内核引导,就可以直接进入到BusyBox中。

以上内容是参照了jserv的一片文章,文章地址如下:
http://blog.linux.org.tw/~jserv/archives/001954.html

阅读(1745) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~