制作一个grub引导的5M大小的ttylinux
一. ttylinux简介:
i.ttylinux 是一个基于2.6版内核、体积非常之小(5M左右的LiveCD)的Linux。它运行于i486以上平台的PC机上,安装之后,ttylinux的文件系统也只有8M大小,但却提供了一个完整的shell环境,并且可用来访问Internet;
ii.ttylinux可以为嵌入式应用提供一个实用的平台,也可以将其安装于U盘等移动存储上以提供一个便携的Linux系统。你甚至还可以将其安装在硬盘.
二.环境:
bootcd-i486-9-RC1.iso镜像 # http://linux.yosh.se/ttylinux/
[root@redhat iso]# uname -a
Linux redhat.domain.com 2.6.9-67.EL #1 Wed Nov 7 13:41:13 EST 2007 i686 i686 i386 GNU/Linux
三.详细过程:
A.制作一个基于grub引导的 ttylinux LiveCD.
1、创建iso目录作为制作LiveCD的根的目录,并在其中创建grub所需的目录
# mkdir -pv iso/{ttylinux,boot/grub}
2、复制grub可引导的光盘所需的引导程序
# cp /usr/share/grub/i386-redhat/stage2_eltorito iso/boot/grub
######若要实现硬盘安装##########
# cp -rv /usr/share/grub/i386-redhat/* iso/boot/grub
3、将下载到的ttylinux iso镜像文件/root,并拷贝其文件
# mount -o loop /root/bootcd-i486-9-RC1.iso /media/cdrom
# cp -rv /media/cdrom/boot/* iso/ttylinux/
4、为grub建立配置文件
# vim /root/iso/boot/grub/grub.conf
编辑内容如下:
default 0
timeout 10
color light-green/black light-magenta/black
title My ttylinux(ttylinux-9-2)
root (cd)
kernel /ttylinux/vmlinuz load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=8192 ro
root=/dev/ram0 #内存硬盘
initrd /ttylinux/filesys.gz
5、执行如下命令,创建iso镜像:
# mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-
table -o ttylinux.iso iso
6.iso文件架构
# tree iso
iso
|-- boot
| `-- grub
| |-- e2fs_stage1_5
| |-- fat_stage1_5
| |-- ffs_stage1_5
| |-- grub.conf
| |-- iso9660_stage1_5
| |-- jfs_stage1_5
| |-- minix_stage1_5
| |-- myttylinux.iso
| |-- reiserfs_stage1_5
| |-- stage1
| |-- stage2
| |-- stage2_eltorito
| |-- ufs2_stage1_5
| |-- vstafs_stage1_5
| `-- xfs_stage1_5
`-- ttylinux
|-- filesys.gz
|-- isolinux
| |-- boot.cat
| |-- boot.msg
| |-- help.msg
| |-- isolinux.bin
| `-- isolinux.cfg
`-- vmlinuz
4 directories, 22 files
到此为止一个grub引导的ttylinux LiveCD已经制作完成了。您可以使用虚拟机,或刻录成
光盘来引导您的系统了。
B.安装 ttylinux至硬盘
==================================》》要用 IDE 硬盘,负责不能发现硬盘。 我这里用的是VM 7.1版本,其他版本没有试过。
说明:此种方式的实现,须以步骤1中制作完成的LiveCD为基础进行。准备好一台主机,并以制作好的LiveCD启动之。
1、启动此系统,进行基于LiveCD的ttylinux,而后对硬盘进行分区。这里新建了两个主分区 /dev/hda1(100M)和/dev/hda2(5G)并分别挂载于/mnt/hda1和/mnt/hda2中。
分区步骤此处略去……
# mkdir -pv /mnt/hda{1,2}
# mount /dev/hda1 /mnt/hda1
# mount /dev/hda2 /mnt/hda2
2、挂载LiveCD至当前系统,并复制所需文件
# mount /dev/hdc /mnt/cdrom
# cp -r /mnt/cdrom/boot/grub/ /mnt/hda1/
# cp /mnt/cdrom/ttylinux/{vmlinuz,filesys.gz} /mnt/hda1/
3、复制ttylinux系统文件至/dev/hda2
# cp -r /{etc,bin,sbin,var,lib,home,root,usr,dev,tmp} /mnt/hda2
# mkdir /mnt/hda2/{boot,proc,sys,mnt/cdrom}
4、编辑/mnt /hda1/grub/grub.conf,确保其为以下内容:
default 0
timeout 10
color light-green/black light-magenta/black
title My ttylinux(ttylinux-9-RC1 on Harddisk Final)
root (hd0,0)
kernel /vmlinuz ro root=/dev/hda2
initrd /filesys.gz
5、重新启动系统,安装grub至硬盘MBR
在grub的启动界面按"c"键进行grub的命令行模式,而后执行如下命令:
grub> root (hd0,0)
grub> setup (hd0)
6、退出LiveCD光盘,重新启动系统即可从硬盘启动ttylinux了。
下面为补充设置:
7、启动网络功能
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
将
ENABLE=no
修改为
ENABLE=yes
而后使用下面命令启动激活网卡:
# ifup eth0
8、设置root用户的环境,增加环境变量PS1
# vi /root/.bash_profile
添加如下行:
export PS1=’[\u@\h \W]’\#
而后重新读取该文件
# source /root/.bash_profile
9、修改主机名
# vi /etc/HOSTNAME
修改里面的字符串为您所希望的主机名即可。
10、修改/etc/fstab,使用其开机能正常挂载所需文件系统
/dev/hda2 / ext3 defaults 1 1
/dev/hda1 /boot ext3 defaults 1 2
tmpfs /dev tmpfs noauto 0 0
devpts /dev/pts devpts gid=5,mode=0620 0 0
tmpfs /dev/shm tmpfs rw,noexec,nosuid,size=24k 0 0
proc /proc proc noauto 0 0
sysfs /sys sysfs noauto 0 0
错误总结:
最容易也是最经常出现的错误就是如法找到kernel文件,但是我们的配置文件中又什么都有,看不出来错误,这里如果是虚拟机的话,建议认真再做一次,如果是真实机的话,可以再编译一次。
grub> root (hd0,0)
Filesystem type is xfs, partition type 0x83
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... no
Error 15: File not found
该错误在找不到指定的文件时出现, 但是此时像磁盘或分区信息这样的其他配置都没问题(只是找得到相应的分区或磁盘, 至于对不对它可不管). 一般来说没找到的文件以kernel居多. 首先需要确认一下在你的/boot里的那个kernel, 如果需要存在于你/boot里那个kenel的完整的文件名, 使用livecd, rescue盘或其他安装在硬盘上的linux系统引导成功后挂载那时在配置Grub时候指定的/分区和/boot(需要的话), 然后使用chroot进入那时的根分区, 使用下面的命令进行查找.
代码:
# cd /usr/src/linux/
# make menuconfig
# make
完成之后拷贝进/boot:
# cp /usr/src/linux/arch/i386/boot/bzImage /boot
重命名一下 kernel, 和你在grub.conf中指定的一样就可以了. 顺便再检查一下grub.conf中kernel那行引用的分区是否正确.
除 了kernel的丢失或损坏, BIOS无法识别存放Grub的stages和kernel的硬盘分区也会出现相同的Missing 错误.同时存放Grub的stages和kernel的分区不应该是使用software RAID-5(或者是使用其他优化存储技术的分区, 比如LVM或LVM2)的.
ttylinux更详细内容请看http://minimalinux.org/ttylinux/
转载于:https://blog.51cto.com/fengzhilinux/343913