LFS筆記 00 準備環境

最近沒什麼事,再玩一次LFS吧,在這裏將具體的步驟記錄下來,分享給你們。 linux


先介紹一下個人環境,Ubuntu 13.04 Desktop amd64 shell

虛擬機:VirtualBox Ubuntu 12.04 Server i386 bash

LFS版本:7.3 框架

文檔下載地址:http://www.linuxfromscratch.org/lfs/downloads/7.3/ ssh

package下載地址:ftp://ftp.lfs-matrix.net/pub/lfs/lfs-packages/lfs-packages-7.3.tar 工具


0.安裝Ubuntu 12.04 Server i386 ui

Desktop對於LFS的製做來講沒有什麼用,如何安裝不說啦,網上都有。 spa

注意兩點: .net

安裝i386,不是amd64,不然會有一些麻煩。 code

格式化磁盤時不要使用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'



環境準備完成!

相關文章
相關標籤/搜索