編譯過程如下:
make menuconfig
對核心進行配置,執行該命令的時候,要求所開的終端寬度要足夠顯示80個字元,以顯示整個配置的圖形介面,否則會出現錯誤。
進入配置介面之後,在device driver->block devices裡面選擇
ram disk support
initial ram disk support
兩個專案。在graphics support裡面選擇
support for frame buffer deiveces
console display driver support->framebuffer console support
由於對於將要選擇顯示卡不明確,我沒有更改這個裡面的設定
另外,還需要選擇********** devices裡面的video for linux選項,裡面的驅動程式不用選擇。
注意:1.對於奔騰ii晶元,需要在 processor裡面選擇
2.選擇核心模組的時候,會出現兩種情況。一種是*號,表示選定到真正的核心中。另外一種是「m」符號,表示核心起來以後再載入進去的模組。我們檔案系統裡面不新增其它的核心模組,我們都選擇第一種。
配置好之後,直接
make bzimage
編譯之後,在arch/i386/boot/裡面有乙個bzimage檔案,拷貝它到u盤的根目錄下面。
注意:核心的編譯是從源**開始的,由於不同的編譯器版本對源**的處理方式不同。因此,相同的**在不同的編譯器上都會可能出現不同的編譯錯誤。我在gcc3.2和gcc4.1下編譯通過。
四、編譯busybox
使用命令:
tar –jxvf busybox-1.2.0.tar.bz2
解壓之後,進入busybox-1.2.0的目錄
使用make menuconfig進行配置,選擇需要的命令。一定要選擇shell裡面的ash以及init utility裡面的init,其它的可以隨便選擇一些常用的命令。
然後使用make,對源**進行編譯。
編譯完成之後,建立乙個臨時的目錄,儲存busybox生成的檔案。我建立的是/tmp/usb
然後使用下面命令拷貝busybox的檔案到臨時目錄,這個目錄以後就是我們的系統啟動後的檔案系統。
make prefix=/tmp/usb install
tar –zxvf qtopia-core-opensource-src-4.1.4.tar.gz
進入qtopia-core目錄,使用如下的配置方式
./configure –embedded x86
配置好之後,使用make編譯該原始檔。
注意:qtopia-core編譯大概需要4個小時(我的機器用了這麼長時間,配置是512m記憶體,p4 1.8g的處理器),而且需要大概1.5g的空間。如果空間不足,可能會出現莫名其妙的問題。
然後使用make install將qtotpia-core安裝到系統目錄。
安裝之後,就可以使用找個庫開發圖形介面的應用程式。但是要在精簡的linux系統上執行,需要把qt的庫拷貝到找個系統上。
除錯庫通常比較大,所以,我們主要拷貝非除錯的庫,同時還拷貝系統其它的庫到/tmp/usb/lib目錄。
拷貝的時候,cp命令要增加-a命令以拷貝符號鏈結。
比如我拷貝libqtgui的時候,我使用下面的命令:
cp /usr/local/trolltech/qtopia-core-4.1.4/lib/libqtgui.so* /tmp/usb/lib –a
上面截圖中的庫的分布路徑主要在/lib /usr/lib以及qt的lib目錄下面,如果找不到,可以使用locate命令進行查詢.
locate libz.so
拷 貝完成庫之後,還需要把qt的字型也拷貝過來。qt的字型在/usr/local/trolltech/qtopiacore-4.1.4/lib /fonts裡面。主要需要拷貝裡面的fontdir檔案。找個檔案記錄了每種字型所在的路徑。可以拷貝一些必要的字型到/tmp/usb裡面,路徑跟本 機路徑相同。比如我就拷貝到
/tmp/usb/usr/local/trolltech/qtopiacore-4.1.4/lib/fonts裡面
需要拷貝的字型由你的fontdir裡面決定。你可以在找個檔案中刪除你沒有拷貝的那些字型。
五、製作檔案系統
到現在為止,我們已經準備好了需要的檔案了。最後我們要開始製作我們的檔案系統。
剛剛已經拷貝了必要的庫已經busybox到響應的目錄了。現在我們還需要增加一些系統啟動需要的檔案。
首先建立/tmp/usb//etc目錄,在找個目錄下面建立檔案initab,在檔案中寫入以下內容:
::sysinit:/etc/rc.s
::askfirst:/bin/ash
其中,sysinit表示後面找個程式在系統初始化的時候執行,後面的askfirst表示系統初始化完畢後啟動的程式。這個程式如果執行結束,那麼系統會再次啟動它。
然後建立rc.s檔案,寫入以下內容:
#!/bin/ash
/bin/mount -t proc /proc /proc
export path=/bin/:/sbin/:/usr/sbin/
最後,我們需要建立裝置檔案。首先建立乙個/tmp/usb/dev目錄。在下面執行一下命令以建立裝置檔案。
mknod console c 5 1
mknod fb0 c 29 0
mknod hda b 3 0
mknod hda1 b 3 1
mknod loop0 b 7 0
mknod null c 1 3
mknod ram0 b 1 0
mknod tty c 5 0
mknod tty0 c 4 0
ln –s fb0 fb
建立好這些檔案之後,檔案系統就可以了。我們還可以把我們的程式拷貝到找個檔案系統當中,然後修改rc.s檔案,使得它自動執行。也可以進去之後,使用busybox提供的shell來執行。
最後一步,就是把找個檔案系統做成乙個記憶體檔案系統的影像。
首先,新建乙個空的檔案,大小為16m,我使用下面的命令:
dd if=/dev/zero of=/tmp/image bs=1024 count=16384
然後,把找個空檔案對映到乙個裝置檔案上面,使用下面的命令進行:
losetup /dev/loop0 /tmp/image
把這個影像格式化為ext2格式:
mke2fs /dev/loop0
格式化好之後,把它掛載到我們主機的檔案系統上面來,我把它掛載到/mnt/img:
mount /dev/loop0 /mnt/img
然後把我們建立好的檔案系統從/tmp/usb拷貝過來
cp /tmp/usb/* /mnt/img/ -ar
拷貝完成之後,我們的images檔案就是包含了這些檔案的檔案映像了。
把它從系統中解除安裝出來
umount /dev/loop0
把loop0跟imag脫離關係
losetup –d /dev/loop0
sync
現在,我們的檔案映像做好了。再把它壓縮一下:
dd if=image |gzip -9 >image.gz
image.gz就是我們的壓縮的記憶體檔案影像了。把它拷貝到u盤的根目錄下面。
設定系統引導從usb啟動(usb-hdd),系統就會啟動到busybox提供的shell下面。
精簡Linux檔案路徑
精簡linux的檔案路徑 回退的功能 留在當前目錄 只保留乙個 abc 要返回.報錯刪除最後乙個 主要思路 string.split,注意開始是 或者.或者.等三種不同情況。用棧記錄路徑的起始位置,討論 後的不同情況即可 class solution def linux path compress ...
Linux常用指令(精簡)
uname a 檢視系統核心與系統版本,如要檢視當前系統版本的詳細資訊需要檢視release檔案,根據不同的linux系統release檔案名字會不同,如cat etc release。uptime 用於檢視系統的負載資訊。free h 顯示當前系統中記憶體的使用量。who 檢視當前登入主機的使用者...
Linux 檢視檔案 精簡
catcat n 檢視所有的行加上行號 cat b 只給有文字的行加上行號 cat t 不出現製表符 more more命令會顯示文字檔案的內容,但會在顯示每頁資料之後停下來.q退出 more命令顯示了乙個標籤,其表明你仍然在more程式中以及你現 在在這個文字檔案中的位置。這是more命令的提示符...