近来一直在学习LFS,反复弄了好几次,终于基本熟悉了LFS的流程,本想继续BLFS,奈何电脑配置太差,暂时对GNOME和KDE之类的编译时间有所恐惧,无意间发现LFS-liveCD 做的挺不错的,对于像我这样平时用LINUX学习点程序的人很适合,自带的XFACE能基本满足一般的桌面应用,中文支持也相当不错,于是想直接把liveCD装到硬盘上玩,经过一番折腾,基本成功。
我使用的版本为:LFS-LiveCD6.2.3
1,用Live-CD启动,分区之类就不说了,这里我要安装到的位置是/dev/hda5
2,mkdir /mnt/{lfs,livecd}
mount /dev/hda5 /mnt/lfs
mount /dev/mapper/lfs-cd /mnt/live
将/mnt/live下的除/tmp ,/proc ,/boot之外的所有文件复制到/mnt/lfs(如果不要源码可以不复制lfs-sources)
用mkdir手动在/mnt/lfs下建立/tmp ,/proc ,/boot。并修改 /tmp的权限: chmod a+w /tmp
3,删除原内核,解压内核到其/usr/src目录下:
rm -rf /mnt/hda5/usr/src/*
tar xvf lfs-sources/linux-2.6.16.27.tar.bz2
cd /mnt/hda5/usr/src/linux-2.6.16.27
patch -Np1 -i /lfs-sources/linux-2.6.16.27-utf8_input-1.patch
4,配置内核(make menuconfig),将Ext2,Ext3选择为编译到内核中,其它根据自己硬件可以把无关的硬件模块去掉,
(参考帖中说,编译内核的时候使用 chroot切换了环境,我发现不切换也没多大问题)
5,复制内核到boot:将编译得到的内核复制到 /mnt/hda5/boot 下,在以前系统的GRUB启动项中加入相关语句(根据自己硬盘情况修改):
title lfs-livecd6.1
root (hd0,4)
kernel /boot/linux root=/dev/hda5 rw vga=791
6,修改 /mnt/hda5/etc/fstab 文件。
好了,如果不出意外的话应该可以进入硬盘上的“liveCD”了,但是这样得到的系统在每次启动时都会让你选择时区语言之类,在关机或重启的时候有些错误发生,需要修改启动脚本,下面的工作在这个系统中完成:
7,用passwd修改root密码
8,修改/etc/inittab(下面是原始的文件,括号中给出修改方法):
# Begin /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc sysinit
l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
su:S1:once:/sbin/sulogin
sd:06:once:/usr/bin/shutdown-helper (将这一行注释掉,这里就是重启或关机发生错误的原因)
1:2345:respawn:/bin/openvt -f -c 3 -e -w -- /usr/bin/livecd-login
2:2345:respawn:/bin/openvt -f -c 3 -e -w -- /usr/bin/livecd-login
3:2345:respawn:/bin/openvt -f -c 3 -e -w -- /usr/bin/livecd-login
4:2345:respawn:/bin/openvt -f -c 4 -e -w -- /usr/bin/livecd-login
5:2345:respawn:/bin/openvt -f -c 5 -e -w -- /usr/bin/livecd-login
6:2345:respawn:/bin/openvt -f -c 6 -e -w -- /usr/bin/livecd-login
(将这些内容修改成
1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600
注意tty后面数字的对应,这样改了之后登录的时候就需要密码了)
# End /etc/inittab
9,删除/etc/rc.d/rcsysinit.d/下的S59clkconf,S69langconf,这样在启动时就不会让你选择时区语言了
10,在/etc/rc.d/init.d/下添加两个脚本如下:
(1)halt
#!/bin/sh
#####################################
# Bigin $rc_base/init.d/halt
#
#####################################
. /etc/sysconfig/rc
. {rc_functions}
case "${1}" in
stop)
halt -d -f -i -p
;;
*)
echo "Usage: {stop}"
exit 1
;;
esac
# End $rc_base/init.d/halt
(2)reboot
#!/bin/sh
###########################################
# Begin $src_base/init.d/reboot
#
###########################################
. /etc/sysconfig/rc
. ${rc_functions}
case "${1}" in
stop)
boot_mesg "Restarting system..."
reboot -d -f -i
;;
*)
echo "Usage: ${0} {stop}"
exit 1
;;
esac
# End $rc_base/init.d/reboot
然后修改这两个脚本的权限为754
11.在/etc/rc.d/rc0.d/下创建链接S99halt:
ln -sv /etc/rc.d/init.d/halt /etc/rc.d/rc0.d/S99halt
在/etc/rc.d/rc6.d/下创建链接S99reboot:
ln -sv /etc/rc.d/init.d/halt /etc/rc.d/rc6.d/S99reboot
12,基本完成了!呵呵。