• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 把linux裝入一張軟盤

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    網上有很多類似的文章,但往往不完整或是不準確,這篇是我見過很好的一篇。(豬豬) 把Linux放進軟盤里 我們首先要得到一張可以引導進入 linux 環境的軟盤,這種軟盤必須由兩部分組成,即內核和根文件系統。我們首先制作一個內核。 內核的編譯要把內核部分放
       網上有很多類似的文章,但往往不完整或是不準確,這篇是我見過很好的一篇。(豬豬)

                                                           
    把Linux放進軟盤里

      我們首先要得到一張可以引導進入linux環境的軟盤,這種軟盤必須由兩部分組成,即內核和根文件系統。我們首先制作一個內核。
    內核的編譯要把內核部分放到一張1.44MB的軟盤上去,通常要對內核進行壓縮,壓縮內核的最好方法是進行重新編譯內核,將一些不必要的支持去掉,如對網絡和其它周邊設備的支持,重要的一點是記住內核必須支持RAMDISK及ext2,否則系統不能正常引導。編譯之前請確認您是以root的身份在進行操作,否則會返回Permission Denied的提示。

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

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

      如果你以前編譯過內核,那應當先執行#make mrproper 這個命令,它可以刪除以前的建構的痕跡。如果你沒有編譯過,可以不執行它。

      接下來執行#make menuconfig 開始配置內核,把你認為不需要的東西都不要編譯到內核,比如業余電臺,csi,I20,IrDA,isdn,bluetooth.最后保存為.config后退出。

    再接下來就依次執行以下命令:

    #make dep (設置依賴關系)
    #make clean (準備要建構的源碼樹)
    #make bzImage (建構內核 )
    #make modules ( 配置模塊)
    #make modules_install (使用配置的模塊)
    #make install (把新的內核和相關文件復制到正確的目錄)

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

    根文件系統的制作

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

    建立 BusyBox

    首先我們從官方網站上下載BusyBox的最新版本:busybox-1.00-rc3.tar.gz并且解開

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

    為了壓縮空間,我們采用靜態編譯,修改 Makefile 中的 DOSTATIC 參數為true

    DOSTATIC=true

    然后修改 BusyBox 中的 init.c,設定系統要執行的第一個程序為: /etc/rc.d/rc.sysinit

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

    開始編譯BusyBox

    #make
    #make install

    到這一步我們就得到了可執行命令busybox

    解決了這個問題后,我們可以開始制作根文件系統

    制作根文件系統

    首先為根文件系統建一個目錄叫做 floppy-Linux,然后進入 floppy-Linux 目錄內

    # mkdir floppy-Linux
    # cd floppy-Linux

    然后為 root filesystem 建立一些標準的目錄

    # 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

    然后進入 /dev 目錄下建立根文件系統必須的一些設備文件。

    建立一般終端機設備

    # mknod tty c 5 0
    # mkdir console c 5 1
    # chmod 666 tty console

    建立 VGA Display 虛擬終端機設備

    # mknod tty0 c 4 0
    # chmod 666 tty0

    建立 RAM disk 設備

    # mknod ram0 b 1 0
    # chmod 600 ram0

    建立 floppy 設備

    # mknod fd0 b 2
    # chmod 600 fd0

    建立 null 設備

    # mknod null c 1 3
    # chmod 666 null

    到這里我們就有了一個初步的小型根文件系統,但是還需要配置一些有關的 shell script來完善它。

    編輯有關的 shell script

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

    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這三個文件的權限

    # chmod 644 inittab
    # chmod 755 rc.sysinit
    # chmod 644 fstab

    配置完shell script后,我們注意到這些shell script會使用一些 /bin目錄下的命令,但是我們的/bin目錄下是空的?,F在我們就使用BusyBox來制作這些常用命令。

    使用BusyBox制作常用命令

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

    # cp busybox /floppy-Linux/bin/init

    然后創建常用命令的link,具體的工作原理請參閱busybox的官方說明。

    # 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

    現在我們就有了所需的常用命令。

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

    壓縮根文件系統

      一般我們會采取 RAM Disk 的方式實現。簡單的來說就是將準備好的根文件系壓縮成為Ramdisk的鏡像文件,當用軟盤啟動時,再把鏡像文件解壓到內存中,形成一個虛擬盤(RAMDISK),通過RAMDISK控制系統啟動。

    我們現在制作Ramdisk的鏡像文件

    # dd if=/dev/zero of=/tmp/tmp_loop bs=1k count=2048
    # losetup /dev/loop0 /tmp/tmp_loop
    # mke2fs -m 0 /dev/loop0
    # mount -t ext2 /dev/loop0 /mnt
    # cp -a /floppy-Linux /mnt
    # umount /mnt
    # losetup -d /dev/loop0
    # dd if=/tmp/tmp_loop | gzip -9 > /tmp/Image.gz
    # rm -f /tmp/tmp_loop
    # sync

    這樣我們就得到了壓縮過的根文件系統也就是Ramdisk的鏡像文件Image.gz。

    目前為止我們已經有了內核和壓縮過的根文件系統.現在剩下的就是把它們整合在一張軟盤里面。

    整合核心和根文件系統

    根據引導的方式不同,有以下三種整合方案:

    用grub引導

    依次執行:

    # mke2fs /dev/fd0
    # mount /dev/fd0 /mnt/floppy
    # mkdir /mnt/floppy/boot
    # mkdir /mnt/floppy/boot/grub
    # cp /boot/grub/stage1 /mnt/floppy/boot/grub
    # cp /boot/grub/stage2 /mnt/floppy/boot/grub
    #grub

    在 grub> 提示符處,輸入:

    grub> root (fd0)
    grub> setup (fd0)
    grub> quit
    #cp newkernel /mnt/floppy/boot
    #cp Image.gz /mnt/floppy/boot
    #cp /boot/grub/grub.conf /mnt/floppy/boot/grub

    編輯grub.conf, 內容如下:

    timeout 10
    default 0
    title My little Linux
      root (fd0)
      kernel /boot/newkernel ro root=/dev/ram0
      initrd /boot/ Image.gz

    然后制作grub.conf的link文件menu.lst

    #ln -s /mnt/floppy/boot/grub/grub.conf /mnt/floppy/boot/grub/menu.lst
    #umount /mnt/floppy

    整合完成!

    用sysLinux引導

    依次執行:

    # mkdosfs /dev/fd0
    # sysLinux /dev/fd0

    編輯 sysLinux 的組態檔 sysLinux.cfg,內容如下

    TIMEOUT 20
    DEFAULT Linux
    LABEL Linux
    KERNEL newkernel
    APPEND root=/dev/ram0 ro initrd=Image.gz

    然后將 sysLinux.cfg、newkernel、Image.gz 拷貝到磁盤中

    # mount /dev/fd0 /mnt/floppy
    # cp newkernel /mnt/floppy
    # cp Image.gz /mnt/floppy
    # cp sysLinux.cfg /mnt/floppy
    #umount /mnt/floppy

    整合完成!

    直接引導

    依次執行:

    # dd if=newkernel of=/dev/fd0 bs=1k
    252+1 records in
    252+1 records out

    在這個例子中,dd 寫入了 252 個完整記錄(records) + 1個partial record ,所以內核占用了 253 個軟盤的 blocks 。這個數字稱為 KERNEL_BLOCKS ,請記得它,這個數字還要使用.

    #rdev /dev/fd0 /dev/fd0
    #rdev -R /dev/fd0 0
    #rdev -r /dev/fd0 VALUE

    在這里這個VALUE的值應為16384+ KERNEL_BLOCKS(上一步dd 命令所產生的數值)

    所以本例應為:

    #rdev -r /dev/fd0 16637
    #dd if= root system file of=/dev/fd0 bs=1k seek=KERNEL_BLOCKS

    在這里這個KERNEL_BLOCKS就是上一步dd 命令所產生的數值

    所以本例應為:dd if= Image.gz of=/dev/fd0 bs=1k seek=253

    整合完成!

      現在我們就擁有了一張可以自激活到Linux環境的軟盤。對于本例來講,想要執行AMD官方測試軟件Maxpower64,只要將Maxpower64這個可執行文件復制到 /bin目錄就可以了。我們可以在“使用BusyBox制作常用命令“這個階段來完成它.

    # cp Maxpower64 /floppy-Linux/bin

    這張軟盤會自激活到linux環境下,并顯示“#”命令提示符,我們只要執行Maxpower64就可以了。

    #/bin/Maxpower64

    如果希望系統一開機就直接執行Maxpower64,則需要在“編輯有關的 shell script”這個階段編輯rc.sysinit文件為:

    #!/bin/sh
    mount –a
    /bin/Maxpower64

    這樣軟盤引導進入linux后會直接執行Maxpower64而不再顯示“#”命令提示符。

    小結

      除了以上的方法,我們也可以通過引導器給內核傳遞參數來實現內核和根文件系統分別放置在不同的軟盤上,這樣內核就可以再大一些,支持的功能也就越多??傊谱饕粡埌⌒蚻inux的軟盤并不困難,關鍵是要細心和耐心,此外最好能夠了解BusyBox和RAMDISK的工作原理,這對于更好的完善系統是有很大幫助的。


    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>