新聞中心

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

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

        壓縮根文件系統(tǒng)

        一般我們會(huì)采取 RAM Disk 的方式實(shí)現(xiàn)。簡單的來說就是將準(zhǔn)備好的根文件系壓縮成為Ramdisk的鏡像文件,當(dāng)用軟盤啟動(dòng)時(shí),再把鏡像文件解壓到內(nèi)存中,形成一個(gè)虛擬盤(RAMDISK),通過RAMDISK控制系統(tǒng)啟動(dòng)。

        我們現(xiàn)在制作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- /mnt

        # umount /mnt

        # losetup -d /dev/loop0

        # dd if=/tmp/tmp_loop | gzip -9 > /tmp/Image.gz

        # rm -f /tmp/tmp_loop

        # sync

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

        目前為止我們已經(jīng)有了內(nèi)核和壓縮過的根文件系統(tǒng).現(xiàn)在剩下的就是把它們整合在一張軟盤里面。

        整合核心和根文件系統(tǒng)

        根據(jù)引導(dǎo)的方式不同,有以下三種整合方案:

        用grub引導(dǎo)

        依次執(zhí)行:

        # 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, 內(nèi)容如下:

        timeout 10

        default 0

        title My little

        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

        整合完成!

        用sys引導(dǎo)

        依次執(zhí)行:

        # mkdosfs /dev/fd0

        # sysLinux /dev/fd0

        編輯 sysLinux 的組態(tài)檔 sysLinux.cfg,內(nèi)容如下

        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

        整合完成!

        直接引導(dǎo)

        依次執(zhí)行:

        # dd if=newkernel of=/dev/fd0 bs=1k

        252+1 records in

        252+1 records out

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

        #rdev /dev/fd0 /dev/fd0

        #rdev -R /dev/fd0 0

        #rdev -r /dev/fd0 VALUE

        在這里這個(gè)VALUE的值應(yīng)為16384+ KERNEL_BLOCKS(上一步dd 命令所產(chǎn)生的數(shù)值)

        所以本例應(yīng)為:

        #rdev -r /dev/fd0 16637

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

        在這里這個(gè)KERNEL_BLOCKS就是上一步dd 命令所產(chǎn)生的數(shù)值

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

        整合完成!

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

        # cp Maxpower64 /floppy-Linux/bin

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

        #/bin/Maxpower64

        如果希望系統(tǒng)一開機(jī)就直接執(zhí)行Maxpower64,則需要在“編輯有關(guān)的 shell script”這個(gè)階段編輯rc.sysinit文件為:

        #!/bin/sh

        mount –a

        /bin/Maxpower64

        這樣軟盤引導(dǎo)進(jìn)入linux后會(huì)直接執(zhí)行Maxpower64而不再顯示“#”命令提示符。

        小結(jié)

        除了以上的方法,我們也可以通過引導(dǎo)器給內(nèi)核傳遞參數(shù)來實(shí)現(xiàn)內(nèi)核和根文件系統(tǒng)分別放置在不同的軟盤上,這樣內(nèi)核就可以再大一些,支持的功能也就越多。總之制作一張包含小型linux的軟盤并不困難,關(guān)鍵是要細(xì)心和耐心,此外最好能夠了解BusyBox和RAMDISK的工作原理,這對于更好的完善系統(tǒng)是有很大幫助的。


        上一頁 1 2 下一頁

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

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 客服| 马公市| 泰兴市| 钟山县| 舞钢市| 观塘区| 中山市| 永寿县| 绥棱县| 韶关市| 绥宁县| 鹤峰县| 新丰县| 清新县| 云梦县| 获嘉县| 武义县| 平阳县| 通化县| 尼勒克县| 故城县| 德钦县| 延边| 光山县| 白城市| 龙里县| 龙井市| 肃南| 景德镇市| 邹平县| 黄龙县| 闻喜县| 皋兰县| 建昌县| 电白县| 化州市| 景洪市| 墨竹工卡县| 天峨县| 平昌县| 和硕县|