手把手教你你制作自己的ttylinux
前期准备工作
1、一个作为宿主机的Linux;本文使用的是Redhat Enterprise Linux 5.4;
2、在宿主机上提供一块额外的硬盘作为新系统的存储盘,为了降低复杂度,这里添加使用一块SCSI接口的新硬盘;
3、本文使用内核的是宿主机的linux-2.6.18.164.el5.
一、在宿主机上创建磁盘分区和格式化文件系统
分析:ttylinux的分区:/boot 100M /root 512M swap 32M
分区:fdisk /dev/sdb <<EOF &> /dev/null
>n
>p
>1
>1
> 100M
>n
>p
>2
>
> 512M
>n
>p
>3
>
> 32M
>t
>3
>82
>w
>EOF
检查分区情况
fdisk -l /dev/sdb
格式化分区
mke2fs -j /dev/sdb1 && mke2fs -j /dev/sdb2 && mkswap /dev/sdb3
二、移植内核和一些测试的内核模块 编辑配置文件
前提 :先创建一些临时工作目录
mkdir /mnt/root /mnt/sysroot
mkdir initrd
流程:
1 移植内核的initrd
cd /initrd
cp cp /boot/initrd-2.6.18-164.el5.img ./
mv initrd-2.6.18-164.el5.img initrd-2.6.18-164.el5.img.gz
gzip -d initrd-2.6.18-164.el5.img.gz
cpio -id < initrd-2.6.18-164.el5.img
rm -i initrd-2.6.18-164.el5.img
此时目录下应该是:
[root@server70 initrd]# ls
bin dev etc init lib proc sbin sys sysroot
修改一些文件 init
99 行 mkrootdev -t ext3 -o defaults,ro /dev/vol0/root
改为 mkrootdev -t ext3 -o defaults,ro sda2(目标主机硬盘根目录)
封装initrd
find . | cpio -H newc -o --quiet | gzip -9 -n > /tmp/initrd.gz
2 挂载目标主机的硬盘,移植内核和模块
mount /dev/sdc1 /mnt/boot/ && mount /dev/sdc2 /mnt/sysroot/
创建硬盘grub引导目录
grub-install --root-directory=/mnt /dev/sdc
显示如下:
Probing devices to guess BIOS drives. This may take a long time.
Installation finished. No error reported.
This is the contents of the device map /mnt/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install''.
(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/sdb
(hd2) /dev/sdc
/mnt/boot/ 应该显示如下
[root@server70 ~]# ls /mnt/boot/
grub lost found
复制copy 制作的initrd.gz和vmlinuz
cp /tmp/initrd.gz /mnt/boot/
cp /boot/vmlinuz-2.6.18-164.el5 ./vmilinuz
创建根目录下的目录和文件
mkdir etc bin sbin boot var lib tmp proc sys root home usr
cp /sbin/init sbin/(cp init文件)
|