国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

Linux From Scratch 的一些心得

2024-07-21 02:36:51
字體:
供稿:網(wǎng)友

  摘要
  相信大家肯定聽說過LFS(linux From Scratch)大家有沒有自己搞過呢?我花了一個多星期的課余時間,在我的Celeron 366上搞了起來,這個是我工作完成后的一些心得,大家可以做個參考
  這個階段工作的主要參考是《Linux From Scratch》這份文檔,下面是這份文檔中講的思路,也是我工作的步驟。我對每一步解釋一下。
  
  1. 兩個非凡符號:$LFS,SUBs:
  
  $LFS開始是用命令eXPort LFS=/mnt/lfs定義的,后來在用戶的.bash_PRofile中用LFS=/mnt/lfs來定義的,因為《LFS》中所有軟件編譯中都用到-prefix=$LFS/static/確定靜態(tài)系統(tǒng)的安裝位置。
  
  SUBs是用來衡量時間的,編譯Bash時用的時間為1SUBs,這樣,編譯每一個軟件的時候,你就可以預料所用的時間了。
  
  2. 劃出一個空的分區(qū),建立一個新的用戶:
  
  劃出新的分區(qū)是用來存儲兩個系統(tǒng)的,中間平臺(一個靜態(tài)的編譯平臺)和目標系統(tǒng)(LFS)。這個空間最小是1G,建議在2G以上,這樣就不必編譯完一個軟件就刪除源碼了。
  
  在創(chuàng)建中間平臺的時候要注重不要用root賬號來工作,萬一敲錯一個命令,你裝的原來的系統(tǒng)就不行了。但是要保證新開的賬號能訪問新畫出的空間中的所有資源。
  
  3. 格式化分區(qū),創(chuàng)建目錄:
  
  用ext2分區(qū)格式,格式化新的分區(qū),掛載到/mnt/lfs目錄下面。創(chuàng)建目錄/mnt/lfs/static和/mnt/lfs/static/src,這兩個目錄分別是中間平臺的根目錄和中間平臺的源代碼目錄。中間平臺的所有內(nèi)容都將放在目錄/mnt/lfs/static中。我的分區(qū)結(jié)構(gòu)如下圖:
  
  4. 編譯靜態(tài)開發(fā)平臺:
  
  把Bash-2.05a、Binutils-2.13、Bzip2-1.0.2Diffutils-2.8.1、Fileutils-4.1、Findutils-4.1、Gawk-3.1.1、GCC-3.2、Grep-2.5、Gzip-1.2.4a、Make-3.80、Patch-2.5.4、Sed-4.0、Sh-utils-2.0、Tar-1.13、Texinfo-4.2、Textutils-2.1、Util-linux-2.11w這些軟件的源代碼復制到/mnt/lfs/static/src/目錄中,用自己原來系統(tǒng)上的Gcc進行編譯。
  
  為什么沒有Glibc?因為所有的軟件在編譯的時候都是靜態(tài)編譯的。
  
  為什么要這么多軟件,不是只要Gcc嗎?因為我們configure配置腳本中用到了這些軟件。在《LFS》中每個軟件的后面會有Installation Dependencies,這里就列出了編譯,安裝這個軟件所要用到了其他工具。
  
  configure過程中一般會用到下列選項:
  
  --enable-static-link告訴編譯器,這個程序用靜態(tài)連接。
  --prefix=$LFS/static告訴安裝腳本,這個程序的安裝位置。
  LDFLAGS=-all-static設(shè)置Gcc的環(huán)境變量,讓其靜態(tài)連接。
  make CC="gcc -static -s"設(shè)置Gcc的環(huán)境變量,讓其靜態(tài)連接。
  --disable-nls:我不是很懂,大概是禁止編譯器以國際標準編譯(原文:This option disables internationalization (also known as i18n). We don't need this for our static programs and nls often causes problems when you're linking statically.)
  
  編譯過程按照《LFS》上面講的一步一步走,一般沒有什么問題,當在下一步(chroot以后)出現(xiàn)自己編譯的東西不能用時,多數(shù)情況是這里靜態(tài)編譯出的問題,解決辦法是按照說明重新靜態(tài)編譯,安裝一次(哪個軟件不行,重裝哪個),也可以看源碼中的README或INSTALL說明文檔,自己選擇編譯時候的參數(shù)。
  
  5. 用上一步得到的靜態(tài)編譯平臺制作目標系統(tǒng)(LFS)
  
  首先是改變根目錄,用chroot命令。這樣,在當前控制臺看來,原來的/mnt/lfs/就成了現(xiàn)在的根目錄,這個時候所有運行的軟件都在/static/bin/下面(下面提到的“/”沒有非凡說明指原來系統(tǒng)上的“/mnt/static/”。所以chroot以后,至少要使環(huán)境變量PATH=/static/bin/
  
  改變“/”下所有文件和目錄的組權(quán)限、擁有權(quán)限為0、0(指root),并在根目錄下創(chuàng)建必要的文件夾,注重有些文件夾創(chuàng)建以后要改變權(quán)限,因為做出來的LFS不是只有root來使用。同時創(chuàng)建passwd、group文件,將來的LFS系統(tǒng)的組、用戶信息就在這兩個文件里。
  
  接下來就是創(chuàng)建必要的設(shè)備,這里有一個編好的腳本MAKEDEV,只要運行一下就行了,常用到的設(shè)備都給建好了。假如發(fā)現(xiàn)自己機器上的某些設(shè)備這里沒有考慮到,可以自己用mknod命令來建。
  
  最后就是安裝下列軟件:
  
  Linux-2.4.19、Man-pages-1.53、Glibc-2.2.5、GCC-3.2、Zlib-1.1.4、Findutils-4.1、Gawk-3.1.1、Ncurses-5.3、Vim-6.1、M4-1.4、Bison-1.75、Less-378、Groff-1.18.1、Textutils-2.1、Sed-4.0、Flex-2.5.4a、Binutils-2.13、Fileutils-4.1、Sh-utils-2.0、Gettext-0.11.5、Net-tools-1.60、Perl-5.8.0、Linux threads-2.2.5 man pages、Texinfo-4.2、Autoconf-2.54、Automake-1.7.1、Bash-2.05a、File-3.39、LiBTool-1.4.2、Bin86-0.16.3、Bzip2-1.0.2、Ed-0.2、Kbd-1.08、Diffutils-2.8.1、E2fsprogs-1.29、Grep-2.5、Gzip-1.2.4a、Man-1.5k、Lilo-22.2、Make-3.80、Modutils-2.4.21、Netkit-base-0.17、Patch-2.5.4、Procinfo-18、Procps-3.0.4、Psmisc-21.2、Shadow-4.0.3、Sysklogd-1.4.1、Sysvinit-2.84、Tar-1.13、Util-linux-2.11w、LFS-Bootscripts-1.10
  
  這些軟件不是一定要裝的,有些你不要的話,完全可以不裝。
但是上面提到的是很基本的東西,最好是裝上。同時,你假如想裝其他自己想要裝的軟件完全可以現(xiàn)在裝上去,比如說KDE桌面系統(tǒng)。
  
  這些軟件在編譯過程中都使用了動態(tài)連接,在這些軟件安裝以前安裝了Glibc-2.2.5,下面的軟件都使用了這個庫賴動態(tài)連接的。
  
  軟件安裝完,要記住修改一些配置文件來配置這些軟件的工作。
  
  6. 創(chuàng)建或修改啟動過程中用到的配置文件:
  
  這里要修改的配置文件主要是:
  
  /etc/sysconfig/clock、/etc/sysconfig/network、/etc/hosts、/etc/sysconfig/network、/etc/sysconfig/network-devices/ifconfig.eth*
  
  7. 讓你的LFS啟動起來:
  
  首先創(chuàng)建/etc/fstab文件,系統(tǒng)啟動時,這個文件告訴系統(tǒng)要掛載哪個文件系統(tǒng),要掛載哪個分區(qū)。
  
  其次就是編譯一個內(nèi)核,編譯內(nèi)核沒有什么非凡的,知道你要什么功能,你的機器上有什么,就可以編譯了。
  
  我用的系統(tǒng)引導器是Grub(可能現(xiàn)在更多的Linux用戶用的是這個引導器)要硬到你的LFS有兩種方法:
  
  1) 把內(nèi)核放到原來系統(tǒng)中的/boot/中,不用在新的分區(qū)上裝引導器,配置一下menu.lst就可以啟動了。
  2) 在新的分區(qū)上安裝Grub,把內(nèi)核放在LFS系統(tǒng)中的/boot/中,配置一下新安裝的Grub。
  
  我用的是第一種方法。
  
  8. 清理現(xiàn)場:
  
  現(xiàn)在,我們的LFS已經(jīng)能啟動起來了,大功告成。/static/下面的內(nèi)容已經(jīng)沒有什么用了(要是以后還想再搞LFS可以放在那里)。刪掉/static/里面的內(nèi)容以后,大概還有640MB(包括內(nèi)核193MB)
  
  具體列表如下:
  
  bin 13400kb
  dev 56kb
  home 4kb
  lost+found 16kb
  opt 60kb
  root 28kb
  static 248644kb
  usr 613000kb
  ->src 193284kb
  ->bin 40464kb
  ->include 16376kb
  ->lib 257328kb
  ->local 75656kb
  ->sbin 1588kb
  ->share 96424kb
  ->.....
  boot 3284kb
  sbin 8768kb

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 芜湖县| 陈巴尔虎旗| 松阳县| 蒙城县| 安平县| 大埔区| 清河县| 诸城市| 红安县| 古丈县| 高唐县| 邓州市| 利辛县| 静宁县| 聂拉木县| 汉源县| 新密市| 常州市| 包头市| 潼关县| 临沂市| 应用必备| 宾阳县| 锡林郭勒盟| 天气| 泰州市| 凯里市| 长泰县| 赫章县| 手游| 青川县| 察雅县| 固安县| 大名县| 恭城| 安塞县| 平阳县| 寿宁县| 伊宁县| 吉安县| 宁远县|