国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

從EPROM引導Linux

2024-07-21 02:37:47
字體:
來源:轉載
供稿:網友

  本文簡要介紹從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在我們的應用程序中工作的很好。

上一篇:TCP/IP遠程訪問操作

下一篇:如何使用UUCP

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兖州市| 法库县| 靖宇县| 黎川县| 长岛县| 绥滨县| 德阳市| 宁化县| 阿克| 全州县| 同心县| 通州区| 墨江| 达尔| 年辖:市辖区| 鄄城县| 江永县| 罗田县| 二连浩特市| 小金县| 饶河县| 茶陵县| 怀仁县| 渝中区| 台南市| 亳州市| 澄城县| 商都县| 南召县| 汨罗市| 南江县| 西城区| 乌兰县| 西华县| 白水县| 朝阳区| 陇南市| 高安市| 泗水县| 镇江市| 明星|