從EPROM引導Linux(轉)
從EPROM引導Linux(轉)[@more@]本文簡要介紹從486單板機的EPROM引導Linux。提供了一種在無硬碟的嵌入式系統上執行Linux的方法。我們要介紹的應用程式是一個顯示器上的Operator Interface,它的顯示系統是由Boeing Flight Test開發的。飛行環境需要一種可以防止突然性的電源中斷的機制。為了滿足這樣的要求,我們決定在無硬碟的系統上實現Operator Interface。
概況
基本的問題包括從EPROM的SSD(solid state disk)引導,將root檔案系統從EPROM複製至一個RAM disk,從客戶機載入Operator Interface軟體並且執行它。本文主要討論系統工作機制的細節以及它所使用的開發技巧。
我們所選用的硬體為一臺擁有16M RAM、一個能夠容納4M
EPROM的PC104 SSD和其他一些PC104板的基於VME的單板機。它的BIOS支援SSD的使用。系統使用一個可程式設計的鍵盤和一塊標準的VGA顯示卡。
系統操作
引導時我們需要考慮兩個選項:
* 在DOS下使用loadlin(可以加在Autoexec.bat檔案中)引導Linux
* 安裝LILO直接引導Linux
第二種選項的好處是引導所用的時間較小。我們採用第一種方案,因為我們使用一個可程式設計的鍵盤——在DOS執行為鍵盤程式設計的軟體。
為了使系統工作,我們需要kernel-hacking。Ramdisk.c程式碼被改成可以從任意的塊裝置載入而不僅僅是從軟盤。另外,我們寫一個從EPROM裝置的新的塊裝置驅動程式。
實現EPROM裝置驅動程式的第一種思想是在EPROM中生成一
個磁碟映像。這會為我們提供一個同EPROM相同大小的RAM disk,在這種情況下大小為3.5M(SSD的DOS分割槽佔1/2M)。為了得到一個大的RAM disk,我們使用一個壓縮的磁碟映像。壓縮的思想很簡單,相同的扇區之存貯一次。這樣的好處是磁碟映像的空白區域不佔用EPROM空間。
為了自動執行Operator interface程式,我們需要一個程式來替代getty。
這個程式(dboot.c)應該執行登入程式,可以為指定的虛擬終端設定stdin,stdou和stderr。
引導的過程是這樣的:
l 加電後進行記憶體檢測
l 載入執行AUTOEXEC.BAT的DOS
l 執行鍵盤應用程式
l 執行LOADLIN——從DOS分割槽中讀取Linux核心執行
l 由linux核心接管系統
l 從EPROM中載入RAM disk
l 轉換root檔案系統到RAM disk
l init讀取inittab,注意inittab執行dboot 而不是getty
l 啟動Operator interface
開發
下一階段的任務是將EPROM的磁碟內容組織在一起。我們使
用如下分割槽的輔助盤來完成這項任務:
* /dev/hda1 – 80M linux system
* /dev/hda2 - 6M EPROM
* /dev/hda3 - 20M DOS分割槽
* 使用Lilo引導
直接對EPROM進行程式設計時很費時間的事。所以,我們大部分
的開發使用輻助盤來進行。
磁碟映像的開發首先確定需求。首先完成一個最小的系統,然後再將operator interface所需的專案加到系統中。由於我不是Unix專家,所以這個最小系統的完成是個試驗、糾錯的過程。我不斷的試驗,直到系統正常執行。
下一步將Linux分割槽的內容複製到6M分割槽中,然後在DOS下進行如下操作:
loadlin zimage root=/dev/hda2 ro
如果系統穩定,則將6M分割槽載入到RAM disk。這同從EPROM中載入是相似的。為了避免對EPROM程式設計而測試系統,在DOS下進行如下操作:
loadlin zimage root=/dev/hda2 ramdisk=6144 ro
因為對ramdisk.c進行了修改,/dev/hda2磁碟映像被載入到RAM中,然後root分割槽轉換為RAM disk。我們需要不斷地修改disk image直到它正常工作為止。
對EPROMs程式設計
首先使用tar將小的disk image打包,然後解壓縮到一個乾淨的檔案系統。
為了打包disk image。我們從Linux引導,然後載入6M分割槽。不要對proc檔案系統執行tar命令。我們使用以下的命令:
mount –t ext2 /dev/hda2 /mnt
cd /mnt
tar –cpf /tmp/eprom.tar *
為了生成disk image,我使用另一擁有6M RAM disk的計算機和如下的命令列:
dd if=/dev/zero of=/dev/ram count=12288
mke2fs /dev/ram 6144
mount –t ext2 /dev/ram /mnt
cd /mnt
tar –xpf ~/eprom.tar
dd if=/dev/ram of=~/eprom.dsk count=12288
這生成一個eprom.dsk檔案,我們使用med.c程式將disk image(eprom.dsk)寫入EPROMs(即對EPROMs程式設計)。
Med ~/eprom.dsk ~/eprom.img
然後EPROM程式設計師將EPROM image刻入EPROM中。
DOS boot SSD
SBC的SSD功能幫助我們構建disk image。DOS SSD disk最少需要如下的檔案:DOS引導檔案,command.com,autoexec.bat,鍵盤載入程式,loadlin與zImage。
結論
輔助盤上的開發工作量很大,我們需要採取措施來減少工作量。EPROM disk在我們的應用程式中工作的很好。
概況
基本的問題包括從EPROM的SSD(solid state disk)引導,將root檔案系統從EPROM複製至一個RAM disk,從客戶機載入Operator Interface軟體並且執行它。本文主要討論系統工作機制的細節以及它所使用的開發技巧。
我們所選用的硬體為一臺擁有16M RAM、一個能夠容納4M
EPROM的PC104 SSD和其他一些PC104板的基於VME的單板機。它的BIOS支援SSD的使用。系統使用一個可程式設計的鍵盤和一塊標準的VGA顯示卡。
系統操作
引導時我們需要考慮兩個選項:
* 在DOS下使用loadlin(可以加在Autoexec.bat檔案中)引導Linux
* 安裝LILO直接引導Linux
第二種選項的好處是引導所用的時間較小。我們採用第一種方案,因為我們使用一個可程式設計的鍵盤——在DOS執行為鍵盤程式設計的軟體。
為了使系統工作,我們需要kernel-hacking。Ramdisk.c程式碼被改成可以從任意的塊裝置載入而不僅僅是從軟盤。另外,我們寫一個從EPROM裝置的新的塊裝置驅動程式。
實現EPROM裝置驅動程式的第一種思想是在EPROM中生成一
個磁碟映像。這會為我們提供一個同EPROM相同大小的RAM disk,在這種情況下大小為3.5M(SSD的DOS分割槽佔1/2M)。為了得到一個大的RAM disk,我們使用一個壓縮的磁碟映像。壓縮的思想很簡單,相同的扇區之存貯一次。這樣的好處是磁碟映像的空白區域不佔用EPROM空間。
為了自動執行Operator interface程式,我們需要一個程式來替代getty。
這個程式(dboot.c)應該執行登入程式,可以為指定的虛擬終端設定stdin,stdou和stderr。
引導的過程是這樣的:
l 加電後進行記憶體檢測
l 載入執行AUTOEXEC.BAT的DOS
l 執行鍵盤應用程式
l 執行LOADLIN——從DOS分割槽中讀取Linux核心執行
l 由linux核心接管系統
l 從EPROM中載入RAM disk
l 轉換root檔案系統到RAM disk
l init讀取inittab,注意inittab執行dboot 而不是getty
l 啟動Operator interface
開發
下一階段的任務是將EPROM的磁碟內容組織在一起。我們使
用如下分割槽的輔助盤來完成這項任務:
* /dev/hda1 – 80M linux system
* /dev/hda2 - 6M EPROM
* /dev/hda3 - 20M DOS分割槽
* 使用Lilo引導
直接對EPROM進行程式設計時很費時間的事。所以,我們大部分
的開發使用輻助盤來進行。
磁碟映像的開發首先確定需求。首先完成一個最小的系統,然後再將operator interface所需的專案加到系統中。由於我不是Unix專家,所以這個最小系統的完成是個試驗、糾錯的過程。我不斷的試驗,直到系統正常執行。
下一步將Linux分割槽的內容複製到6M分割槽中,然後在DOS下進行如下操作:
loadlin zimage root=/dev/hda2 ro
如果系統穩定,則將6M分割槽載入到RAM disk。這同從EPROM中載入是相似的。為了避免對EPROM程式設計而測試系統,在DOS下進行如下操作:
loadlin zimage root=/dev/hda2 ramdisk=6144 ro
因為對ramdisk.c進行了修改,/dev/hda2磁碟映像被載入到RAM中,然後root分割槽轉換為RAM disk。我們需要不斷地修改disk image直到它正常工作為止。
對EPROMs程式設計
首先使用tar將小的disk image打包,然後解壓縮到一個乾淨的檔案系統。
為了打包disk image。我們從Linux引導,然後載入6M分割槽。不要對proc檔案系統執行tar命令。我們使用以下的命令:
mount –t ext2 /dev/hda2 /mnt
cd /mnt
tar –cpf /tmp/eprom.tar *
為了生成disk image,我使用另一擁有6M RAM disk的計算機和如下的命令列:
dd if=/dev/zero of=/dev/ram count=12288
mke2fs /dev/ram 6144
mount –t ext2 /dev/ram /mnt
cd /mnt
tar –xpf ~/eprom.tar
dd if=/dev/ram of=~/eprom.dsk count=12288
這生成一個eprom.dsk檔案,我們使用med.c程式將disk image(eprom.dsk)寫入EPROMs(即對EPROMs程式設計)。
Med ~/eprom.dsk ~/eprom.img
然後EPROM程式設計師將EPROM image刻入EPROM中。
DOS boot SSD
SBC的SSD功能幫助我們構建disk image。DOS SSD disk最少需要如下的檔案:DOS引導檔案,command.com,autoexec.bat,鍵盤載入程式,loadlin與zImage。
結論
輔助盤上的開發工作量很大,我們需要採取措施來減少工作量。EPROM disk在我們的應用程式中工作的很好。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-947536/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 加快Linux的引導(轉)Linux
- windows引導BSD和linux(轉)WindowsLinux
- LINUX的引導過程 (轉)Linux
- 求助 windows下引導linux(轉)WindowsLinux
- Linux引導過程和GRUB引導器Linux
- 在Linux中做系統引導盤(轉)Linux
- 新手問題,關於LINUX的引導!(轉)Linux
- linux引導和服務Linux
- Linux 管理員手冊(5)--引導和關機(轉)Linux
- 引導系統-MBR(轉)
- Ubuntu/Linux入門介紹-引導管理器Grub(轉)UbuntuLinux
- 玩轉grub的開機引導(轉)
- 建立多重引導系統(轉)
- Linux 引導過程內幕Linux
- Linux與Windows雙引導風險LinuxWindows
- windows,linux雙系統引導WindowsLinux
- 轉載分享:淺談引導盤
- Linux命令Man解釋:lilo :安裝引導裝載程式(轉)Linux
- Linux引導載入程式之爭:瞭解 LILO 和 GRUB(轉)Linux
- Linux 開機引導和啟動Linux
- linux無法引導 rescue 救援模式Linux模式
- 已有一個LINUX系統用GRUB引導硬碟安裝紅旗(轉)Linux硬碟
- 透過GRUB(包括WINGRUB)命令列模式引導Linux的安裝(轉)命令列模式Linux
- 在單個硬碟驅動器上構建雙引導Linux系統(轉)硬碟Linux
- 雙硬碟多系統引導深入探究(轉)硬碟
- 在Linux上建立Windows 10可引導USBLinuxWindows
- Linux的引導過程與服務控制Linux
- 多作業系統引導管理工具 多系統引導工具——Smart Fdisk linux win2000 win2k sfdisk (轉)作業系統Linux
- 從物件導向到模式再到真正的物件導向 (轉)物件模式
- 領導力:從個人到團隊(轉)
- 系統安裝引導盤的製作(轉)
- Linux 修改核心啟動預設引導順序Linux
- 【Linux】grub命令列引導進入windows系統Linux命令列Windows
- Linux要從“根源”抓起(轉)Linux
- 從硬碟安裝LINUX(轉)硬碟Linux
- LINUX下fstab引數詳解(轉)Linux
- iOS引導頁iOS
- 雙硬碟grub引導9個作業系統(轉)硬碟作業系統