亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關注微信公眾號

從USB移動硬盤上引導Portable Linux詳解2
2007-07-28   網絡

中間提到一個有用的工具:BusyBox,如果有整個定制過程中出現麻煩,反復地修正和重啟是個麻煩事,而把Bash整到啟動過程中,依賴的各種庫文件很是占用空間,先在虛擬系統內下載一個BusyBox編譯安裝絕對有益于后面定制過程中的手工調試。

  當然,對于最終結果來說,BusyBox不是必須的。

  到這里,虛擬機里己經安裝了一個新的內核,如果你愿意,不妨用它在虛擬機里引導一下,看看它是否工作良好。

  第七才開始進入正題,動手對付這個新內核的initrd鏡像,讓它能正確地聯接在主機上從USB盤上啟動起來,而不是在虛擬機里啟動。先把/boot/initrd-2.6.21.img 復制到你的工作目錄下來,并把它更名成.gz文件,解開到一個定制的目錄中,這里我是這么做的:

  #cd

  3cp /boot/initrd-2.6.21.1.img hd.gz

  #mkdir newinitrd

  #gunzip hd.gz

  #cd newinitrd

  #cpio -i ——make-directories < ……/hd

  這個時候,newinitrd目錄下就是整個initrd文件內被打包壓縮了的文件。

  這里扯一下:發行版內的mkinitrd工具,來自于mkinitrd軟件包,你可以用mkinitrd ——version查一下,編譯核心的最后一步make install這個過程的最后一步就是mkinitrd,這是一個shell腳本,有耐心和興趣的可以仔細讀一下,在我用的5.0.32版本的mkinitrd工具中,linux的開發者也己經試圖加入了生成從usb盤引導linux的功能,只可惜,似乎生成的initrd并不能正常從USB移動硬盤上引導,最后還是得我們自己定制。

  第八:把需要用的內核模塊從/lib/modules/當前版本/kernel/drivers……等目錄中復制到當前initrd解開后的目錄的lib目錄下。在這之前,先看看里面有什么,不同的情況下,還是有一些差別的。

  接著上面的shell環境:

  #cd lib

  #ls -l

  -rw-r——r—— 1 root root 69348 07-24 05:13 BusLogic.ko

  -rw-r——r—— 1 root root 144796 07-24 05:13 ext3.ko

  -rw-r——r—— 1 root root 75736 07-24 05:13 jbd.ko

  -rw-r——r—— 1 root root 24564 07-24 05:13 ub.ko

  -rw-r——r—— 1 root root 148040 07-24 05:13 usbcore.ko

  -rw-r——r—— 1 root root 102960 07-24 05:13 usb-storage.ko

  哦?己經幫我把usb等模塊都復制上去了,還帶了一個BusLogic的SCSI驅動。仔細比較這些ko文件,有不少還是被strip過的,比/lib/modules下的縮水小了很多。但是……

  少了總線驅動,它以為我把usb總線控制器編譯到內核中了?沒辦法,這里只好老老實實地先把總線驅動文件先復制過來。

  接著上面的shell環境:

  #cp /lib/modules/2.6.21.1/kernel/drivers/usb/host/ehci-hcd.ko .

  #cp /lib/modules/2.6.21.1/kernel/drivers/usb/host/uhci-hcd.ko .

  它們可以去掉內部的一些符號以縮小體積:

  #strip ehci-hcd.ko

  #strip uhci-hcd.ko

  還少了必須的scsi disk 支持模塊:

  #cp /lib/modules/2.6.21.1/kernel/drivers/scsi/sd_mod.ko .

  這個不就必strip了,似乎strip它的話,會加載不上。

  除此之外,我們還得準備一個sleep,取代linux引導時用的nash中的sleep內部命令,那個不能有效地進行延時,于是到再到bin目錄下:

  這里還是得保留在我們的newinitrd目錄下:

  #cd ……/bin

  #cp /bin/sleep .

  除此之外,還得也準備好sleep所依賴的庫文件:

  #ldd ./sleep

  linux-gate.so.1 => (0xffffe000)

  libc.so.6 => /lib/libc.so.6 (0x00c44000)

  /lib/ld-linux.so.2 (0x003b7000)

  它需要lib目錄下要有libc.so.6和ld-linux.so.2,找到它們,復制到lib目錄下

  #cd ……/lib

  #cp /lib/ld-linux.so.2 .

  #cp /lib/libc.so.6 .

  到這里,必須的文件就準備好了。

熱詞搜索:

上一篇:從USB移動硬盤上引導Portable Linux詳解1
下一篇:從USB移動硬盤上引導Portable Linux詳解3

分享到: 收藏