線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1891
推到 Plurk!
推到 Facebook!

安裝應用程式"pciutils"在Embedded Linux

尚未結案
ajuang
一般會員


發表:7
回覆:11
積分:3
註冊:2004-08-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-23 19:20:31 IP:61.220.xxx.xxx 未訂閱
請問涉獵Embedded Linux的前輩: 我building一個基本的Embedded Linux會產生image file並將它load到我的作業平台(非一般PC). 我有一應用程式pciutils(http://pciids.sf.net/)要整合到系統. 當我完成pciutils的make及make install後,我如何將它整合到整個系統.也就是最後產生的image file放到我的作業平台後就可執行該應用程式?
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-23 23:17:30 IP:61.64.xxx.xxx 未訂閱
Linux on ONE Disk 作者: 遊手好閒的石頭成 E-Mail: shirock@pchome.com.tw Date: Dec 14, 2000    建立 root filesystem image    選擇設備空間  選擇 root filesystem 的檔案  建立 image  建立 boot disk    準備空白磁片  建立 boot filesystem  寫入開機資訊  後記  建立 root filesystem image root filesystem 就是我們在登入 linux 後,所看到的檔案系統, 我們平時使用的工具,就放在其中。    如果我們光只是啟動了 Linux ,卻沒有 root filesystem , 那什麼事都無法做。 就好像電腦中安裝了 Win95/98 ,卻不小心把 C:\Windows 給刪除了一樣。    1.選擇一個設備空間 選擇一個設備的空間,並將此空間格式化,以做為 root filesystem 。     (1) ramdisk 建立 ramdisk 空間的方式,是用 dd 指令,填入指定大小的內容後, 就會在 ram 中保留該大小的空間;而這個 ram 空間,就連接到 dd 指 令中,所指定的設備名稱,如 /dev/ram0 。     $ dd if=/dev/zero of=/dev/ram0 bs=1k count=4096     上面這指令的意義是,從輸入設備 /dev/zero 中,以 bs 指定的大小(1k), 讀取資料,輸出到設備 /dev/ram0 中,重覆輸出入 count 指定的次 數(4096次)。這表示 /dev/ram0 所連接的 ram 空間,會有 4096K 的空間可用。    /dev/zero 是一個特殊的設備,從這個設備中,讀取的內容,全部都是 0 。    ramdisk 可以建立的很大,但我們只是要找一個空間,供我們製作 root disk ,因為一塊軟碟片的空間不會很大,所以我們也不需要 挖一塊很大的 ram 空間,大概 4096k 就夠了。    雖然一塊 MF-2HD 的磁片,只有 1440K ,但因為我們是要將 root filesystem 的內容,變成 image 檔,再壓縮過一次後,才放入磁片裡, 所以這塊要做為 root filesystem 的空間,可以大於 1440K 。    格式化這塊 ram 空間,因為 minix 檔案系統格式比較省空間,所以 用這格式:    $ mkfs.minix /dev/ram0 4096     最後 mount 此空間 (我 mount 在 /mnt/rootfs 目錄上),準備複製檔案:    $ mount -t minix /dev/ram0 /mnt/rootfs     (2) loopback device: loopback image 檔 有些人是用舊機器跑 linux , ram 可能只有 16~32mb ,用 ramdisk 就不太方便,這時仍可以利用 loopback 設備。 作法是將一個檔案,當作 loopback 設備 mount 起來。    $ dd if=/dev/zero of=/tmp/rootfs-file bs=1k count=4096     上面的指令,會在 /tmp 建立一個叫 rootfs-file 的檔案,大小 是 4096KB 。 意義跟上面 ramdisk 一樣,只是一個把空間建立在 ram 中,另一個 建立在 disk 中。    格式化:    $ mkfs.minix /tmp/rootfs-file 4096     把這個檔案 mount 上去:    $ mount -o loop -t minix /tmp/rootfs-file /mnt/rootfs     (3) 硬碟 這個方法不太建議使用... 在硬碟上分一個 partition ,格式化後 mount 上去,做為 root filesystem 的空間。    除非硬碟上剛好有一個 partition 沒在用,否則不需要這麼做。    總結來說,有三個步驟:    建立一個儲存空間 $ dd if=/dev/zero of=DEVICE bs=1k count=???  格式化此空間 $ mkfs.minix DEVICE  mount 此空間 $ mount -t minix DEVICE /mnt/rootfs  2.選擇要放入 root filesystem 的檔案 這個部份就看你自已的了,總之,在 root filesystem 中, 通常需要有下列的目錄:    bin/ dev/ proc/ tmp/ var/ lib/ etc/ mnt/ sbin/ -> bin/    目錄下要有哪些檔案,很多,我不列舉,有些是必要的, 有些是選擇性的,自已憑經驗看著辦...    下面是一份我用於建立 Embedix Linux root disk 時, 其 root filesystem 的檔案清單。 [root filesystem 檔案清單]    在複製的檔案時,最好用 cp -dpR 來複製,這樣才可以完 整地將檔案屬性複製過去(特別是那些設備檔及符號連結檔)。    這些檔案複製好後,我們就完成 root filesystem 的內容了。    3.建立 root filesystem 的 image  接下來,我們要將這整個 root filesystem 的內容,變成一 個 image (檔案),並且加以壓縮。    最好先 umount :     $ umount /mnt/rootfs     接著將該空間的內容給 dump 出來,變成一個 image 檔, 並壓縮,我用一個動作完成:    $ dd if=DEVICE bs=1k count=??? | gzip -9 > /tmp/rootfs.gz     DEVICE 是你選擇的設備,在本文中,如 /dev/ram0, /tmp/rootfs-file ; ??? 的大小,是你建立這空間時所指定的,本文中,都是用 4096 。    此時,請先檢視這個壓縮過的 image ,如果大小 (還要加上 kernel 所 佔的空間) 超過一張磁片的容量,那不能用。 請重新檢視你的 root filesystem 的檔案清單,剔除不要的內容, 再重複本章的三個動作: 建立空間、複製檔案、產生 image 。    之所以要再重新建立空間,是為了清除空間中的舊有資料, 全部設為 0 ,這樣在製作 image 時,就可以壓得比較小。    建立啟動磁片 前面的都是準備工作,接下來才是建立啟動磁片。    1.準備一塊空白磁片 格式化後, mount 上去(我 mount 在 /mnt/bootdisk 上)。    $ mkfs.minix -c /dev/fd0 $ mount /dev/fd0 /mnt/bootdisk     2.建立 boot filesystem 啟動時期的會用的檔案,這跟 root filesystem 不一樣... 啟動時期需要的檔案不多,清單如下:       ================================    drwxr-xr-x         boot/    -rw-r--r--         bootmessage    drwxr-xr-x         dev/    -rw-r--r--         lilo.conf    -rw-r--r--         rootfs.gz    drwxr-xr-x         tmp/       boot/    -rw-r--r--         boot.b    -rw-r--r--         chain.b    -rw-------         map    -rw-r--r--         vmlinuz       dev/    brw-r-----         fd0    brw-r-----         hda    brw-r-----         hda1    crw-r--r--         null    brw-r-----         ram0   ================================    請留意這份清單的檔案,其所需的空間不能超過一張磁片 的大小,特別是 vmlinuz 及 rootfs.gz 。    rootfs.gz 就是本文之前所建立的 root filesystem 的 image 。    vmlinuz 則是要啟動的 kernel ,可以用安裝時預設的 kernel , 也可以自已編譯一個。 有些 distrubition 的光碟中,會附上數種事先編譯好的 kernel , 也可以拿來用。     至於 lilo.conf 的內容,則如下述:      ============================   boot=/dev/fd0   install=/boot/boot.b   map=/boot/map   backup=/dev/null   compact   vga=normal   timeout=60   message=bootmessage   prompt   #ramdisk=4096      image=/boot/vmlinuz         label=LINUX         root=/dev/ram0         read-write         initrd=rootdsk.gz      image=/boot/vmlinuz         label=mount         root=/dev/fd0         read-only      other=/dev/hda1         label=DOS         table=/dev/hda   ============================    第一個 label 是以磁片上的 roofs.gz 的內容,作為 root filesystem ; 第二個 label 則是用來 mount 硬碟上的指定的 partition 做為 root filesystem ; 第三個 label ,則是啟動 DOS/Win9x 。    準備好 boot filesystem 的檔案清單後,就可以動手將 檔案複製到軟碟上去了,一樣用 cp -dpR 複製。 本文中,就是複製到 /mnt/bootdisk 中。    3.寫入開機資訊到磁片中 將開機資訊,寫入磁片的啟動磁區中,這樣 BIOS 才能載入 kernel 。    $ lilo -v -r /mnt/bootdisk -C /lilo.conf     注意,是 /lilo.conf ,而不是 /mnt/bootdisk/lilo.conf ,因為已經 指定將 /mnt/bootdisk 視為 root 了。    到此為止,就完成了一塊可以開機並使用工具的 Linux 磁片了。    後記 這篇內容,只是我一時興起,當初我在取得 Embedix Linux 後, 因為它的大小很小,覺得很有趣,就想試著將它給塞入一塊磁片中,看能不能用, 這個試驗的結果,就是本文了。    我在做這事時,看了很多 Linux HOW-TO 的文章,因為 很多,就不列舉了,事實上我也記不起來了(真的很多篇)。        Copyright (c) Shih Yuncheng . Rock's saying: http://home.educities.edu.tw/shirock/ Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentation License". http://www.fsf.org/licenses/fdl.html
ajuang
一般會員


發表:7
回覆:11
積分:3
註冊:2004-08-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-27 16:22:06 IP:61.220.xxx.xxx 未訂閱
真是巨細靡遺,Thanks...
ajuang
一般會員


發表:7
回覆:11
積分:3
註冊:2004-08-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-07 21:41:35 IP:61.220.xxx.xxx 未訂閱
文章中提到[root filesystem 檔案清單],可否提供詳細資料?
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-07 22:48:54 IP:61.64.xxx.xxx 未訂閱
引言:建立 root filesystem image root filesystem 就是我們在登入 linux 後,所看到的檔案系統, 我們平時使用的工具,就放在其中。 如果我們光只是啟動了 Linux ,卻沒有 root filesystem , 那什麼事都無法做。 就好像電腦中安裝了 Win95/98 ,卻不小心把 C:\Windows 給刪除了一樣。
這不是 已經說明了 不然把他看成是DOS 這樣夠簡單化 樹狀系統 c = root
ajuang
一般會員


發表:7
回覆:11
積分:3
註冊:2004-08-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-08 08:33:56 IP:61.220.xxx.xxx 未訂閱
1. Sorry!是我問的不詳細. 在 root filesystem 中, 我知道你列出需要的目錄,但那些目錄下哪些檔案是必須的,我不是很清楚. 可否提供建議清單. 2. 我找不到 mkfs.minix 命令,但有其他如 mkfs.ext2. 請問我是否遺漏甚麼? 謝謝!!!(我用 mkfs -t minix /dev/ram0 4096 代替)
系統時間:2024-05-15 11:26:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!