RSS訂閱本站最新文章:SUBSCRIBE TO RSS FEED
加入我的最愛:ADD FAVORITE
最佳瀏覽1024*768以上,部分字體使用微軟正黑體
  輕鬆。簡單。人生/Linux學習  2007/11/12 21:42 by 哇哇
系統開機少不了 init,command 當然也不能少,若要從系統上抽取某些 command 來用,不單單只是複製一個執行檔那麼簡單,對應的函式庫也要一起包含起來才有辦法。來個小實驗吧,我習慣使用 bash 當成我的操作環境,我要把 bash 加到我的 embedded 目錄 /root/images/main (以下簡稱環境)裡。

再簡單也不過的一個做法,先來把 bash 複製到環境內的 /bin
# cp -a `which bash` /root/images/main/bin

我們把 /root/images/main/bin 當成家目錄來執行 bash 試試看吧
# chroot /root/images/main/ bash
bash: error while loading shared libraries: libtermcap.so.2: cannot open shared object file: No such file or directory

看到錯誤囉,看來這一切不是 portable 那般簡單;錯誤的訊息提示的很明確,就是缺少 libraries,這點大家不會懷疑吧,那麼要怎麼知道 bash 需要哪些 libraries 呢?一個很少用的命令有機會使用囉。
# ldd `which bash`
        linux-gate.so.1 =>  (0x008c2000)
        libtermcap.so.2 => /lib/libtermcap.so.2 (0x435ca000)
        libdl.so.2 => /lib/libdl.so.2 (0x43582000)
        libc.so.6 => /lib/libc.so.6 (0x43443000)
        /lib/ld-linux.so.2 (0x43421000)

看來好像需要很多東西的樣子,我們要這些 libraries 通通複製到環境內的,先來看看 libraries 的狀態。
# ls -l /lib/libtermcap.so.2 /lib/libdl.so.2 /lib/libc.so.6 /lib/ld-linux.so.2
lrwxrwxrwx 1 root root  9 10月 29 04:34 /lib/ld-linux.so.2 -> ld-2.5.so
lrwxrwxrwx 1 root root 11 10月 29 04:34 /lib/libc.so.6 -> libc-2.5.so
lrwxrwxrwx 1 root root 12 10月 29 04:34 /lib/libdl.so.2 -> libdl-2.5.so
lrwxrwxrwx 1 root root 19 10月 29 04:35 /lib/libtermcap.so.2 -> libtermcap.so.2.0.8

全部都是 softlink 啊,我習慣是依樣畫葫蘆的複製過去,雖然說直接 cp 也是可以,當然我也有已經寫好的 shell script。
# ls -l /root/images/main/lib/libtermcap.so.2 /root/images/main/lib/libdl.so.2 /root/images/main/lib/libc.so.6 /root/images/main/lib/ld-linux.so.2
lrwxrwxrwx 1 root root  9 10月 31 10:06 /root/images/main/lib/ld-linux.so.2 -> ld-2.5.so
lrwxrwxrwx 1 root root 11 10月 31 10:06 /root/images/main/lib/libc.so.6 -> libc-2.5.so
lrwxrwxrwx 1 root root 12 10月 31 10:06 /root/images/main/lib/libdl.so.2 -> libdl-2.5.so
lrwxrwxrwx 1 root root 19 10月 31 10:06 /root/images/main/lib/libtermcap.so.2 -> libtermcap.so.2.0.8

再一次把環境當成根目錄來執行 bash 試試看吧^^
# chroot /root/images/main/ bash
bash-3.1#

哈哈~bash 出現囉,版本3.1也被大家發現哩~基本上複製一個 command 大致完成哩,但是還是得提醒大家雖然這樣測試正常,但是不保證開機也會正常唷,所以另一個不常用的指令也要上場了。我要把 ldconfig(not a dynamic executable) 複製到環境的 /sbin 內,複製完成過後來檢測一下!
# chroot /root/images/main/ ldconfig -v
ldconfig: Can't open configuration file /etc/ld.so.conf: No such file or directory
ldconfig: Can't stat /usr/lib: No such file or directory
/lib:
        libtermcap.so.2 -> libtermcap.so.2.0.8
        ld-linux.so.2 -> ld-2.5.so
        libc.so.6 -> libc-2.5.so
        libdl.so.2 -> libdl-2.5.so

看到哩錯誤就來修正吧~
# touch /root/images/main/etc/ld.so.conf
# mkdir /root/images/main/usr/lib

完成修正後再次檢測就正常囉!

我常使用的指令還真是不少啊,若是一個一個這樣做就麻煩大哩,因為 linux 實在是很 friendly,command 常常可以下個 -h 或是 --help,而且會有非常多的參數可以選擇,但是要最小化系統,甚至到一個 embedded 的環境那些都是不必要的,因此得把 busybox 請出來囉!!

下載了 busybox 之後解壓縮,進到該目錄,這一切的步驟就和編譯核心差不多,而且內容比編譯核心好看許多,其實大多都只是勾選自己需要的指令而已。
# cd /root/src/busybox-1.7.2
# make menuconfig

比較需要注意的是 Busybox Setting ---> General Configuration ---> Path to BusyBox executable 這裡要把路徑指定到環境 /root/images/main 內,之後當然也就是 make ; make install,完成之後到環境內的 bin 和 sbin 看看吧,我所需要的100個指令都是 softlink 到環境內的 /bin/busybox,那 busybox 這個檔案有多大呢?
# ls -lh /root/images/main/bin/busybox
-rwxr-xr-x 1 root root 437K 10月 29 08:17 /root/images/main/bin/busybox

的確沒有看錯啦,100個指令只需要437K,而且包含 init 在內,但是要記得 ldd 看一下 busybox 需要哪些 libraries 唷,一樣都要把 libraries 複製到環境內,這時候可以再 chroot 到環境內試試看是否正常運作囉^^

下一步驟我希望可以帶大家完成開機的步驟^^,今天解說的一切看得懂就懂吧...基本上是以備忘之名來發表文章的=.=,因為寫教學壓力就太沉重哩,本人沒有那麼厲害啦。










2007/11/12 21:42 2007/11/12 21:42
檔案寄存:teamagic,MaxCDN
http://portable.easylife.tw/trackback/1111

駐廠正妹

開關

Bloggerads

ClickForce

BlogAD

最新文章

  1. 【置頂】【大力玩】全球一動4G隨身分享器,獨樂樂不如眾樂樂!流暢的4G網路!
  2. Instant Color Picker 2.5.0.32 - 功能豐富的螢幕取色工具  (1)
  3. ProduKey v1.45 - 方便保存你的產品序號  (7)
  4. Q-Dir 4.36 - 多視窗的檔案總管  (104)
  5. 【Firefox外掛】Redirector幫您達成輕鬆轉址!特別可以用在mobile01上!  (4)
  6. 【台北西門店】花月嵐。大蒜拳骨拉麵~真是心滿意足的一餐!  (12)
  7. FastPictureViewer 1.2 - 優質的圖片瀏覽軟體  (10)
  8. 真愛零距離 Going the Distance  (2)
  9. 【台南】莉莉水果店。這應該是台南最有名氣的冰品吧~  (16)
  10. Visual Subst v1.0.6 - 讓你把目錄當成磁碟機來使用  (3)
  11. Screen2Exe 3.0 - 高壓縮算法的錄製螢幕工具  (64)
  12. 【台南】清閣水樓。來吃湯包囉!  (6)
  13. Fastcopy v2.02 - 最快的檔案拷貝工具  (69)
  14. CrystalDiskInfo 3.7.0a - 漂亮的報表顯示您的硬碟現狀  (22)
  15. 【備忘】SSH RSYNC遠端同步備份檔案,順便談網站資料備份  
  16. 【台南】正宗的唷!前體育場杏仁豆腐冰  (2)
  17. 台南肉圓的對決!武廟肉圓 v.s 福記肉圓  (4)
  18. Remote Desktop Organizer v1.4.4 - 遠端桌面管理工具  (3)
  19. WizMouse 1.0.0.9 - 不受多層視窗限制,滑鼠依然可以滾滾滾!  (8)
  20. Quicksys RegDefrag 2.9 - 優化系統登錄檔  (8)
  21. Media Player Classic HomeCinema 1.3.2210 - 比Media Player Classic更厲害的?  (53)
  22. 第十三台小徑車。LOUIS GARNEAU MVC。心動  
  23. 【台南】地球咖啡。富立時尚館  (2)
  24. 第十二台小徑車。Speed One R30。心動  (4)
  25. 第十一台小徑車。Performer ECLIPSE TI FORCE。鈦心動  
  26. 節能環保與生活紓壓的一座青山。永龍建設  (10)
  27. LPIC 3考試範圍,到底該如何準備呢?  
  28. Moo0 AudioPlayer 1.49 - 省資源的音樂播放器  (9)
  29. 【台南】帕瑪義式廚房,辣到我都下雨了!  (10)
  30. 體驗新的台南夜騎路線 - 鹿耳門聖母廟  (4)
  31. 【台北】丁家樓麵食館。麵好吃~水餃更好吃!  (4)

網站貼紙

贊助廠商

墨水特賣會,天天都超值
碳粉批發價,天天都便宜
888Boss創業加盟網
阿姆斯壯木地板系統家具 信維記帳士事務所
IT4FUN
帛琉旅遊 便宜機票 長灘島旅遊首選 招牌設計 新竹廚具
九九汽車音響影視 九九汽車音響賣場
台南日本料理吉藏