准备工作:
下载LiveCD的ISO文件(因为在制作本文时最新正式版只有6.3-r2145下载):
http://ftp.osuosl.org/pub/lfs-livecd...-6.3-r2145.iso
刻录ISO文件到光盘上,如果你是用真实机器当然少不了这步,不过如果你用VMWare的话,就可以直接使用ISO文件了。
以VMWare Workstation 5.5为例(真实机器可跳过此部分)
选择File->New->Virtual Machine...启动向导
选择Custom,并选择New-Workstation 5然后在选择Guest operating system里选择Linux,在Version里选择Other Linux 2.6.x kernel
存放目录、处理器数量和内存大小根据实际情况,建议内存不得小于128M,最好256M以上
相关知识点:
LFS-6.3采用了GCC4.1.2,如果使用128M编译GCC4.x.x话就需要使用swap了,但如果配置了256M就可以在没有swap的情况下完成编译,所以条件允许的情况下使用256M。
Network connection里选择Use network address translation(NAT)
SCSI Adpters选择默认的LSI Logic就可以了
注意点:
这里选择的磁盘类型对于最后编译内核使用选项是有影响的,我在本文的第一版中使用BusLogic来建立系统,因此这里选择使用LSI Logic来用,如果使用BusLogic的话可以参考本文第一版中的内核编译选项来代替后面的内核选项部分。
选择Create a new virtual disk
在Virtual Disk Type这步比较重要,你可以选择IDE也可以选择SCSI,但这里的选择直接影响到最后编译内核时的选项。这里以选择IDE为例子。
相关知识点:
如果选择了IDE,则内核的默认设置就可以支持,但如果选择了SCSI,就必须在内核中加入对SCSI Adpters的支持,因为前面选择了LSI Logic,所以内核中就必须加入对LSI Logic的支持,否则将无法启动。
不过这里我建议选择使用IDE,一方面方便驱动,另外LFS-6.3所使用的内核对于VMWare中模拟的LSI SCSI设备驱动有问题,无法正确识别出LSI的SCSI磁盘,用该LiveCD启动后可能无法识别出硬盘来。
对于磁盘大小,使用4G足够编译LFS了,但如果你打算编译更多的BLFS,这里可以考虑适当的增加一些大小,如果磁盘空间比较富裕就用默认的8G好了。
完成向导后在虚拟机的界面里选择Edit virtual machine settings,将CD-ROM改为Use ISO image,然后选择LiveCD的ISO文件,如果你已经刻录好了光盘,将光盘放入光驱就行了。
点Start this virtual machine开是虚拟机
由于虚拟盘上没有任何信息,因此将自动从LiveCD中启动,在启动过程中会出现选择时区等信息,你可以按照实际情况选择,也可以按照默认选择,简单点就是等待一会系统会自动进行选择。这里我选择时区为Asia/Shanghai,选择本地语言为Chinese (Simplified, UTF-8),其它的都按默认选择了。
启动完成LiveCD后就开始建造自己的LFS的历程了。
这里先介绍以下两个LiveCD下的重要目录
/usr/share/LFS-BOOK-6.3-HTML目录存放的就是LFS手册了
/lfs-sources里面存放的就是建造LFS所需要的源码包,不需要到处下软件了。
磁盘分区:
输入命令:
cfdisk /dev/hda
这里可以按照你自己的需要的分区,这里我按照设置一个根分区和一个交换分区为例,交换分区占用512M,其余的全部分给根分区。
磁盘分区 作用
/dev/hda1 swap
/dev/hda2 作为目标系统根目录
保存退出后进行磁盘分区的格式化
mkswap /dev/hda1
mkfs.xfs /dev/hda2
如果你的内存不太大,想在编译期间就使用上交换分区的话,可使用下面的命令激活交换分区
swapon /dev/hda1
相关知识点:
swapon用于激活交换分区
swapoff用于将激活的交换分区停用
可以通过free命令来查看当前的内存使用情况
创建LFS的“创作基地”
export LFS=/mnt/lfs
mkdir -pv $LFS
相关知识点:
export LFS=/mnt/lfs这条命令的作用是为了后面引用“创作基地”的绝对路径方便而设置LFS这样的环境变量。
加载/dev/hda2到“创作基地”
mount /dev/hda2 $LFS
创建必要的目录并设置属性
创建源代码编译用目录
mkdir -v $LFS/sources
chmod -v a+wt $LFS/sources
创建工具链目录
mkdir -v $LFS/tools
ln -sv $LFS/tools /
创建lfs用户
groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
设置lfs密码,设置为空就行了
将tools和sources目录的用户改为lfs,以便后面使用lfs来操作这两个目录
chown -v lfs $LFS/tools
chown -v lfs $LFS/sources
登陆到lfs用户
su - lfs
相关知识点:
其实如果不使用lfs用root也是能完成工具链的,不过需要对root的环境变量进行修改,还要防止因为输入错误而导致覆盖主系统下的文件,所以LFS手册中制作工具链部分就是为了解决这种意外的发生而用lfs用户来建立工具链
建立lfs用户的环境
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH
EOF
source ~/.bash_profile
里利用了bash的环境变量的设置文件将lfs的环境设置为符合编译工具链要求的最少的环境参数
这里面最重要的就是PATH这个参数,目的是为了能够利用工具链里面的工具制作工具链:首先查找/tools/bin下是否有需要的命令,如果没有再到/bin和/usr/bin下找,然后用 /bin或/usr/bin下面的命令来帮助生成需要的命令并放在/tools/bin下,这样此消彼涨,最终可完成一个自给自足的工具链。
到此为止就可以开始工具链的制作了,不过制作LFS是一个漫长而浩大的工程,所以要一直开机直到完成有时候比较困难,特别是在机器速度比较慢的情况下,能够重新启动到最后工作的状态是很重要的。在不同的阶段重新启动并恢复状态的步骤不完全相同,所以本文会在不同的阶段讨论重新启动恢复到工作状态的方法和步骤。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。