LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1389|回复: 4

将LFS-liveCD安装到硬盘的补充研究

[复制链接]
发表于 2007-2-21 17:24:41 | 显示全部楼层 |阅读模式
近来一直在学习LFS,反复弄了好几次,终于基本熟悉了LFS的流程,本想继续BLFS,奈何电脑配置太差,暂时对GNOME和KDE之类的编译时间有所恐惧,无意间发现LFS-liveCD 做的挺不错的,对于像我这样平时用LINUX学习点程序的人很适合,自带的XFACE能基本满足一般的桌面应用,中文支持也相当不错,于是想直接把liveCD装到硬盘上玩,经过一番折腾,基本成功,方法如下:
注:本帖参考了http://www.linuxsir.cn/bbs/showthread.php?t=243326,主要是补充了后面修改启动脚本的过程。。

我使用的版本为: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:S1nce:/sbin/sulogin
sd:06nce:/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,基本完成了!呵呵。。。
发表于 2007-2-23 13:57:52 | 显示全部楼层
好               ````````
回复 支持 反对

使用道具 举报

发表于 2007-2-25 10:38:44 | 显示全部楼层
还是不太懂,努力学习
回复 支持 反对

使用道具 举报

发表于 2007-2-25 15:49:08 | 显示全部楼层
赞一个!非常好!
  我使用的版本是lfslivecd-x86-6.2-5
补充几点:
1、如果是64位机器,menu.list里增加的kernel=linux要改成linux64(当然文件要cp或者修改路径)。

2、今天(20070225)已经有新的livecd下载,lfslivecd-x86-6.2-5.iso。新的版本内核为2.6.16.38。内核这个问题,我是没有重新编译的,本来就是个环境而已,直接拿isolinux里的用就ok了。

3、我的menu.list很简单,root可以读写
    title lfs
    kernel=/linux64 rw root=/dev/sda4
    append initrd=/initramfs_data_cpio.gz

4、关于解压缩root.ext2的问题,其实也不一定非要重新编译内核,emerge 个 zisofs-tools然后
     mkzftree -u -F /mnt/livecd/root.ext2 ~/root.ext2
回复 支持 反对

使用道具 举报

发表于 2007-2-25 21:19:39 | 显示全部楼层
好帖。学习。建议加精
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表