新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 軟盤上的Linux系統(tǒng)方案

        軟盤上的Linux系統(tǒng)方案

        作者: 時間:2011-05-20 來源:網(wǎng)絡(luò) 收藏

        本文將介紹一種兩張上的,它可以當(dāng)作應(yīng)急修復(fù)盤、路由器或防火墻等許多地方,通過對它的研究,也可以加深對嵌入式的理解。
          
          一.前言

        本文引用地址:http://www.104case.com/article/150724.htm

          嵌入式是由一個幾百KB的內(nèi)核和一個根據(jù)需要制定的文件系統(tǒng)所構(gòu)成了, 由于Linux是開放源代碼的操作系統(tǒng),所以在嵌入式領(lǐng)域有著非常廣闊的前景,并已經(jīng)廣泛應(yīng)用在許多手機(jī)、PDA、MP3播放器等許多電子產(chǎn)品中。本文將介紹一種兩張上的Linux系統(tǒng),它可以當(dāng)作系統(tǒng)應(yīng)急修復(fù)盤、路由器或防火墻等許多地方,通過對它的研究,也可以加深對嵌入式系統(tǒng)的理解。
          
          二.Linux啟動過程

          所有的PC機(jī)在加電之后,BIOS會尋找到啟動盤第一個扇區(qū),并將其復(fù)制到RAM中來執(zhí)行它,對于兩種不同的啟動方式,這個扇區(qū)通常含有兩種不同的代碼:引導(dǎo)程序(比如Lilo或Grub等)的代碼,引導(dǎo)程序會幫助定位內(nèi)核的位置。內(nèi)核的代碼,這通常是從啟動時使用的引導(dǎo)的方式。對于前者,通常需要內(nèi)核支持initrd。如果是后者,使用的Boot Loader就是arch/i386/boot/bootsect.S。當(dāng)內(nèi)核被編譯的時候,這段執(zhí)行代碼就被鏈接到內(nèi)核image的最開始的地方。這樣很容易就能只要把內(nèi)核復(fù)制到起始位置為第一個扇區(qū)的軟盤上就能得到可自啟動的軟盤。內(nèi)核會初始化設(shè)備驅(qū)動和內(nèi)部的數(shù)據(jù)結(jié)構(gòu),之后它會到一個特定的位置DDRamdisk Word來獲得根文件系統(tǒng)的位置。內(nèi)核必須知道去那里尋找這個根文件系統(tǒng),否則它將停機(jī)。
          
          在使用軟盤啟動的方式時,內(nèi)核可以把一個壓縮的文件系統(tǒng)釋放到RAM中,稱之為Ramdisk,這是一個內(nèi)存區(qū)域,但內(nèi)核會把它當(dāng)作磁盤一樣使用。
          
          本文中介紹的例子使用Grub做為引導(dǎo)程序,并使用initrd來輔助Linux的啟動。兩張軟盤分別命名為bootldr盤和rootfs盤,在bootldr盤中內(nèi)容為grub、內(nèi)核、initrd,rootfs盤中是壓縮過的根文件系統(tǒng)。系統(tǒng)啟動時bootldr盤的Grub定位并執(zhí)行內(nèi)核,然后內(nèi)核解開initrd,并執(zhí)行l(wèi)inuxrc文件,這個文件負(fù)責(zé)提示用戶更換rootfs盤并將其中內(nèi)容解壓至內(nèi)存中,然后執(zhí)行剛剛解壓的init繼續(xù)啟動過程。
          
          為了方便理解這個例子,先介紹目錄結(jié)構(gòu)如下:
          
          /home/papaya
          ├─bootldr/
          │ ├─grub/
          │ ├─kernel/
          │ │ ├─images/
          │ │ └─linux-2.4.21/
          │ └─initrd/
          │   ├─mkinitrd.sh
          │   ├─local/
          │   └─ramdisk/
          ├─rootfs/
          │ ├─mkrootfs.sh
          │ ├─ramdisk/
          │ └─local/
          └─lib/

          三.定制Grub引導(dǎo)程序

          插入一張軟盤,然后將其格式化,然后加載到/mnt/floppy
          
          #mke2fs /dev/fd0
          #mount -t ext2 /dev/fd0 /mnt/floppy -o loop
          在其中創(chuàng)建/boot/grub目錄
          #mkdir -p /mnt/floppy/boot/grub
          
          將系統(tǒng)中/boot/grub下的device.map, stage1, stage2 復(fù)制到/mnt/floppy/boot/grub中,然后在/mnt/floppy/boot/grub目錄下創(chuàng)建grub.conf文件:
          
          default=0
          timeout=10
          title Floppy Linux
          kernel (fd0)/bzImage root=/dev/ram0
          initrd (fd0)/initrd.gz
          
          然后創(chuàng)建一個鏈接
          
          #ln -s grub.conf menu.lst
          
          執(zhí)行
          
          /sbin/grub --batch --device-map=/dev/null   device (fd0) /dev/fd0
          root (fd0)
          setup (fd0)
          quit
          EOF
          
          這樣grub就被安裝到bootldr盤上了。

        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

        上一頁 1 2 3 下一頁

        關(guān)鍵詞: 方案 系統(tǒng) Linux 軟盤

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 资阳市| 彭阳县| 耒阳市| 仁布县| 屏边| 蕉岭县| 青浦区| 尖扎县| 郯城县| 临夏县| 固安县| 衡南县| 巴南区| 广水市| 梁河县| 舟山市| 土默特左旗| 甘南县| 武夷山市| 亳州市| 修武县| 湖州市| 壶关县| 怀来县| 交城县| 思南县| 高州市| 芜湖县| 舒兰市| 眉山市| 大冶市| 武平县| 思茅市| 龙岩市| 志丹县| 天气| 云梦县| 康马县| 阳原县| 云和县| 茌平县|