當前位置:首頁 » 編程軟體 » nanopi自編譯linux

nanopi自編譯linux

發布時間: 2022-09-09 02:05:42

『壹』 linux 下自編譯的可執行文件(假如test),怎麼設置使得在終端直接輸入test(而非./test)就能執行

這要加在 PATH環境變數中,運行:
export PATH=$PATH:'./'

注意:
1 能運行當前目錄下的程序有很大安全隱患,試想如果有人在當前目錄放一個黑客軟體,改成ls之類常用命令名……
2 已經有一個很常用的程序叫test,不要用這個名字。

『貳』 如何在windows下或者linux下對樹莓派編程(C語言或C++)

硬體的沒玩過
樹莓派 是不是那個 教學型 ARM編程主板?

建議你去 他們官方論壇看下
我同學他們畢業搞ARM的 都是 自己焊接板子的
然後用 winCE或者 unix linux 的嵌入式系統

他這種定製的包裝過的,一般都把很多底層的 原理封裝了,只需要 學號他官方提供的 支持文檔和事常式序,就能實現 很多功能。而且
如果 你直接去學C/C++ windows編程 以及通信編程 SSH協議 等 反倒離目的遠了。
我估計你應該是個 愛好者,或者學生。

論壇里有很多 愛好者 發的 相關項目及 細節

比如:我剛才在 論壇里看到一個帖子說

做了一個工具,在windows下面和pi 進行ssh 交互

http://bbs.ickey.cn/index.php?app=group&ac=topic&id=2573

『叄』 拿到了linux的內核 應該用什麼軟體 怎麼去編譯

1、你可以把linux內核代碼放到你的ubuntu或redhat之類的具有linux內核的操作系統裡面,然後在你指定的目錄裡面解壓你的內核源碼
2、在主目錄裡面找到Makefile文件,修改裡面的「ARCH = 」和「CROSS_COMPILE」,也就是你的編輯器路徑,保存退出;
3、輸入make menuconfig配置你的內核參數,保存退出;
4、執行make zImage,你會看見屏幕嘩啦嘩啦的在運行,這是在生成內核zImage文件;
5、進入你的arch/(cpu型號)/root/裡面,你會看到zImage文件,這個就是你要的。
以上是最簡單的步驟,若想詳細了解,在網路裡面搜索「linux內核編譯」,會得到一大堆結果,記得一般只看文庫或者博客裡面的文章,因為質量比較好。

若需幫助,請追問!

『肆』 有沒有誰了解nanopi2 fire的穩定性如何

編譯安裝內核 載並解壓內核 內核載: 解壓內核:tar xf linux-2.6.XX.tar.xz 定製內核:make menuconfig 參見makefile menuconfig程講解 編譯內核模塊:make 內核模塊vmlinuz

『伍』 μClinux的μClinux下的系統開發環境

了解了μClinux操作系統的基本技術細節,對於網管人員在完成基本管理職能的基礎上,使用開發環境進一步完善和提高自身的網路管理技能,具有非常重要的指導意義。目前在具有嵌入式開發支持功能的路由器等網路產品方面,經常使用的μClinux開發平台是GNU開發套件。
該開發套件包括:
(1)常規C編譯器GCC,可以使用標准C進行系統功能的二次開發。
(2)C++編譯器GCC++,可以使用面向對象開發模式完成系統功能的二次開發。
(3)匯編器AS和鏈接LD,可以使用匯編語言進行系統功能的二次開發。
(4)其它工具軟體,包括:二進制轉換工具(OBJCOPY,OBJDUMP),軟體調試工具(GDB.GD BSERVER,KGDB)和基於不同硬體平台的開發庫。
上述開發環境的技術特點如下:
(1)代碼效率高。在GNU GCC/GCC++語言環境的支持下,用戶可以使用流行的C/C++語言開發應用程序。該開發模式下,網路管理人員可以輕松介入到開發工作中,並可以生成高效率運行代碼。
(2)靈活性強。GNU開發工具都是採用命令行的方式,用戶掌握起來相對比較困難,不如基於Windows系統的開發工具好用,但是GNU工具的復雜性是由於它更貼近編譯器和操作系統的底層,並提供了更大的靈活性。
(3)豐富的網上免費資源。上述工具都是按GPL版權聲明發布的,任何人都可以從網上免費獲取全部的源代碼,無需任何費用的投入,對於一般小型單位的網路質量的提升可以起到投入少、見效快的神奇效果。GNU開發套件作為通用的Linux開放套件,包括一系列的開發調試工具。
(4)易學易用。網路管理人員一般都具有計算機以及相關專業的背景,都經歷過軟體的初步培訓過程,這些技術人員一旦學習和掌握了相關工具後,就可以掌握網路系統設計和二次開發的基礎知識。運行於Linux操作系統下的自由軟體GNU gcc編譯器,不僅可以編譯Llnux操作系統下運行的應用程序,還可以編譯Linux內核本身,甚至可以作交叉編譯,編譯運行於其它CPU上的程序。

『陸』 如何配置編譯在mini2440開發板上運行的linux內核

參考:http://www.it165.net/os/html/201409/9334.html

系統ubuntu12.04(非虛擬機下)
mini2440
CPU型號: S3C2440AL-40
Nanflash型號:K9F1G08
Norflash型號:SST39VF1601
LCD: 統寶 240 x 320
$: 普通賬戶
#:root賬戶
*當shell下輸入路徑時可使用tab鍵自動補全

(一)建立交叉編譯環境

1.將mini2440光碟中的linux文件夾拷貝到 /home/lianghuiyong 並改名為Linux_share
(其中兩個文檔為我後面添加進去的)

2.Ctrl+Alt+T打開shell
3.$ su - root (切換root許可權)
4.# cd /home/lianghuiyong/Linux_share
5.解壓安裝arm-linux-gcc編輯器
# tar xvzf arm-linux-gcc-4.4.3.tar.gz –C / //注意:C後面有個空格
執行該命令,將把 arm-linux-gcc 安裝到/usr/loca/arm/4.4.3 目錄。這句來自mini2440用戶手冊,我發現其實是安裝到 /opt/FriendlyARM/toolchain/4.4.3 目錄

6.# vim /root/.bashrc
7.在最後一行添加:export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin //opt/FriendlyARM/toolschain/4.4.3/bin 為arm-linux-gcc 環境變數
:wq保存退出。
# source ~/.bashrc
8.# sudo gedit /etc/environment
games後面添加標記部分

9.# arm-linux-gcc -v //gcc後面有空格

測試hello.c(這是在安裝了第二部分的linux示常式序才有examples/hello目錄)
# cd /opt/FriendlyARM/mini2440/examples/hello
# arm-linux-gcc -o hello hello.c
# ./hello

(二)安裝源代碼及其他工具
創建工作目錄(以下都為root環境下):
# mkdir -p /opt/FriendlyARM/mini2440

1>>解壓安裝linux內核源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/linux-2.6.32.2-mini2440-20100106.tar.gz

2>>解壓安裝嵌入式圖形系統qtopia源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/x86-qtopia.tgz
# tar xvzf /home/lianghuiyong/Linux_share/arm-qtopia.tgz

3>>解壓安裝嵌入式圖形系統 QtE-4.6.1 源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/arm-qte-4.6.3-20100802.tar.gz

4>>解壓安裝busybox 源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/busybox-1.13.3-mini2440.tgz

5>>解壓安裝 Linux 示常式序
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/examples-20100108.tgz

6>>解壓安裝 vboot 源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/vboot-src-20100106.tar.gz

7>>解壓安裝 bootloader 源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/bootloader.tgz

8>>解壓創建目標文件系統
# cd /opt/FriendlyARM/mini2440
#tar xvzf /home/lianghuiyong/Linux_share/rootfs_qtopia_qt4-20100816.tar.gz

9>>解壓安裝目標文件系統映象製作工具 mkyaffs2image
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/mkyaffs2image.tgz –C /

10>>解壓安裝LogoMaker
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/logomaker.tgz –C /

(三)定製linux內核及製作文件系統

config_mini2440_x35 – 適用於 Sony 3.5」 LCD 的內核配置文件
config_mini2440_t35 – 適用於統寶 3.5」 LCD 的內核配置文件
config_mini2440_l80 – 適用於 Sharp 8」 LCD(或兼容)的內核配置文件
config_mini2440_n35 – 適用於 NEC3.5」 LCD 的內核配置文件
config_mini2440_h43 – 適用於 4.3」 LCD 的內核配置文件
config_mini2440_a70 – 適用於群創 7」 LCD 的內核配置文件
config_mini2440_vga1024x768 – 適用於 VGA 顯示輸出(解析度 1024x768)模塊的內核
配置文件

1.配置預設文件config_t35 (統寶240x320)

# cd /opt/FriendlyARM/mini2440/linux-2.6.32.2
# cp config_mini2440_t35 .config
# make menuconfig
出現界面
不做更改,exit退出。這樣做是為了生成相應配置(統寶240x320)的頭文件。

2.編譯內核

在/opt/FriendlyARM/mini2440/linux-2.6.32.2 目錄下編譯內核
#make zImage
編譯結束後,會在 arch/arm/boot 目錄下生成 linux 內核映象文件:zImage(zImage 可下載到開發板測試)

3.定製linux內核(根據用戶手冊來走一遍)

# cd /opt/FriendlyARM/mini2440/linux-2.6.32.2
# make menuconfig
出現配置選項:

3.1配置cpu
主菜單-->System --> Type S3C2400 Machines --> FriendlyARM Mini2440 development board
3.2配置lcd驅動
主菜單-->Device Drivers-->Graphics support-->Support for frame buffer devices-->Backlight-->LCD select-->3.5 inch 240x320 Toppoly LCD

3.3配置觸摸屏
主菜單-->Device Drivers-->Input device support-->Touchscreens-->Samsung s3c24410 touchscreen input driver

3.4配置usb滑鼠和鍵盤
主菜單-->Device Drivers-->hid devices-->USB Human interface Device

3.5 配置優盤
主菜單-->Device Drivers-->SCSI device support--> SCSI disk

3.6配置萬能驅動USB攝像頭
主菜單-->Device Drivers-->Multimedia devices-->Video capture adapters -->V4L USB devices-->GSPCA based webcams-->ALi USB m 5602 Camera Driver

3.7 配置CMOS攝像頭驅動
主菜單-->Device Drivers-->Multimedia devices-->Video capture adapters-->OV9650 on the s3c2440 driver

3.8配置網卡驅動
主菜單-->Netwoking support-->Networking options -->選擇Unix和TCP/IP

主菜單-->Device Drivers-->Network device support-->Ethernet (10 or 100Mbit)-->
選擇 <*> Generic Media Independent Interface device support
<*> DM9000 support

3.9 配置USB無線網卡驅動
主菜單-->Netwoking support-->wireless-->IEEE 802.11

主菜單-->Device Drivers-->Netwoking device support-->wireless LAN-->Wireless LAN(IEEE 802.11)-->Ralink driver support-->

3.10 配置音頻驅動
主菜單-->Device Drivers-->Sound card supprt-->OSS Mixer API -->ALSA for Soc audio support-->SoC Audio for the samsung S3Cxxxx Chips

3.11 配置SD/MMC卡驅動
主菜單-->Device Drivers-->MMC/SD/SDIO card-->samsung S3C SD/MMC card

3.12 配置看門狗驅動支持
主菜單-->Device Drivers-->Watchdog Timer-->s3c2440 Watchdog

3.13 配置LED驅動
主菜單-->Device Drivers-->Character devices-->LED support for Mini2440

3.14 配置按鍵驅動
主菜單-->Device Drivers-->Character devices-->Buttons driver

3.15 配置PWM控制蜂鳴器驅動
主菜單-->Device Drivers-->Character devices-->buzzer driver for

3.16 配置AD轉換驅動
主菜單-->Device Drivers-->Character devices-->ADC driver for

3.17 配置串口驅動
主菜單-->Device Drivers-->Character devices-->Serial drivers-->samsung S3C2440/S3C2442

3.18 如何配置RTC實時時鍾驅動
主菜單-->Device Drivers-->Real Time Clock-->samsung S3C series SoC RTC

3.19 配置I2C-EEPROM驅動支持
主菜單-->Device Drivers-->I2C support -->I2C Hardware Bus support-->S3C2410 I2C Driver

3.20 配置yaff2s文件系統的支持
主菜單-->Device Drivers-->MTD-->NAND Device Support -->NAND FLASH Support
主菜單-->File systems-->Miscellaneous filesystems -->YAFFS2 file system support

3.21 配置EXT2/VFAT/ NFS等文件系統
主菜單-->File systems-->Network File Systems -->root file system on NFS

為了支持FAT32 文件系統.
主菜單-->File systems-->DOS/FAT/NT Filesystems -->VFAT (windows-95) fs support

關於mini2440 linux內核裁剪到此為止,退出後有一個是否保存提示,選擇保存!

3.22 製作Linux logo

本來想使用Logomaker,結果生成的圖片都是無數據的,這可能和系統內一些參數有關
使用命令方式製作logo:
在圖片(open_show.png)目錄下
# pngtopnm open_show.png > temp.ppm
# ppmquant 224 temp.ppm >temp2.ppm
# pnmnoraw temp2.ppm > logo.ppm
將目錄下生成的logo.ppm改成linux_logo_clut224.ppm,替代linux2.6.32.2/drivers/video/logo 目錄下的同名文件

『柒』 為什麼自己編譯的linux內核和驅動比系統自帶的要大的多

1、配置中有很多調試選項(不一定帶「debug」字樣),而且位置也很分散;
2、發行版自帶內核往往經過長期、仔細的配置,會比個人十幾分鍾的配置更全面。
這兩個原因對內核及模塊的大小有影響,但不大。

編譯出的內核模塊中包含多個運行時用不到的段(編譯連接時可能要用,不是錯誤),發行版中一般會刪掉,這很有可能是原因所在。

可以考慮用 [strip -S mod_name.ko] 來處理一下內核模塊(注意:這里選項要用大寫S,小寫s或不寫會連符號表一起刪掉,導致模塊無法載入),看看文件有沒有變小(別對內核本身這么干)。
如果以上命令明顯減小了文件,可以考慮在編譯內核前定義環境變數INSTALL_MOD_STRIP為1(數字),這樣make moles_install後的內核模塊都是經 strip 處理過的了。

『捌』 Linux系統下用什麼工具做安裝包

【享】linux安裝程序

初者都知道何linux安裝程序面簡單說
Linux系統安裝軟體見兩種:
種軟體源代碼您需要自手編譯種軟體安裝包通用gzip壓縮tar包(綴名.tar.gz)
另種軟體執行程序要安裝種軟體安裝包通RPM包(RedHat Linux Packet ManagerRedHat軟體包管理器)綴名.rpm 用RPM格式打包源代碼、用gzip壓縮執行套裝程序要您理解思路兩種形式安裝包

源代碼編譯安裝

Linux軟體源代碼發指提供該軟體所程序源代碼發布形式需要用戶自編譯執行二進制碼並進行安裝其優點配置靈隨意掉或保留某些功能/模塊適應種硬體/操作系統平台及編譯環境;缺點難度較般適合初者使用

各軟體源代碼包般都各軟體項目主頁提供載例:等

1.*.src.rpm形式源代碼軟體包

安裝:

rpm -rebuild *.src.rpm

cd /usr/src/dist/RPMS

rpm -ivh *.rpm

卸載:

rpm -e packgename

說明:rpm --rebuild *.src.rpm命令源代碼編譯並/usr/src/dist/RPMS二進制RPM軟體包再安裝該二進制包即Packgename前所述

2.*.tar.gz/*.tgz/*.bz2形式源代碼軟體包

tar.gz或tgz或tar.bz2等格式結尾軟體包般都源代碼式發布軟體安裝類軟體首先需要軟體進行解壓:

# tar zxvf filename.tar.gz

# tar xvfz filename.tgz

# tar xvf j filename.tar.bz2

解壓進入解壓目錄:

# cd filename/

於類文檔見安裝步驟:配置、編譯安裝3步其麻煩配置所軟體安裝相關配置都步指定:比軟體安裝位置等

配置:./configure

編譯:make

安裝:make install

卸載:make uninstall 或手刪除

說明:建議解壓先閱讀說明文件(ReadMeInstall)解安裝需求必要需改編譯配置些軟體包源代碼編譯安裝用make uninstall命令進行卸載提供功能則軟體卸載必須手進行由於軟體能文件散安裝系統目錄往往難刪除干凈應該編譯前進行配置指定軟體要安裝目標路徑:./configure --prefix=目錄名使用rm -rf 軟體目錄名命令進行干凈徹底卸載與其安裝式相比需要用戶自編譯安裝難適合於使用Linux已定經驗般推薦初者使用

RPM格式軟體包安裝

RPMRedHat公司發軟體包管理器使用容易RPM形式軟體包進行安裝、升級、卸載、驗證、查詢等操作安裝簡單卸載軟體安裝處目錄文件刪除干凈推薦初者盡能使用RPM形式軟體包軟體包往往特定命令規范名字由文件名+版本號+.rpm組字串例apache-3.1.12-i386.rpmapache-devel-3.1.12-i386.rpm軟體包名稱別apacheapache-devel各支持RPM格式Linux見軟體RPM包網站rpmfind.net找

1.安裝

命令格式:

rpm-i(or--install) options file1.rpm ... fileN.rpm

參數:

file1.rpm...fileN.rpm指要安裝RPM包文件名

詳細選項:

-h(or—hash)安裝輸hash記號;test安裝進行測試並實際安裝;--percent百比形式輸安裝進度;--excludedocs安裝軟體包文檔;--includedocs安裝文檔;--replacepkgs強制重新安裝已經安裝軟體包;--replacefiles替換屬於其軟體包文件;--force忽略軟體包及文檔沖突;--noscripts運行預安裝安裝腳本;--prefix NEWPATH軟體包安裝由NEWPATH指定路徑;--ignorearch校驗軟體包結構;--ignoreos檢查軟體包運行操作系統;--nodeps檢查依賴性關系;--ftpproxy HOST用HOST作FTP代理;--ftpport PORT指定FTP埠號PORT

通用選項:

-v顯示附加信息;-vv顯示調試信息;--root DIRECTORY讓RPMDIRECTORY指定路徑作根目錄預安裝程序安裝程序都安裝目錄;--rcfile FILELIST設置rpmrc文檔FILELIST;--dbpath DIRECTORY設置RPM資料庫所路徑DIRECTORY

2.刪除

命令格式:

rpm -e(or--erase) options pkg1 ... pkgN

參數:

pkg1...pkgN:要刪除軟體包

詳細選項:

--test執行刪除測試;--noscripts運行預安裝安裝腳本程序;--nodeps檢查依賴性

通用選項:

-vv顯示調試信息;--root DIRECTORY讓RPMDIRECTORY指定路徑作根目錄預安裝程序安裝程序都安裝目錄;--rcfile FILELIST設置rpmrc文檔FILELIST;--dbpath DIRECTORY設置RPM資料庫所路徑DIRECTORY

3.升級

命令格式:

rpm -U(or--upgrade) options file1.rpm ... fileN.rpm

參數:

file1.rpm...fileN.rpm指軟體包名字

詳細選項:

-h(or—hash)安裝輸hash記號;—oldpackage允許舊版本;--test進行升級測試;--excludedocs安裝軟體包文件;--includedocs安裝文件;--replacepkgs強制重新安裝已經安裝軟體包;--replacefiles替換屬於其軟體包文件;--force忽略軟體包及文件沖突;--percent百比形式輸安裝進度;--noscripts運行預安裝安裝腳本;--prefix NEWPATH軟體包安裝由NEWPATH指定路徑;--ignorearch校驗軟體包結構;--ignoreos檢查軟體包運行操作系統;--nodeps檢查依賴性關系;--ftpproxy HOST用HOST作FTP代理;--ftpport HOST指定FTP埠號HOST

通用選項:

-v顯示附加信息;-vv顯示調試信息;--root DIRECTORY讓RPMDIRECTORY指定路徑作根目錄預安裝程序安裝程序都安裝目錄;--rcfile FILELIST設置rpmrc文件FILELIST ;--dbpath DIRECTORY設置RPM資料庫所路徑DIRECTORY

4.查詢

命令格式:

rpm -q(or--query) options

參數:

pkg1...pkgN:查詢已安裝軟體包

詳細選項:

-p PACKAGE_FILE查詢軟體包文件;-f FILE查詢FILE屬於哪軟體包;-a查詢所安裝軟體包;--whatproVides CAPABILITY查詢提供CAPABILITY功能軟體包;-g group查詢屬於group組軟體包;--whatrequires CAPABILITY查詢所需要CAPABILITY功能軟體包

選項:

-i顯示軟體包概要信息;-l顯示軟體包文件列表;-c顯示配置文件列表;-d顯示文件列表;-s顯示軟體包文檔列表並顯示每文件狀態-;-scripts顯示安裝、卸載、校驗腳本;--queryformat(or--qf)用戶指定式顯示查詢信息;--mp顯示每文件所已校驗信息;--proVides顯示軟體包提供功能;--requires(or-R)顯示軟體包所需功能

通用選項:

-v顯示附加信息;-vv顯示調試信息;--root DIRECTORY讓RPMDIRECTORY指定路徑作根目錄預安裝程序安裝程序都安裝目錄;-rcfile FILELIST設置rpmrc文件FILELIST;--dbpath DIRECTORY設置RPM資料庫所路徑DIRECTORY

5.校驗已安裝軟體包

命令格式:

rpm -V(or--verify,or-y) options

參數:

pkg1...pkgN要校驗軟體包名

軟體包選項:

-p PACKAGE_FILE校驗PACKAGE_FILE所屬軟體包;-a校驗所軟體包;-g group校驗所屬於組group軟體包

詳細選項:

--noscripts運行校驗腳本;--nodeps校驗依賴性;--nofiles校驗文檔屬性

通用選項:

-v顯示附加信息;-vv顯示調試信息;--root PATH讓RPMPATH指定路徑做根目錄預安裝程序安裝程序都安裝目錄;--rcfile FILELIST設置rpmrc文件FILELIST;--dbpath DIRECTORY設置RPM資料庫所路徑DIRECTORY

6.校驗軟體包文件

語:

rpm -K(or--checksig) options file1.rpm...fileN.rpm

參數:

file1.rpm...fileN.rpm軟體包文件名;Checksig--詳細選項;--nopgp校驗PGP簽名

通用選項:

-v顯示附加信息;-vv顯示調試信息;--rcfile FILELIST設置rpmrc文件FILELIST

7.其RPM選項

--rebuilddb重建RPM資料庫;--initdb創建新RPM資料庫;--quiet盡能減少輸;--help顯示幫助文件;--version顯示RPM前版本

喜歡字元介面安裝或卸載些軟體包完全安裝基於X-Window圖形介面軟體包管理程序glint, xrpm圖形介面或使用KDEKPackage(單擊【始】→【運行命令】其輸入KPackage即啟KPackage)等軟體包安裝、升級、卸載、驗證查詢通單擊滑鼠輕松完圖所示

需要注意每RPM軟體包格式軟體並定獨立各RPM軟體包間定依賴關系刪除某RPM軟體包能導致別軟體能使用升級刪除應該注意
本載安裝linux發現版本都幾百兆我覺系統都沒款點軟體能用或者說用起問題啊我直覺安裝包越越

『玖』 如何構建自己的 Linux 發行版

風格的書籍,深入研究了調度、內存管理、多進程和線程、文件系統,以及用戶與內核之間的交互。寫作 Linux 書籍的作家相對於 UNIX 作家來說有一個優勢:盡管團體發生了劇變,但是 Linux 內核不可能分成幾個相互競爭的分支,由於 GNU Public License (GPL)、集中式研究實驗室 Open Source Development Lab (OSDL) 和 Linus Torvalds 不可動搖的地位,使得 Linux 有幸成為一個緩慢移動的目標(slow-moving target)。為什麼 UNIX 內核很重要除了某些方面具有一定的相似性之外,不同的 Unix 內核並不怎麼相同。各種 UNIX 風格也具有一個 Linux 所缺少的優點:所有 UNIX 風格都被假定是完全的操作系統。Linux 通常被描述為「只是一個內核」(如果有這樣的定義的話,也是一個武斷的定義),它給出公共功能和實現的核心,不管內核是運行在不太強大的 Pentium? II 機器上還是 Symmetric Multiprocessing (SMP) 系統上,這些公共功能和實現都不會發生本質上的改變。為了更加簡化,有人可能會說,離 Linux 內核越遠,就會發現更多的變化,而 UNIX 系統則趨向於是各種 UNIX/POSIX 標準的離散實現。事情並沒有這么簡單。檢測 Linux 內核和系統級代碼可能是一件很費時間的事情,並且在現實世界中會限制使用。LFS 項目旨在解決 Linux 上有限的系統級可理解性問題。關於內核需要大量的庫和工具來讓 Linux 系統執行最基本的任務這一事實,已經做過討論了,但是如果一個比較熟練的用戶具有一個 slim-line Linux 發行版,他不想下載幾吉位元組不讓他優化系統、也不讓他拋開所有這些麻煩且不必要的工具的二進制代碼,那該怎麼辦?如果一個非常熟練的用戶拒絕接受各種社團發行版的 苛刻條件(diktat),而想要運行一個來自 CD 的 Linux/Apache/MySQL/PHP (LAMP) 類型的應用程序堆棧,那該怎麼辦?LFS 可以解決這些問題。回頁首Linux From ScratchLFS 項目顯然建立於那些對於構成基本的 Linux 系統來說充分而不必要的源文件的基礎之上。它已經超越了 Linux 內核和設備驅動程序,因為要產生一個可工作的 Linux 系統,您必須添加一個完整的編譯器工具鏈、許多 Linux 匯編程序實用工具、glibc 系統庫、系統配置工具和連接到 userland shell 訪問的工具。LFS 建立在這樣一個假設的基礎之上,即 Linux 或 UNIX 允許具有一些腳本編寫知識的用戶,了解一個完全有用的系統的工作方式,而不用深入研究內核代碼本身。為了了解 Linux 系統的工作方式,LFS 的創建者們確定,通過遵循模塊依賴性來編譯系統,可能是了解一般操作系統和特定的 Linux 的機制最自然的方式。用戶掌握了編譯過程之後,就可以開始消除依賴性樹的那些連接到與支持操作系統基本目的無關的系統組件的部件。例如,在編譯完成之後,消除編譯器工具鏈本身是可行的。在沒有全套的命令行實用工具時,可以湊合使用嵌入式 LAMP 堆棧。配置實用工具也可以被丟棄,大多數用戶可以湊合著用一個而不是太多 Linux 將會支持的文件系統。Linux 部件LFS 系統的一個重要部件是,可以作為 tar ball 得到的大量源文件。文檔是另一個重要部件,並且是最重要的。實際上,很有可能利用一個最新的 LFS 書籍文件並創建一個 LFS 發行版,因為 LFS 書籍中詳細描述了每個下載位置和每個源文件及其依賴性的特徵。用於從內核到編譯器到 shell 編譯每組源文件的過程都是已經寫好了的,如果可能,您也可以在描述具有不同特徵的系統的 LFS 書籍中找到替代的常式。LFS 系統的另一個不太可能出現在一般用戶工具箱中的部件是,在基本 LFS 系統組合在一起之後引導系統所需的引導腳本。現在對 LFS 發行版的最大警告是:勇敢的發行版構建者所需的是一個可工作的 Linux 發行版,包括一個完整的編譯器工具鏈和一套文件系統創建實用工具。自然,所有基於源代碼的 Linux 發行版都需要使用各個發行版都完全不同的特定編譯器版本來引導。LFS 不是該領域的惟一系統,但它是惟一允許您直接處理單個源文件的系統。大多數其他基於源代碼的 Linux 系統,比如 Sourcemage 和 MyGeOS,提供一個完整的下載,建議用戶使用。LFS 不作這樣的假設,並且鼓勵拆開 LFS 框架。預先假設起作用的 Linux 發行版已安裝在非外來的(nonexotic)硬體上,即使 LFS 可能沒有配置工具和腳本那麼受關注。要編譯 LFS,您需要准備一個分區和一個文件系統,還需要編譯一個編譯器和系統庫。如果用手工完成的話,這是一個相當傷腦筋的過程,但是也的確可以增加您在處理其餘安裝方面的自信。整個系統的編譯要花一小時到四天的時間,具體時間取決於底層硬體的年代和您的命令行技術熟練程度。作一個相當大的假設,如果您願意很大程度上保留書籍安裝,並使對 LFS 書籍中提議的安裝的更改保持最小,您也可以使用自動化的安裝常式來安裝基於 LFS 的發行版。安裝常式沒有在 LFS 書籍中給出,但是可以在名稱 Automated Linux from Scratch (ALFS) 之下作為基於 XML 的發行版得到。活動安裝可以作為基於 C 的腳本得到,該腳本使用 ncurses 來模擬圖形安裝。該安裝也叫做 nALFS 並給出一個極為靈活的包安裝框架。工作需要一個起作用的 Linux 系統,並帶有可以工作的 C 編譯器和 XML 解析器。一個可以工作的 LFS 系統就足夠了。Automated Linux From ScratchALFS 的目的是超越 LFS 本身。LFS 自己指導基於 Linux 的操作系統的內部工作,但是它不具有單個圖形用戶界面 (GUI)。LFS 既不允許連接到網路,也不允許連接到 Internet。ALFS 可以簡化系統的擴展,例如,通過添加支持 Internet 訪問的庫,或者通過安裝圖形桌面所需的 X 庫。回頁首超越LFSLFS 的創建者們認識到了對其他各種基於源代碼的 Linux 系統的需求。為了這些想要超越 LFS 並添加 X Window System、GNOME 和網路支持的人,創建了另一個 LFS 派生物:Beyond Linux From Scratch (BLFS)。 第三版 LFS 書籍(讓我們不會忘記是在談論書籍而非發行版),形成一個以一個角為基礎的三角形:對於自動化編譯和完全的基於源代碼的 Linux 發行版,基本的 LFS 版本是基礎。BLFS 將基本的 Linux 系統轉化成一個完全的用戶廣泛接受的 Linux 系統。AFLS 簡化基於源代碼的 Linux 安裝的安裝和擴展。整個基於源代碼的系統的編譯是由一個腳本指導的,您在針對運行腳本的硬體調整腳本之後,就可以讓腳本自己運行了。在您(或安裝工程師)確定需要運行哪些包,也即特定的辦公應用程序套件之後,您就可以容易地擴展安裝順序了。ALFS 也遲早會派上用場,因為它適用於從源代碼進行網路范圍的安裝。回頁首Hardened LFSLFS 家族的最後一個成員解決基於源代碼的 Linux 的一個特別重要的方面:安全性。對於不想依賴於所選的 Linux 發行版伺服器交付的補丁的那些人,安全性的普通方法是,針對所選的核心庫和應用程序跟蹤安全報告。對於 LFS 實現人員來說,問題有些不同:盡管不是不可能,但是也難以審計 Linux 內核代碼,也許還包括集中於基於 Linux 的操作系統的內部機能的很多庫和實用工具。代碼審計相當費時,並且只有當補丁伺服器是由專門人員集中維護的時,添加大量補丁才是明智的。但是可以取代一些為反映安全問題的新方法而重新編寫過的庫。一個好的例子是,通過從一個適當大的隨機數池中隨機分配數字,使得猜測進程標識符極為困難。OpenBSD 項目最先採用了該方法,隨後,各種 UNIX 風格和 Linux 發行版都採用了該方法。一個相當新的項目叫做 Hardened Linux From Scratch (HLFS),在 Linux 下採用了這一安全方法。該項目假設相當正規地掌握了 LFS 和 BLFS 的一些部件,並使用了不會成為大多數 Linux 系統中的標準的幾個實用工具和庫。添加到 HLFS 中的最重要的部件可能是 Stack-Smashing Protector (SSP),通過使用 gcc 指令可以啟用該功能。SSP 開發來防禦 stack-smashing 攻擊,這類攻擊屬於影響 Linux 系統的一類最常見的安全威脅。其他安全措施包括一流的隨機數生成器和位置獨立的可執行程序的編譯,其中通常轉化成靜態鏈接對象代碼的可執行代碼作為共享庫出現,而位置獨立的可執行庫通過將地址隨機化可以隱藏這些地址。當然,可從 HLFS Web 站點得到大量補丁,並可查看其源代碼。回頁首日益壯大的 LFS 家族在許多方面,Linux 版本的 LFS 家族是一個方法,給予黑客以構造基於 Linux 的操作系統的能力。但是對於 LFS 的創建者們來說,最重要的結果似乎是:通過 LFS,所有 Linux 發行版對於所涉及的用戶都成了智能的了。通過允許用戶一部分一部分地構建 Linux 發行版,並幫助用戶將一個基於 Linux 的操作系統看作一個由許多部件組成的系統,還可以用另外的方法構建 Linux 發行版。更一般來說,用戶要更改構建 Linux 發行版的方式,不必要是程序員:只要從構建 LFS 系統學到的一點腳本編寫能力就足夠了。LFS 專家可以改變和擴展 Linux 發行版的完美組合,而不會影響它的基本結構。對於有人員和專家維護 Linux 系統,但沒有資金從咨詢機構和公司購買商業支持的機構來說,該功能特別重要。已經針對教學目的和大型網路,演示了基於 LFS 的 Linux 系統。它們也有可能用於其他領域。參考資料 您可以參閱本文在 developerWorks 全球站點上的 英文原文。
最新LFS 版本的門戶是 LFS 下載站點。它提供從幾個方面可用的 LFS 書籍。
LFS 家族的最新成員是 HLFS 或Hardened LFS 風格。
如果願意,LFS 狂熱者們可以創建 自動化的 安裝。
如果基本的 LFS 安裝還不夠,那麼可以繼續安裝更加復雜的 extended Linux From Scratch,也叫做 BLFS。
為了防禦 stack-smashing 攻擊,SSP 指令使得 gcc 可以編譯針對該類型威脅而保護的代碼。
位置獨立的代碼在關於 position-independent executables 的一章中作了簡短介紹。
在developerWorks Linux 專區 可以找到更多為 Linux 開發者准備的資源。
訪問developerWorks 開放源碼專區,獲得廣泛的 how-to 信息、工具和項目更新,以幫助您利用開放源碼技術進行開發,並將它們與 IBM 產品一起使用。
利用IBM 試用軟體 革新您的下一個開放源碼開發項目。可從下載或 DVD 得到試用軟體。
通過參與 developerWorks blogs 加入developerWorks 社區。
關於作者Frank Pohlmann 以前研究的是中東宗教歷史,後來各基金會認為研究宗教辯證歷史與當今世界相去甚遠,從此他便專攻自己熱愛的領域 —— 免費軟體。他獲准成為英國的 LinuxUser and Developer 的技術編輯。您可通過 [email protected] 與他聯系。關閉[x]關於報告濫用的幫助報告濫用謝謝! 此內容已經標識給管理員注意。關閉[x]關於報告濫用的幫助報告濫用報告濫用提交失敗。 請稍後重試。關閉[x]developerWorks:登錄IBM ID:需要一個 IBM ID?忘記IBM ID?密碼:忘記密碼?更改您的密碼 保持登錄。單擊提交則表示您同意developerWorks 的條款和條件。 使用條款 當您初次登錄到 developerWorks 時,將會為您創建一份概要信息。您在developerWorks 概要信息中選擇公開的信息將公開顯示給其他人,但您可以隨時修改這些信息的顯示狀態。您的姓名(除非選擇隱藏)和昵稱將和您在 developerWorks 發布的內容一同顯示。所有提交的信息確保安全。關閉[x]請選擇您的昵稱:當您初次登錄到 developerWorks 時,將會為您創建一份概要信息,您需要指定一個昵稱。您的昵稱將和您在 developerWorks 發布的內容顯示在一起。昵稱長度在 3 至 31 個字元之間。 您的昵稱在 developerWorks 社區中必須是唯一的,並且出於隱私保護的原因,不能是您的電子郵件地址。昵稱:(長度在 3 至 31 個字元之間)單擊提交則表示您同意developerWorks 的條款和條件。 使用條款. 所有提交的信息確保安全。為本文評分評論回頁首

熱點內容
蟻群演算法時間 發布:2025-03-26 02:57:15 瀏覽:13
android界面透明 發布:2025-03-26 02:57:14 瀏覽:773
孩子存摺忘了如何修改密碼 發布:2025-03-26 02:55:16 瀏覽:706
京東自動領取腳本 發布:2025-03-26 02:55:16 瀏覽:524
不求人腳本 發布:2025-03-26 02:49:33 瀏覽:17
如何快速轉移安卓手機圖片 發布:2025-03-26 02:49:32 瀏覽:555
ftp250 發布:2025-03-26 02:39:58 瀏覽:177
如何清空歷史記錄安卓手機 發布:2025-03-26 02:38:34 瀏覽:836
安卓如何越獄刷系統 發布:2025-03-26 02:00:46 瀏覽:547
華為榮耀登錄密碼是多少 發布:2025-03-26 02:00:44 瀏覽:258