日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]把Linux放進(jìn)軟盤里筆者的同事最近在測(cè)試AMD 64bit CPU時(shí),遇到這樣一個(gè)問(wèn)題:當(dāng)插入含有AMD官方軟件Maxpower64的軟盤后,系統(tǒng)提示不能引導(dǎo)。關(guān)于這個(gè)軟件AMD公司提供的信息

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

筆者的同事最近在測(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/Linux,RH9的路徑是在/usr/src/Linux-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)的源碼樹(shù))

#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)行壓縮,下面我們就著手壓縮它。[!--empirenews.page--]

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

一般我們會(huì)采取 RAM Disk 的方式實(shí)現(xiàn)。簡(jiǎn)單的來(lái)說(shuō)就是將準(zhǔn)備好的根文件系壓縮成為Ramdisk的鏡像文件,當(dāng)用軟盤啟動(dòng)時(shí),再把鏡像文件解壓到內(nèi)存中,形成一個(gè)虛擬盤(RAMDISK),通過(guò)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-Linux /mnt

# umount /mnt

# losetup -d /dev/loop0

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

# rm -f /tmp/tmp_loop

# sync

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

目前為止我們已經(jīng)有了內(nèi)核和壓縮過(guò)的根文件系統(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 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引導(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 ,請(qǐng)記得它,這個(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)境的軟盤。對(duì)于本例來(lái)講,想要執(zhí)行AMD官方測(cè)試軟件Maxpower64,只要將Maxpower64這個(gè)可執(zhí)行文件復(fù)制到 /bin目錄就可以了。我們可以在“使用BusyBox制作常用命令“這個(gè)階段來(lái)完成它.

# cp Maxpower64 /floppy-Linux/bin

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

#/bin/Maxpower64

如果希望系統(tǒng)一開(kāi)機(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é)

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉