前提:准备一块IDE的硬盘,并将该应分为两个区:
/dev/hda1 | 大小:+20M | 文件系统:ext3 | 挂载:mount /dev/hda1 /mnt/boot |
---|---|---|---|
/dev/hda2 | 大小:+512M | 文件系统:ext3 | 挂载:mount /dev/hda2 /mnt/sysroot |
1 安装好busybox,将busybox的安装目录(_install)下的所有内容复制到一个自己创建的文件下(/tmp/busybox)
删除linuxrc
2 手动创建基本的目录
mkdir sys proc etc dev lib/modules sysroot -pv
3 为了让我们的文件系统支持ext3文件系统,需要有ext3模块
modinfo ext3
我们modinfo查看ext3模块,可以看到ext3模块依赖于jdb模块
将两个模块到复制到 lib/modules下面
cp /lib/modules/2.6.18-238.el5/kernel/fs/ext3/ext3.ko lib/modules/
cp /lib/modules/2.6.18-238.el5/kernel/fs/jbd/jbd.ko lib/modules/
4 提供initrd的init脚本
vim init文件
- 挂载proc文件系统
mount -t proc proc /proc
- 挂载sysfs系统
mount -t sysfs sysfs /sys
- 探测硬件
mdev -s
- 插入自己需要的模块
insmod /lib/modules/jbd.ko
insmod /lib/modules/ext3.ko
- 挂载根文件系统
mount -t ext3 /dev/hda2 /mnt/sysroot
- 将根文件系统切换到/sbin/init
exec switch_root /mnt/sysroot /sbin/init
因为要将根文件系统挂载到/mnt/sysroot,则应创建该目录
mkdir mnt/sysroot -pv
5 创建两个必要的设备文件
mknod dev/console c 5 1
mknod dev/null c 1 3
6 给init文件加可执行权限,然后将所有文件压缩为/boot/initrd.gz文件
chmod +x init
find . | cpio -H newc --quiet -o |gzip -9 >/mnt/boot/initrd.gz
7 准备内核
cp /boot/vmlinuz-2.6.18-238.el5 /mnt/boot/vmlinuz
安装grub
grub-install --root-directory=/mnt/ /dev/hda
编辑grub.conf文件
vim grub/grub.conf
default=0
timeout=5
title xiuxiuya
root (hd0,0)
kernel /vmlinuz
initrd /initrd.gz
8 将原来的_install文件全部复制到/mnt/sysroot目录下
cp _install/* /mnt/sysroot/ -a
9 cd到sysroot下,然后创建一些必要的文件夹
cd /mnt/sysroot
mkdir etc proc sys media mnt lib/modules dev var/{log,lock,run} etc/rc.d/init.d root boot -pv
10 创建etc/inittab文件并编辑
::sysinit:/etc/rc.d/rc.sysinit
console::respawn:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
11 准备etc/fstab
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/hda1 /boot ext3 defaults 0 0
/dev/hda2 / ext3 defaults 1 1
12 创建两个必要的设备文件
mknod dev/console c 5 1
mknod dev/null c 1 3
13 创建etc/rc.d/rc.sysinit文件并编辑
#!/bin/sh
echo -e "\t Welcom \033[34mxiuxiuya\033[0m "
echo -e "mount proc and sysfs..."
mount -t proc proc /proc
mount -t sysfs sysfs /sys
echo -e "remount /"
mount -o remount,rw /
echo -e "Creating the files of device.."
mdev -s
echo -e "mount all file...."
mount -a
给rc.sysinit文件可执行权限
chmod +x etc/rc.d/rc.sysinit
14 利用dropbear实现远程登录
(该过程是实现完之后补充的,只是为了提醒自己,所以简略,可以上网看更详细的步骤)
安装dropbear略…
- 编辑etc/shells,指定远程登录指定的shell类型
/bin/bash
/bin/sh
/bin/hash
/bin/ash
- 在fstab中指定伪终端的挂载点
devpts /dev/pts devpts mode=620 0 0
- 生成主机的秘钥
dropbearkey -t rsa -f /mnt/sysroot/etc/dropbear/dropbear_rsa_host_key -s 2048
dropbearkey -t dss -f /mnt/sysroot/etc/dropbear/dropbear_dss_host_key
- 复制dropbear dbclient dropbearkey等相关命令
- 将passwd,shadow和group等文件复制过来
- 编辑etc/inittab,使得能进行用户名登录,复制mingetty命令
::sysinit:/etc/rc.d/rc.sysinit
::respawn:/sbin/mingetty tty1
::respawn:/sbin/mingetty tty2
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
- 一定要插入网卡模块,并配置相应的ip地址
- 复制/etc/nsswitch.conf /lib/libness_files* /usr/lib/libnss3.so /usr/lib/libnss_files*