LFS 10.0 零基礎中文安裝教程 超詳細 (一)

說明:
1、本人LFS系統做了很多次,成功過,失敗過。也踩了很多雷,現將本人的經驗及教訓編寫成本教程,也是給自己留個備忘錄,以備隨時翻閱!
2、本教程的命令大多來自於LFS 10.0 手冊。
3、本教程命令經本人實際安裝,一步一步編入本教程。確保每一條命令的準確。寫本教程共做了6次LFS系統(2次LFS9.0,4次LFS10.0),前幾天所做教程(名稱:LFS 10.0 超詳細搭建過程),沒有經過測試就放到了網上,引來一些朋友轉載。後來親自測試,編譯gcc時忘記刪除目錄,導致後來的在編譯到內核的時候會出現GCC錯誤。
4、本教程適合初學者,高手大神請繞行。
5、LFS系統不象其它的系統或軟件,安裝只需數分鐘或數十分鐘,多的1、2個小時也基本可以搞定。LFS系統,是用天來計算。所以,安裝LFS系統要有耐心。同時,做一次LFS系統,也會讓你學到很多Linux方面的知識。
6、LFS系統不像其它Linux發行版,你根本就不知道它在你計算機裏安裝了什麼軟件。而LFS系統,我們是從源代碼一個一個軟件來安裝。這就等於是自己做了一個發行版的Linux系統一樣。
7、由於本人才疏學淺,教程中錯誤之處在所難勉。發現錯誤請留言告之,接到通知後,我會第一時間改正。同時,也讓用本教程的朋友少走一些彎路。
8、建議:LFS手冊,即是一本LFS安裝指導書,同時也是很好的一本Linux下軟件安裝、系統設置、配置系統文件、瞭解計算機啓動過程、軟件運行等方面非常棒的書。有時間的朋友建議讀一遍。







費話少說,進入正題!

                                   第一章  準備主機系統

1、宿主系統的思路:網上安裝LFS系統,都是先安裝一個linux宿主系統。然後用這個系統啓動電腦,再進行LFS系統的安裝。這樣的作法,既浪費時間,也浪費硬盤空間。我的方法是採用VirtualBox虛擬機,用其它linux發行版的live-cd啓動電腦,安裝LFS必要的軟件,使宿主機滿足構建LFS系統的要求。這個宿主機及安裝的軟件只是存在於內存當中,不佔用硬盤空間。我選擇的是debian9.0.0的live-cd。下載地址:http://cdimage.debian.org/cdimage/archive/9.0.0-live/amd64/iso-hybrid/debian-live-9.0.0-amd64-xfce.iso (用迅雷或其它下載軟件下載,否則下載速度會很慢。)

2、電腦配置如圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

3、虛擬機版本:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

4、建立虛擬機:

打開VirtualBox 6.1軟件,給虛擬機取個名字,"版本(V)"選擇“Other Linux(64-bit)”,內存儘量設置的大些,這樣可又加快軟件的編譯速度。我設置的是4096M,虛擬硬盤:選擇“現在創建虛擬硬盤”,點擊“創建”,虛擬硬盤文件類型:選擇“VDI(VirtualBox 磁盤映像)”點擊“下一步”,存儲在物理硬盤上:選擇“動態分配”點擊“下一步”,文件位置和大小:“文件位置”可以自定義,“存儲空間”,這裏根據自己硬盤的空間自定義。我設置了40G的空間,以便折騰Blfs。點擊“創建”:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

這樣,虛擬機就創建成功了。

5、虛擬機設置:

右鍵點擊虛擬機,選擇“設置”在彈出的對話中選擇“系統”,“啓動順序”取消“軟盤啓動”(將“軟盤啓動”前面的挑去掉),並將其移動到最後啓動,
點擊“處理器”,儘可量將處理器數量設置多些。我設置了“4”核心,點擊左側的“存儲”,選擇下載的debian 9.0.0 live-cd ,點擊左側“網絡”,將“網卡1”中的“啓用網絡連接(E)”的“連接方式(A):”設置成“橋接網卡”。

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

點擊下方的“Ok”按鈕。完成虛擬機的設置。

6、啓動虛擬機:

(1)選擇左側剛建的虛擬機,再點擊右側工具欄上的“啓動”按鈕,如圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

出現如圖所示:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

再次選擇一下debian 9.0.0的live-cd光盤。

(2)啓動後,會來到“Main Menu”的debian啓動菜單,直接選擇第一項“Debian GNU/Linux Live (kernel 4.9.0-3-amd64)”回車,如圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

(3)系統啓動完成後,進入debian 9.0.0的安裝桌面,點擊左上角的“Applications”主菜單,選擇“Terminal Emulator”終端,如圖:
LFS 10.0 零基礎中文安裝教程  超詳細 (一)

(4)終端窗口中輸入:
sudu su root
(象以上的命令,是直接在終端或Putty直接輸入,然後回車執行。)
切換到root用戶。
更改root密碼,輸入:
passwd
回車後,輸入兩次一樣的密碼。這樣,root密碼設置完成。如圖:





LFS 10.0 零基礎中文安裝教程  超詳細 (一)

(5)將終端窗口最小化,點擊最下方“工具框”中的瀏覽器的圖標(那個象地球的圖標)如圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

在瀏覽器中打開百度,搜索“debian yuan”,找到“網易debian源”點擊進入,如圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

選擇網易提供的debian源的地址,點擊右鍵,選擇“Copy”,複製下來,如圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

點擊剛纔最小化的終端窗口,輸入:
nano /etc/apt/sources.list.d/base.list
(用Tab鍵自動補全功能,方便快捷。)
打開源文件,如圖:


LFS 10.0 零基礎中文安裝教程  超詳細 (一)

將裏面原來的源地址註釋掉,把網易的源地址粘貼到這裏。直接右鍵“Paste”粘貼,如圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

將粘貼源地址前面的空格去掉,如下圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

按Ctrl+o回車保存,再按Ctrl+x退出。

以root用戶運行:

apt-get update

(6)更新完軟件源後,安裝net-tools和openssh-server兩個軟件。
apt-get install net-tools
apt-get install openssh-server

apt-get install openssh-server命令輸入完後,系統需要確認,在鍵盤上輸入“y”鍵回車,電腦纔會安裝。

openssh-server安裝完成後,需要對其進行配置。輸入:

nano /etc/ssh/sshd_config

打開sshd_config文件,修改裏的PermitRootLogin prohibit-password這條語句,將前面的#號去掉,並且把後面的prohibit-password去掉,換成yes。
如圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

將PasswordAuthentication yes前面的#號去掉,如圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

改完後,保存退出。
啓動ssh,輸入:

/etc/init.d/ssh start

輸入:

ifconfig

如圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

這裏需要記住網卡名、ip地址:
我的網卡名:enp0s3 (0是數字“零”,不是字母“O”),IP地址:192.168.3.27
兩個“exit”退出終端窗口,關閉瀏覽器,將虛擬機最小化。至此,虛擬機配置全部完成。

7、Putty登錄虛擬機:
打開Putty軟件,輸入IP地址:192.168.3.27,名字自己定義一個,想調整字體和字號的,在“Fonts”裏,自己設置,弄好後保存一下,雙擊Putty終端的名字,打開Putty終端,輸入用戶名:root 密碼:剛纔在虛擬機裏設置的root密碼回車,就可以登錄了。

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

8、安裝live-cd缺少的軟件:

創建version-check.sh腳本文件,來檢查宿主機中的軟件是否符合LFS系統的要求:


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
MYSH=$(readlink -f /bin/sh)
echo "/bin/sh -> $MYSH"
echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash"
unset MYSH

echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1

if [ -h /usr/bin/yacc ]; then
  echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
elif [ -x /usr/bin/yacc ]; then
  echo yacc is `/usr/bin/yacc --version | head -n1`
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 [ -h /usr/bin/awk ]; then
  echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
elif [ -x /usr/bin/awk ]; then
  echo awk is `/usr/bin/awk --version | head -n1`
else 
  echo "awk not found" 
fi

gcc --version | head -n1
g++ --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`
python3 --version
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1  # texinfo version
xz --version | head -n1

echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c
if [ -x dummy ]
  then echo "g++ compilation OK";
  else echo "g++ compilation failed"; fi
rm -f dummy.c dummy
EOF

運行version-check.sh腳本文件,輸入:

bash version-check.sh

如圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

可以看出裏面有很多缺少很多軟件或鏈接沒有創建。下面安裝軟件及創建鏈接。輸入:

ln -sf bash /bin/sh //修改bash指向/bin/sh
apt-get install bison //安裝bison
apt-get install g++ //安裝g++
apt-get install texinfo //安裝texinfo
apt-get install gawk //安裝gawk
再次執行version-check.sh腳本,將輸出的軟件版本與下圖(手冊中提供)中的軟件版本進行比較。注意:軟件的版本不要比手冊中提供的軟件版本太低,或者太高。如下圖:




LFS 10.0 零基礎中文安裝教程  超詳細 (一)

以下是我機器上的截圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

上面兩幅圖對比可以看出,軟件基本都滿足要求。

9、硬盤分區:

(1)虛擬機只有一塊硬盤sda,這裏創建兩個分區,sda1爲交換分區,sda2爲主分區。創建新分區,輸入:

cfdisk /dev/sda

進入分區軟件,如圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

此處選擇,dos分區,回車,如圖 :

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

按鍵盤上的“n”鍵,建立交換分區,空間更改爲:2048M,設置爲主分區,回到主界面,按鍵盤上的“t”鍵,分區設置爲交換分區(Linux swap / Solaris)。設置好後,如下圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

按向下光標,移動到未劃分的空間,按鍵盤上的“n”鍵,剩餘空間全部分配給主分區,直接回車,設置成主分區,回到主界面,按鍵盤上的“b”鍵,將主分區設置爲啓動分區。設置好後如下圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

注意:/dev/sda2 分區後面的“*”號,這代表,它是啓動分區。
向右移動光標到“write”回車,鍵盤輸入“yes”回車,保存分區。然後,按鍵盤上的“q”鍵退出分區軟件。

(2)格式化分區:

mkfs -v -t ext4 /dev/sda2
mkswap /dev/sda1

10、設置$ LFS變量,輸入:

export LFS=/mnt/lfs

11、掛載新分區,輸入:

mkdir -pv $LFS
mount -v -t ext4 /dev/sda2 $LFS
/sbin/swapon -v /dev/sda1

12、創建源代碼目錄、並賦予權限、進入目錄:

mkdir -v $LFS/sources
chmod -v a+wt $LFS/sources
cd $LFS/sources/

13、下載源代碼:

我選擇的是科大的鏡像網站,下載地址:http://mirrors.ustc.edu.cn/lfs/lfs-packages/10.0/ 先下載wget-list文件。然後,打開這個文件,將裏面文件名前方的網站改成:http://mirrors.ustc.edu.cn/lfs/lfs-packages/10.0/ 如圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

然後,按“Ctrl+a”全選,複製。再Putty終端窗口中輸入:

nano wget-list

在Putty窗口中新建的wget-list文件裏,點擊鼠標“中鍵”,剛纔所選的鏈接就全部被粘貼到了這裏。如圖:

LFS 10.0 零基礎中文安裝教程  超詳細 (一)

按鍵盤上的“Ctrl+o”回車保存,然後再換“ctrl+x”退出。Putty窗口中輸入:

wget --input-file=wget-list --continue --directory-prefix=$LFS/sources

14、校驗下載軟件包是否正確,輸入:

pushd $LFS/sources
  md5sum -c md5sums
popd

15、創建所需的目錄,輸入:

mkdir -pv $LFS/{bin,etc,lib,sbin,usr,var}
case $(uname -m) in
  x86_64) mkdir -pv $LFS/lib64 ;;
esac
mkdir -pv $LFS/tools

16、添加LFS用戶

groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs

給lfs用戶設置密碼:

passwd lfs

授予lfs用戶對所有目錄的完全訪問權限:

chown -v lfs $LFS/{usr,lib,var,etc,bin,sbin,tools}
case $(uname -m) in
  x86_64) chown -v lfs $LFS/lib64 ;;
esac
chown -v lfs $LFS/sources

切換到lfs用戶:

su - lfs

17、設置環境

創建.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=/usr/bin
if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
PATH=$LFS/tools/bin:$PATH
export LFS LC_ALL LFS_TGT PATH
EOF

啓用剛纔創建的用戶配置:

source ~/.bash_profile

至此,主機系統已經準備就緒。下一章開始構建臨時系統。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章