RedHat7.3LiveinCDROMHowTo
思路:使用cdrom引导并运行linux,关键要解决如下问题:
一:如何把系统运行时候使用的文件系统/dev,/var,/tmp变成可写。
二:如何改变系统引导顺序
基本步骤:
(0) 环境准备
。准备一个PC
大硬盘
光盘刻录机
128M内存
分区如下
/dev/hda1 linux boot ext2
/dev/hda2 linux root ext2
/dev/hda3 linux swap
/dev/hda4 extendend
/dev/hda5 linux root ext2 至少650M以上
。main install安装。
boot分区在/dev/hda1,
root分区在/dev/hda2,
swap分区在/dev/hda3。
必要的工具,例如mkisofs、cdrecord等。
。test install安装
一个分区在/dev/hda5,
swap使用/dev/hda3,
只安装需要放置到CDROM的软件.
注意:不能破坏主引导扇区,它是通过main inst的lilo引导的
。双引导配置
重新启动计算机,此时会进入main install,执行如下步骤:
#mkdir /mnt/lfs
#mount –t ext2 /dev/hda5 /mnt/lfs
# vi /etc/lilo
# /sbin/lilo
——————————————————————
/etc/lilo.conf文件内容如下:
prompt
timeout=50
default=linux
boot=/dev/had
map=/boot/map
install=/boot/boot.b
message=/boot/message
linear
image=/boot/vmlinuz-2.4.18-3
label=main_inst
initrd=/boot/initrd-2.4.18-3.img
read-only
append="ramdisk=20480"
root=/dev/hda2 <——main install 的root分区
image =/mnt/lfs/boot/vmlinuz-2.4.18-3
label=test_inst
read-only
append="ramdisk=32768"
root=/dev/hda5 &——test install的root分区
————————————————————————————
。test install环境调整
重新引导,选择test install ;
确认test install 能够自引导并且一切都正常;
然后根据需要,可以做:
删除不必要的软件包,
安装用户应用软件,
重新编译内核。等等
(一)配置test install环境
。重新引导,选择main install ,并执行
#mount –t ext2 /dev/hda5 /mnt/lfs
。配置/var,/dev到ramdisk系统
#vi /mnt/lfs/etc/rc.d/rc.iso
_______________________________
创建/mnt/lfs/etc/rc.d/rc.iso
# /var
mke2fs -q -i 1024 /dev/ram1 16384
mount /dev/ram1 /var -o defaults,rw
cp -a /lib/var /
# /dev
mke2fs -q -i 1024 /dev/ram2 16384
mount /dev/ram2 /dev -o rw
cp -a /lib/dev /
(建立这么大的/dev是因为inode数目的限制,dev下文件特别多)
____________________________________________________
。编辑/mnt/lfs/etc/rc.sysnit
a) 禁止重新mount 根文件系统位rw
# Remount the root filesystem read-write.
# state=`awk '/(^/dev/root| / / { print $4 }' /proc/mounts`
#[ "$state" != "rw" ] &&
# action $"Remounting root filesystem in read-write mode: " mount -n -o remount,rw /
b) 调用rc.iso脚步
在
# Set the path
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
HOSTNAME=`/bin/hostname`
一节之后,增加如下内容
# To boot from cdrom
. /etc/rc.d/rc.iso
c)禁止激活交换分区
# Now turn on swap in case we swap to files.
#swapon -a
#action $"Enabling swap space: " /bin/true
d)禁止执行fsck
在这个位置
if [ -f /fsckoptions ]; then
fsckoptions=`cat /fsckoptions`
else
fsckoptions=
fi
增加语句,用来控制是否执行fsck
fastboot=yes
fsckoptions=
e)禁止mount 其他文件系统
# Mount all other filesystems (except for NFS and /proc, which is already
# mounted). Contrary to standard usage,
# filesystems are NOT unmounted in single user mode.
#action $"Mounting local filesystems: " mount -a -t nonfs,smbfs,ncpfs -O no_netdev
f) 禁止自动执行文件系统检查
# create the crash indicator flag to warn on crashes, offer fsck with timeout
# touch /.autofsck
。编辑/etc/rc.d/init.d/random
修改如下语句
random_seed=/var/lib/random-seed
为
random_seed=/var/run/random-see
。创建并执行如下脚步,它建立了/var 、/tmp、/dev的模板, 创建/etc/mtab的链接
#cd /mnt/lfs
# vi create_iso.sh
# sh create_iso.sh
————————————————————————
#!/bin/sh
echo tmp
rm -fR /mnt/lfs/tmp
ln -s var/tmp /mnt/lfs/tmp
###
echo mtab
touch /mnt/lfs/proc/mounts
rm /mnt/lfs/etc/mtab
ln -s /proc/mounts /mnt/lfs/etc/mtab
###
echo dev
mkdir /mnt/lfs/lib/dev
cp –a /mnt/lfs/dev /mnt/lfs/lib
###
echo var
mv /mnt/lfs/var/lib /mnt/lfs/lib/var-lib
mv /mnt/lfs/var /mnt/lfs/lib
mkdir /mnt/lfs/var
ln -s /lib/var-lib /mnt/lfs/lib/var/lib
for i in `find /mnt/lfs/lib/var/log -type f`; do cat /dev/null > $i; done
rm `find /mnt/lfs/lib/var/lock -type f`
rm `find /mnt/lfs/lib/var/run -type f`
______________________________________________
。 确认test install环境的正确
重新引导,选择test install
这时这个install应该象一个cdrom似的。
如果有什么工作不正常,或者重新引导,选择main install后进行修复;
或者在test install中执行如下命令后可以进行修复:
mount -o remount,rw /
(二) 创建boot image
。重新引导,选择main install
。产生一个可以启动的软盘
# mkbootdisk --mkinitrdargs --with=ide-cd `uname -r`
。按照如下步骤抽取boot.img中的文件
# dd if=/dev/fd0 of=/tmp/cdrom.img bs=1440k count=1
# mkdir /mnt/bootfd
# mount -o loop -t msdos /tmp/cdrom.img /mnt/bootfd
# zcat /mnt/bootfd/initrd.img > /tmp/initrd-cdrom
# mkdir /mnt/initrd
# mount -o loop /tmp/initrd-cdrom /mnt/initrd
。拷贝test install的内核到boot.img文件中
cp /mnt/lfs/boot/zImage /mnt/bootfd
注意:根据实际情况,有可能需要修改zImage的名字
。拷贝cdrom驱动模块到cdrom.img中
#cd /mnt/initrd/lib
#cp /lib/modules/2.4.18-3/kernel/drivers/cdrom/cdrom.o .
#cp /lib/modules/2.4.18-3/kernel/drivers/ide/ide-cd.o .
#cp /lib/modules/2.4.18-3/kernel/fs/nls/nls_iso8859-1.o .
。 编辑linuxrc文件
# vi /mnt/initrd/linuxrc
----------------------------------
#!/bin/nash
echo "Loading cdrom module"
insmod /lib/cdrom.o
echo "Loading ide-cd module"
insmod /lib/ide-cd.o
echo "Loading nls_iso8859-1 module"
insmod /lib/nls_iso8859-1.o
echo Mounting /proc filesystem