转载请注明。谢谢!

    

    这篇文章的主要步骤是:

> 进入liveCD

> 格式化分区(hda1, hda5, hda6), 最后系统装在hda1上

> 把liveCD上的文件系统拷贝到分区 /dev/hda1上

> 安装grub 和 内核

> 重新启动

> 进入一些设置

> 添加2个快捷脚本

补充:

网上还有另外一篇文章,也是把liveCD安装到虚拟机中。

不同的是,他是通过liveCD,制作一个自己的ISO文件,然后再通过此ISO文件安装到虚拟机中。

参考:http://www.linuxsir.org/bbs/thread342660.html



1.环境

虚拟机:vmware-6.5

liveCD: lfslivecd-x86-6.3-r2160.iso

2.安装虚拟机,从liveCD启动

  > Virtual Machine

  > Custom

> New-Workstation

> Guest operating system里选择Linux,在Version里选择Other Linux 2.6.x kernel

  > Network connection里选择Use network address translation(NAT)

> SCSI Adpters选择默认的LSI Logic

  > 选择Create a new virtual disk

> Virtual Disk Type,这里我选择了IDE,作者选的是SCSI

> 硬盘大小,我选 10G

> 完成向导后在虚拟机的界面里选择Edit virtual machine settings,将CD-ROM改为Use ISO image

  > Start this virtual machine开是虚拟机

> 时区我选择Asia/Shanghai, 选择本地语言为Chinese (Simplified, UTF-8)

> 其它的都按默认选择了。


3.putty连接,方便复制、粘贴

配置网络

# net-setup 选择eth0, DHCP方式

启动sshd服务

# /etc/rc.d/init.d/sshd restart

查看IP

# ifconfig

设置秘密, 以便从远程登陆

# passwd

从宿主机上启动putty, 连接。


4.使用 cfdisk 分出3个分区:hda1, hda5, hda6

hda1: 安装 liveCD

hda5: 后面自己联系LFS使用

hda6: swap分区

mke2fs /dev/hda1

mke2fs /dev/hda5

mkswap /dev/hda6

5.创建目录,挂载

mkdir /mnt/{lfs,livecd} 

mount /dev/hda1 /mnt/lfs

mount /dev/mapper/lfs-cd /mnt/livecd

将/mnt/livecd 下的除/tmp ,/proc ,/boot 之外的所有文件复制到/mnt/lfs

用mkdir手动在/mnt/lfs 下建立tmp ,proc ,boot,并修改 tmp 的权限: chmod a+w tmp

6.编译内核

删除原内核,解压内核到其/usr/src目录下:

rm -rf /mnt/lfs/usr/src/*

tar -xvf lfs-sources/linux-2.6.22.5.tar.bz2 // 内核版本我的是2.6.22.5


mv linux-2.6.22.5 /mnt/lfs/usr/src/

cd /mnt/lfs/usr/src/linux-2.6.22.5

配置内核

make menuconfig(基于X11的图形内核配置工具)

原作者的建议:

注意,在Vmware下以下选项必须选上,否则编译要出问题:

Device Drivers --->SCSI device support ---><*> SCSI disk support 

Device Drivers --->SCSI device support --->SCSI low-level drivers ---> <*> BusLogic SCSI support 

Device Drivers ---> Fusion MPT device support ---><*> Fusion MPT (base + ScsiHost) drivers 和 <*> Fusion MPT misc device (ioctl) driver(这个不确定) 

Device Drivers ---> USB support ---><*> USB Mass Storage support 

Device Drivers ---> Networking support --->Ethernet (10 or 100Mbit) ---> <*> AMD PCnet32 PCI support

最好把ext3文件系统支持也编译进内核,ext2的选项也需要

<*> Ext3 journalling file system support 

<*>Ext3 extended attributes 

<*>Ext3 POSIX Access Control Lists 

<*>Ext3 Security Labels 

<*>JBB (ext3) debugging support 



编译、安装

make

make modules_install

7.安装grub 和 内核

mkdir /mnt/lfs/boot

cd /mnt/lfs/boot

cp /mnt/lfs/usr/src/linux-2.6.16.38/arch/i386/boot/bzImage .

mkdir grub

cp /mnt/lfs/usr/lib/grub/i386-pc/stage{1,2} grub

grub

在grub 控制台输入

root (hd0,0)

setup (hd0)

将grub安装到MBR上,这里因为写成setup(hd0,0),启动后进不了grub菜单,郁闷了N久

vi grub/menu.lst

写人以下内容

title LFS

root (hd0,0)

kernel /boot/bzImage root=/dev/sda1 rw



理解:在这里,应该重启,即从 hda1 加载系统了。

 因为步骤8,9中修改的是/etc/目录的配置文件,如果不重启,改动的就是liveCD里的文件。



8. 打扫一下系统

vi /etc/inittab

注释掉  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



删除启动时的时区和语言设置脚本

rm /etc/rc.d/rcsysinit.d/{S59clkconf,S69langconf}


在/etc/rc.d/init.d/下添加两个脚本如下:

(1)halt

#!/bin/sh

#####################################

# Begin $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 $rc_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

chmod 0754 /etc/rc.d/init.d/{halt,reboot}

为0 级别建立关机

cd /etc/rc.d/rc0.d

ln -sv ../init.d/halt S99halt

为6 级别建立重启

cd /etc/rc.d/rc6.d

ln -sv ../init.d/reboot S99reboot


9.passwd root

10. 如果需要使用sshd远程登陆,还需要从新设置网络等。

可以写成脚本,放在 root 家目录中,每次执行一下即可。

cat > ~/start_sshd.sh << "EOF"

输入如下内容:

#!/bin/sh


# program: select network and start sshd service

# history: 20110815 initial

# select etho and dhcp

net-setup

echo

echo ">> start sshd service..."

/etc/rc.d/init.d/sshd restart

echo

echo ">> Now, you can login by ssh tools, such as putty"

echo ">> Good Luck ^-^"

echo

EOF

改变模式

chmod a+x start_sshd.sh


每次进入后直接执行脚本即可,其实也就2句话哦。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐