歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

lsf制作live CD的具體步驟


手把手教你如何建立自己的Linux系統(LFS速成手冊)



前言:
  LFS是一部非常好的制作一個完整的操作系統的手冊,但LFS是屬於指導性的手冊,因此它默認的前提條件是具備一定的Linux使用經驗的用戶群,所以它在每個軟件包的安裝部分只給出了在目錄中的全部操作指令,而對於解壓縮之類的則交給用戶自己去解決,但對於很多第一次使用LFS的用戶往往會出現一些不清楚某條命令應該是在哪裡執行的問題,本文力圖從實例上來解釋這些問題。
  本文雖然是采用VMWare Workstation 5.0的環境下制作的,但仍然符合使用真實機器上的過程,只是會在某些地方要根據具體機器進行更改,文中會在這些地方做出說明。
  使用WMWare來寫這篇文章是為了說明方便,因為VMWare在各種不同機器環境下模擬的虛擬設備幾乎相同,所以用它來說明一些需要實際例子才說的清楚的地方非常合適,而且用VMWare來做即使出錯也不會對真實的系統造成破壞,很適合新手使用,唯一的缺點就是速度慢了些,一般只有真實機器的一半左右的速度。
  本文力爭完成一個完整的制作命令,可以根據本文提供的命令順序輸入就可以完成LFS了,通常命令表示為
   代碼:命令
  由於制作過程比較漫長,特別是在一些比較慢的機器上,關於在制作過程中重新啟動後恢復到工作狀態的方法在文中有詳細的介紹,但由於篇幅比較長可能看起來比較麻煩,可以看我專門將這部分提取出來後完成的一篇《制作LFS過程中各個階段恢復工作狀態的方法》,內容比較集中容易查看。
  如須轉載請注明作者為沖天飛豹(youbest),並提供轉載出處。
  
准備工作:
  刻錄ISO文件到光盤上,如果你是用真實機器當然少不了這步,不過如果你用VMWare的話,就可以直接使用ISO文件了。
  以VMWare Workstation 5.0為例(真實機器可跳過此部分)
  選擇File->New->Virtual Machine...啟動向導
  選擇Custom,然後在選擇Guest operating system裡選擇Linux,在Version裡選擇Other Linux
  存放目錄和內存大小根據實際情況,建議內存不得小於128M,最好256M以上
相關知識點:
  如果使用128M在編譯GCC3.x沒什麼問題,但如果要編譯GCC4.0.x話就需要使用swap了,但如果配置了256M就可以在沒有swap的情況下完成編譯。
  Network connection裡選擇Use network address translation(NAT)
  SCSI Adpters按照默認選擇Buslogic就可以了
  選擇Create a new virtual disk
  在Virtual Disk Type這步比較重要,你可以選擇IDE也可以選擇SCSI,但這裡的選擇直接影響到最後編譯內核時的選項。這裡以選擇SCSI為例子。
相關知識點:
  如果選擇了IDE,則內核的默認設置就可以支持,但如果選擇了SCSI,就必須在內核中加入對SCSI Adpters的支持,因為前面選擇了Buslogic,所以內核中就必須加入對Buslogic的支持,否則將無法啟動,相關部分在最後的內核編譯部分有詳細說明。
  對於磁盤大小,使用默認的4G足夠編譯LFS了,但如果你打算編譯更多的BLFS,這裡可以考慮適當的增加一些大小。
  完成向導後在虛擬機的界面裡選擇Edit virtual machine settings,將CD-ROM改為Use ISO image,然後選擇LiveCD的ISO文件,如果你已經刻錄好了光盤,將光盤放入光驅就行了。
  點Start this virtual machine開是虛擬機
  由於虛擬盤上沒有任何信息,因此將自動從LiveCD中啟動,在啟動過程中會出現選擇時區等信息,你可以按照實際情況選擇,也可以按照默認選擇,簡單點就是等待一會系統會自動進行選擇。這裡我選擇時區為Asia/Shanghai,其它的都按默認選擇了。
  啟動完成LiveCD後就開始建造自己的LFS的歷程了。
這裡先介紹以下兩個LiveCD下的重要目錄
/usr/share/LFS-BOOK-6.1.1-HTML目錄存放的就是LFS手冊了
/lfs-sources裡面存放的就是建造LFS所需要的源碼包,不需要到處下軟件了。
磁盤分區:
輸入命令:
代碼:cfdisk
將出現分區界面
這裡可以按照你自己的需要的分區,這裡我按照設置一個根分區和一個交換分區為例,交換分區占用512M,其余的全部分給根分區。
磁盤分區   作用
/dev/sda1   swap
/dev/sda2  作為目標系統根目錄
保存退出後進行磁盤分區的格式化
代碼:mkswap /dev/sda1
mkfs.xfs /dev/sda2
相關知識點:
  磁盤格式化一定要在磁盤分區未進行加載前進行。
  mkswap是用於將磁盤分區格式化為交換分區的命令。
  這裡我將/dev/sda2格式化了為Xfs格式,如果你喜歡其它格式的文件系統,你可以使用相應的命令來格式化。
注意:這裡要根據實際情況建立和設置分區,如果你不太清楚這個問題,請先不要開始,否則可能造成難以恢復的損失!(這裡只是根據VMWare裡面的情況做的例子,在VMWare中相對安全些,建議初學者在虛擬機中開始。)
如果你的內存不太大,想在編譯期間就使用上交換分區的話,可使用下面的命令激活交換分區
swapon /dev/sda1
相關知識點:
  swapon用於激活交換分區
  swapoff用於將激活的交換分區停用
  可以通過free命令來查看當前的內存使用情況
創建LFS的“創作基地”
代碼:export LFS=/mnt/lfs
mkdir -pv $LFS
相關知識點:
  export LFS=/mnt/lfs這條命令的作用是為了後面引用“創作基地”的絕對路徑方便而設置LFS這樣的環境變量。
加載/dev/sda2到“創作基地”
代碼:mount /dev/sda2 $LFS
創建必要的目錄並設置屬性
創建源代碼編譯用目錄
代碼:mkdir -v $LFS/sources
chmod -v a+wt $LFS/sources
相關知識點:
  chmod a+wt是將目錄或文件的屬性設置為777,這樣任何人都可以對其進行讀寫。
創建工具鏈目錄
代碼:mkdir -v $LFS/tools
ln -sv $LFS/tools /
相關知識點:
  上面這兩句就建立了神奇的工具鏈目錄(是工具鏈目錄不是工具鏈),這樣的創建方式是為了在創建工具鏈和使用工具鏈創建目標系統的時候對於工具鏈的位置都是/tools,這樣可保證工具鏈的正常使用
創建lfs用戶
代碼:groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
設置lfs密碼,設置為空就行了,也就是輸入密碼的時候直接回車就成。
代碼:passwd 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是一個漫長而浩大的工程,所以要一直開機直到完成有時候比較困難,特別是在機器速度比較慢的情況下,能夠重新啟動到最後工作的狀態是很重要的。在不同的階段重新啟動並恢復狀態的步驟不完全相同,所以本文會在不同的階段討論重新啟動恢復到工作狀態的方法和步驟。
  從現在開始一直到第五章結束,也就是完成Stripping中間的步驟中如果重新啟動的恢復步驟:
  1.重新啟動計算機,並從LiveCD啟動
  相關知識點:在VMWare中因為磁盤已經有了信息了,所以會從磁盤啟動,需要在啟動虛擬機中的機器時按F2進入虛擬機的虛擬BIOS,然後在BOOT中設置第一啟動為CD-ROM,保存退出即可。
Copyright © Linux教程網 All Rights Reserved