Chinaunix首页 | 论坛 | 博客
  • 博客访问: 975077
  • 博文数量: 192
  • 博客积分: 3070
  • 博客等级: 中校
  • 技术积分: 1861
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-27 23:44
个人简介

Start Linux Leave Linux a while Back to Linux

文章分类

全部博文(192)

文章存档

2023年(18)

2022年(11)

2021年(8)

2020年(14)

2019年(7)

2018年(13)

2017年(16)

2016年(4)

2012年(2)

2011年(13)

2010年(26)

2009年(13)

2008年(27)

2007年(20)

我的朋友

分类: LINUX

2016-12-04 21:04:52

制作一个文件系统 initrd.gz X86使用。

硬件环境:Intel X64_64Bit N3825/3845

编译器:GCC

内核:Kernel 3.16.39

 

1.  下载Busybox,我的版本是busybox-1.25.0.tar.bz2

 

2. 解压 busybox

tar jxvf busybox-1.19.3.tar.bz2

cd busybox-1.19.3

make menuconfig                      //跟配置Linux是一样的

这里特别注意,在Busybox Settings --> Build Options 里务必选上“Build BusyBox as a static binary (no shared libs)”表示把Busybox编译成静态库!

其他保持默认值,然后保存

make

make install

就会生成_install文件夹


3. 新建一个 initrd 目录,将 _install 目录下的所有文件都复制到 initrd 这个目录下。
a. mkdir initrd
b. cp ../busybox-1.25.0/_install/* initrd -arf
c. mkdir proc sys sysroot etc dev var tmp

4. 创建consolenull设备文件

cd dev

mknod console c 5 1

mknod null c 1 3

 

5. 创建/etc/fstab文件:

cd etc

vim fstab输入以下内容:

# device   mount-point    type     options   dump    fsck

proc      /proc         proc     defaults    0       0

sysfs      /sys          sysfs    defaults    0       0

 

注:fstab 如果未执行,则 /proc  /sys  目录下无任何文件

6. 创建 etc/init.d/rcS脚本文件:

cd etc

mkdir init.d

cd init.d

vim rcS输入以下内容:

#!/bin/sh

/bin/mount –n –t ramfs ramfs  /var

/bin/mkdir /var/tmp

/bin/mkdir /var/modules

/bin/mkdir /var/run

/bin/mkdir /var/log

/bin/mkdir -p /dev/pts                    //telnet服务需要

/bin/mkdir -p /dev/shm                   //telnet服务需要

#echo /sbin/mdev > /proc/sys/kernel/hotplug    //USB自动挂载需要

/sbin/mdev -s        //启动mdev/dev下自动创建设备文件节点

/bin/mount -a

--------------------------------

chmod +x rcS          这步不要忘记!

注:/sbin/mdev 如果未执行,则 /dev目录下无任何文件

创建inittab文件:

cd etc

vim inittab,输入以下内容:

#/etc/initab

::sysinit:/etc/init.d/rcS

console::respawn:-/bin/sh

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount –a -r

 

7. _install/initrd 目录下

rm linuxrc

输入如下命令:

ln -sv bin/busybox init    (如下图)


8. busybox 显示用户名及路径 -----[\u@\h\W]\# busybox 在制作根文件系统的处理方法

首先我们需要修改buxybox中配置,添加如下两个选项:
  Busybox Settings --->
  Busybox Library Tuning --->
  [*] Username completion
  [*] Fancy shell prompts

创建/etc/hostname添加如下内容(我们的主机名):
  Happy

修改init.d/rcS添加如下内容(导入主机名配置文件):
  /bin/hostname –F /etc/hostname
修改根文件系统中/etc/profile文件添加如下内容:
  HOSTNAM=`/bin/hostname`
  PS1=`[\u@\h: $PWD]\# `
  export PS1 HOSTNAME

创建/etc/passwd添加如下内容:
  root:x:0:0:root:/root:/bin/sh
这个时候我们重新启动我们的开发板会发现命令行提示符已经是我们想要的那种现实了:
  [root@Happy:/etc] #

9. 最后,我们把_install目录做成我们的根文件系统:

输入如下命令:

find . | cpio --quiet -H newc -o | gzip -9 -n > ../initrd.gz

 

最后把生成的initrd.gz复制到/boot

sudo cp initrd.gz /boot

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