<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          把Linux放進(jìn)軟盤里

          作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/201609/304090.htm

          筆者的同事最近在測(cè)試AMD 64bit CPU時(shí),遇到這樣一個(gè)問(wèn)題:當(dāng)插入含有AMD官方軟件Maxpower64的軟盤后,系統(tǒng)提示不能引導(dǎo)。關(guān)于這個(gè)軟件AMD公司提供的信息很少,只知道它必須在linux環(huán)境下執(zhí)行。所以筆者打開(kāi)軟盤,發(fā)現(xiàn)里面只有兩個(gè)文件:syslinux.cfg,Maxpower64,這樣問(wèn)題就明確了,靠這兩個(gè)文件是無(wú)法引導(dǎo)進(jìn)入linux系統(tǒng)的,更不用說(shuō)執(zhí)行Maxpower64。下面我就介紹一下如何修復(fù)這個(gè)軟件,使得它可以正常使用。

          我們首先要得到一張可以引導(dǎo)進(jìn)入linux環(huán)境的軟盤,這種軟盤必須由兩部分組成,即內(nèi)核和根文件系統(tǒng)。我們首先制作一個(gè)內(nèi)核。

          內(nèi)核的編譯要把內(nèi)核部分放到一張1.44MB的軟盤上去,通常要對(duì)內(nèi)核進(jìn)行壓縮,壓縮內(nèi)核的最好方法是進(jìn)行重新編譯內(nèi)核,將一些不必要的支持去掉,如對(duì)網(wǎng)絡(luò)和其它周邊設(shè)備的支持,重要的一點(diǎn)是記住內(nèi)核必須支持RAMDISK及ext2,否則系統(tǒng)不能正常引導(dǎo)。編譯之前請(qǐng)確認(rèn)您是以root的身份在進(jìn)行操作,否則會(huì)返回Permission Denied的提示。

          首先要到合適的編譯路徑,一般路徑都在/usr/src/,RH9的路徑是在/usr/src/-2.4,只有在這個(gè)路徑你的命令才會(huì)生效。否則會(huì)顯示

          make: *** No rule to make target 'config' , stop的錯(cuò)誤提示.

          如果你以前編譯過(guò)內(nèi)核,那應(yīng)當(dāng)先執(zhí)行#make mrproper 這個(gè)命令,它可以刪除以前的建構(gòu)的痕跡。如果你沒(méi)有編譯過(guò),可以不執(zhí)行它。

          接下來(lái)執(zhí)行#make menuconfig 開(kāi)始配置內(nèi)核,把你認(rèn)為不需要的東西都不要編譯到內(nèi)核,比如業(yè)余電臺(tái),csi,I20,IrDA,isdn,bluetooth.最后保存為.config后退出。

          再接下來(lái)就依次執(zhí)行以下命令:

          #make dep (設(shè)置依賴關(guān)系)

          #make clean (準(zhǔn)備要建構(gòu)的源碼樹)

          #make bzImage (建構(gòu)內(nèi)核 )

          #make modules ( 配置模塊)

          #make modules_install (使用配置的模塊)

          #make install (把新的內(nèi)核和相關(guān)文件復(fù)制到正確的目錄)

          執(zhí)行到這里,在/boot下會(huì)看到名字為vmlinuz-2.4.22custom的文件。這就是我們編譯得到的內(nèi)核。如果它的size大于1.44M,那就得重新編譯,再去掉一些不需要的東西,直到內(nèi)核小于1.44M,為了便于記憶,我們不妨將它重新命名為newkernel,接下來(lái)我們緊接著制作根文件系統(tǒng)。

          根文件系統(tǒng)的制作

          制作根文件系統(tǒng)前,我們先要解決一個(gè)問(wèn)題:因?yàn)橐粋€(gè)根文件系統(tǒng)要實(shí)現(xiàn)基本的功能,必須包括一些常用工具:如:sh,ls,cd,cat…… 但是常用工具會(huì)占用很多空間,要是用原來(lái)系統(tǒng)中的這些命令,就是全部用靜態(tài)編譯,不是用動(dòng)態(tài)連接庫(kù),大概也要有2MB~3MB,放不進(jìn)軟盤。因此我們我們的解決的方案是使用BusyBox工具。BusyBox 它包含了七十多種 Linux 上標(biāo)準(zhǔn)的工具程序,只需要的磁盤空間僅僅幾百 k 。在嵌入式 系統(tǒng)上常用到它 (例如 Linux Router Project 和 Debian boot floppy就使用到它)

          建立 BusyBox

          首先我們從官方網(wǎng)站上下載BusyBox的最新版本:busybox-1.00-rc3.tar.gz并且解開(kāi)

          #tar zxvf busybox-1.00-rc3.tar.gz

          為了壓縮空間,我們采用靜態(tài)編譯,修改 Makefile 中的 DOSTATIC 參數(shù)為true

          DOSTATIC=true

          然后修改 BusyBox 中的 init.c,設(shè)定系統(tǒng)要執(zhí)行的第一個(gè)程序?yàn)? /etc/rc.d/rc.sysinit

          #define INIT_SRCIPT /etc/rc.d/rc.sysinit

          開(kāi)始編譯BusyBox

          #make

          #make install

          到這一步我們就得到了可執(zhí)行命令busybox

          解決了這個(gè)問(wèn)題后,我們可以開(kāi)始制作根文件系統(tǒng)

          制作根文件系統(tǒng)

          首先為根文件系統(tǒng)建一個(gè)目錄叫做 floppy-Linux,然后進(jìn)入 floppy-Linux 目錄內(nèi)

          # mkdir floppy-Linux

          # cd floppy-Linux

          然后為 root filesystem 建立一些標(biāo)準(zhǔn)的目錄

          # mkdir dev etc etc/rc.d bin proc mnt tmp var

          # chmod 755 dev etc etc/rc.d bin mnt tmp var

          # chmod 555 proc

          # ln -s sbin bin

          然后進(jìn)入 /dev 目錄下建立根文件系統(tǒng)必須的一些設(shè)備文件。

          建立一般終端機(jī)設(shè)備

          # mknod tty c 5 0

          # mkdir console c 5 1

          # chmod 666 tty console

          建立 VGA Display 虛擬終端機(jī)設(shè)備

          # mknod tty0 c 4 0

          # chmod 666 tty0

          建立 RAM disk 設(shè)備

          # mknod ram0 b 1 0

          # chmod 600 ram0

          建立 floppy 設(shè)備

          # mknod fd0 b 2

          # chmod 600 fd0

          建立 null 設(shè)備

          # mknod null c 1 3

          # chmod 666 null

          到這里我們就有了一個(gè)初步的小型根文件系統(tǒng),但是還需要配置一些有關(guān)的 shell script來(lái)完善它。

          編輯有關(guān)的 shell script

          首先進(jìn)入到 /floppy-Linux/etc/ 這個(gè)目錄下編輯 inittab,rc.d/rc.sysinit,fstab這三個(gè)文件 ,內(nèi)容分別如下:

          inittab

          ::sysinit:/etc/rc.d/rc.sysinit

          ::askfirst:/bin/sh

          rc.sysinit

          #!/bin/sh

          mount –a

          fstab

          proc /proc proc defaults 0 0

          然后修改inittab,rc.sysinit,fstab這三個(gè)文件的權(quán)限

          # chmod 644 inittab

          # chmod 755 rc.sysinit

          # chmod 644 fstab

          配置完shell script后,我們注意到這些shell script會(huì)使用一些 /bin目錄下的命令,但是我們的/bin目錄下是空的?,F(xiàn)在我們就使用BusyBox來(lái)制作這些常用命令。

          使用BusyBox制作常用命令

          將busybox 復(fù)制到軟盤的/bin目錄下,并且改名為init

          # cp busybox /floppy-Linux/bin/init

          然后創(chuàng)建常用命令的link,具體的工作原理請(qǐng)參閱busybox的官方說(shuō)明。

          # ln -s init ls

          # ln -s init cp

          # ln -s init mount

          # ln -s init umount

          # ln -s init more

          # ln -s init ps

          # ln -s init sh

          現(xiàn)在我們就有了所需的常用命令。

          到這里我們的根文件系統(tǒng)就制作完成了,但是和內(nèi)核一樣,要把根文件系統(tǒng)部分放到一張1.44MB的軟盤上去,也要進(jìn)行壓縮,下面我們就著手壓縮它。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: Linux 放進(jìn)軟盤

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();