最近没什么事,再玩一次LFS吧,在这里将具体的步骤记录下来,分享给大家。
先介绍一下我的环境,Ubuntu 13.04 Desktop amd64
虚拟机:VirtualBox Ubuntu 12.04 Server i386
LFS版本:7.3
文档下载地址:http://www.linuxfromscratch.org/lfs/downloads/7.3/
package下载地址:ftp://ftp.lfs-matrix.net/pub/lfs/lfs-packages/lfs-packages-7.3.tar
0.安装Ubuntu 12.04 Server i386
Desktop对于LFS的制作来说没有什么用,如何安装不说啦,网上都有。
注意两点:
安装i386,不是amd64,否则会有一些麻烦。
格式化磁盘时不要使用LVM分区,使用LVM也会造成一些麻烦。
1.配置SSH
安装openssh server,注意不是Java的SSH框架哦。使用它可以很方便的登录到终端上,强烈推荐。
sudo apt-get install openssh-server
客户端可以使用Putty,具体网上都有,不写了。
2. 安装必要软件包
sudo apt-get install build-essential gawk bison texinfo
可能还会缺少m4,patch两个包,如果没有的话也装上。
sudo apt-get install m4 patch
3.检查系统
生成脚本version-check.sh
cat > version-check.sh << "EOF" #!/bin/bash # Simple script to list version numbers of critical development tools export LC_ALL=C bash --version | head -n1 | cut -d" " -f2-4 echo "/bin/sh -> `readlink -f /bin/sh`" echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3- bison --version | head -n1 if [ -e /usr/bin/yacc ]; then echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`"; else echo "yacc not found"; fi bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6- echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2 diff --version | head -n1 find --version | head -n1 gawk --version | head -n1 if [ -e /usr/bin/awk ]; then echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`"; else echo "awk not found"; fi gcc --version | head -n1 ldd --version | head -n1 | cut -d" " -f2- # glibc version grep --version | head -n1 gzip --version | head -n1 cat /proc/version m4 --version | head -n1 make --version | head -n1 patch --version | head -n1 echo Perl `perl -V:version` sed --version | head -n1 tar --version | head -n1 echo "Texinfo: `makeinfo --version | head -n1`" xz --version | head -n1 echo 'main(){}' > dummy.c && gcc -o dummy dummy.c if [ -x dummy ] then echo "gcc compilation OK"; else echo "gcc compilation failed"; fi rm -f dummy.c dummy EOF
执行:
bash version-check.sh
4.分区
创建了两块虚拟硬盘,/dev/sda用来安装宿主系统,/dev/sdb用来编译安装LFS。
给/dev/sdb分区,我使用cfdisk工具:
sudo apt-get install m4 patch
/dev/sdb1 交换分区
/dev/sdb2 目标系统根目录
如图:
5.格式化
格式化主分区/dev/sdb2为ext3:
sudo mkfs.ext3 /dev/sdb2
格式化交换分区/dev/sdb1:
sudo mkswap /dev/sdb1
6.使用root帐号
受不了sudo了,直接用root吧~
sudo passwd root根据提示输入root密码。
切换到root:
sudo passwd root
7.挂载新分区
设置环境变量:
export LFS=/mnt/lfs创建文件夹并挂载:
mkdir -pv $LFS mount -v -t ext3 /dev/sdb2 $LFS
可以检查一下当前的磁盘挂载情况,应该会多出一个/dev/sdb2
df -h
8.下载源代码包
wget ftp://ftp.lfs-matrix.net/pub/lfs/lfs-packages/lfs-packages-7.3.tar
创建文件夹并设置权限:
mkdir -v $LFS/sources chmod -v a+wt $LFS/sources网速快的直接下载之: 网速一般的人也可以用迅雷等工具下载后scp到宿主机器上。
下载完成后,解压,验证md5 hash:
tar -vxf lfs-packages-7.3.tar mv -v 7.3/* $LFS/sources pushd $LFS/sources md5sum -c md5sums popd
9.继续
创建tools文件夹并做软链接:
mkdir -v $LFS/tools ln -sv $LFS/tools /添加lfs用户:
groupadd lfs useradd -s /bin/bash -g lfs -m -k /dev/null lfs设置密码:
passwd lfs获取权限:
chown -v lfs $LFS/tools chown -v lfs $LFS/sources切换到lfs用户:
su - lfs
9. 准备环境
创建.bash_profile
cat > ~/.bash_profile << "EOF" exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash EOF
创建.bashrc
cat > ~/.bashrc << "EOF" set +h umask 022 LFS=/mnt/lfs LC_ALL=POSIX LFS_TGT=$(uname -m)-lfs-linux-gnu PATH=/tools/bin:/bin:/usr/bin export LFS LC_ALL LFS_TGT PATH EOF生效:
source ~/.bash_profile
并行编译(可选):
如果双核CPU可以使用'-j 2',四核使用‘-j 4’,其它类似。
export MAKEFLAGS='-j 2'
环境准备完成!