跳轉至內容

Oberon/ETH Oberon/betadocu

來自華夏公益教科書

此文件最初託管在ETHZ。它仍然在ETH 許可證下,並且在WayBack 存檔中。

ETH Oberon / PC Native alpha 和 beta 版本簡介
透過匿名 FTP 下載:ftp://ftp.ethoberon.ethz.ch/ETHOberon/Native/Update/[1]

介紹
檔案系統概念
Oberon 檔案系統的比較
beta 版本中的檔案系統
使用 Oberon 進行分割槽管理
磁碟映像檔案
基於 Linux 的 Oberon 看到的分割槽
Oberon 檔案系統和外來檔案系統
一臺機器上的多個 Oberon 分割槽
Oberon 安裝和安裝更新
配置字串
啟動時重新配置 Oberon
備份/恢復方法
存檔
beta 版本特色
參考文獻

介紹

隨著 PC Native Oberon 系統新版本的推出,本檔案正在不斷修訂。目的是詳細說明一些重要的內容,這些內容有助於克服新使用者可能遇到的安裝問題,並解釋此作業系統如何與其他作業系統共存。歡迎隨時提供意見。安裝過程包括在啟動 Oberon-0 啟動軟盤後執行的幾個互動步驟,此處無需詳細說明。這裡介紹的許多 Oberon 命令在 Oberon 安裝過程中都有效使用,但掌握所有操作工具並非進行成功安裝的必要條件。安裝過程僅使用了這裡所述內容的一個小部分。

注意 1:第一個 beta 版本於 2000 年 3 月 20 日釋出,並在 2000 年 4 月 25 日、2000 年 5 月 26 日和 2000 年 12 月 8 日進行了更新。此外,一個 alpha 版本(包括一些更改和擴充套件)於 2001 年 5 月 13 日釋出,並且此後一直在定期更新。相應的beta 版本alpha 版本變更日誌包含對迄今為止所做修改的詳細時間順序說明。本文件重點介紹 alpha 版本,而 beta 版本的特色則在單獨的部分中進行說明。使用 beta 版本的讀者會注意到一些重大差異,但也會提前瞭解 alpha 版本將帶來的內容,如果他們想從當前的 beta 版本升級到 alpha 版本。

注意 2:要確定您當前使用的是哪個版本,請檢視啟動系統後日志中第二行上的日期。如果您的機器上有其他 Oberon 分割槽(型別 76),並且已安裝 Oberon 作業系統,請在 Kernel.Obj 中查詢日期。

如果您還有其他問題,請閱讀專門針對此 alpha/beta 版本的常見問題解答。要了解您的機器是否可以執行 Native Oberon,請參閱硬體相容性列表

此版本的 ETH Native Oberon 引入了新的檔案系統概念、新的通用驅動程式概念、許多新功能以及對先前版本的眾多改進和修正。

檔案系統概念

新的分割槽管理適用於各種型別的海量儲存裝置:硬碟、帶可移動介質的儲存裝置(如軟盤、ZIP 磁碟和 CD-ROM 等)。這並不適用於連線到並行埠的 ZIP 驅動器。大多數海量儲存裝置可以容納多個分割槽,ZIP 磁碟原則上也可以,但軟盤除外。Oberon 可以提供有關計算機系統中所有現有分割槽和可用空間的豐富資訊。所有裝置都將在顯示的資訊中以通用名稱“磁碟”出現,如以下簡短示例所示

Disk: IDE0, 8063MB = 16514064 * 512, CHS: 16383*16*63, Maxtor 90845D4, mntcnt=1 
IDE0#00          0  16514064  8063MB --- (Whole disk) 
IDE0#01         63    819252   400MB   6 * DOS FAT16 >= 32M 
IDE0#02     819315   4176900  2039MB   6 DOS FAT16 >= 32M 
... 
 
 
Disk: Diskette0, 1440KB = 2880 * 512, removable, CHS: 80*2*18, mntcnt=1 
Diskette0#00          0      2880   1.4MB --- (Whole disk) [mounted]

每個分割槽都可以容納一個檔案系統,其中包含多個作業系統。憑藉其新的通用檔案系統支援,活動 Oberon 可以訪問託管受支援檔案系統 (FS) 的共駐分割槽的的資料。受支援的檔案系統列在 Oberon.Text 的OFS.Alias部分中。它們是

  • AosFS - Oberon alpha/beta 版本的 (新) FS
  • NatFS - 早期版本中使用的 PC Native Oberon FS;最後一個版本是 2.3.6 版。名稱源於“Native File System”。
  • RamFS - 駐留在主儲存器中的 Oberon 內部 RAM FS,因此位於裝置/分割槽層次結構之外,並且不應格式化。它作為使用者方便地用於儲存在 Oberon 終止時將被清除的臨時資料。
  • FatFS - DOS 和 Windows FAT FS;即 FAT12、FAT16 和 FAT32。透過對各種經典 FS 的支援,可以在這些 FS 和 Oberon 之間交換檔案,並直接訪問和操作這些檔案,相當於在 Oberon 中執行 Windows 任務。支援長檔名。使用引號指定包含空格或 Oberon 名稱中無效字元的檔名。

注意:與往常一樣,在測試新的 FS 實現之前,請確保您不會損壞關鍵的 FAT 分割槽。與 FAT 格式的軟盤交換檔案更安全。

這些檔案系統在執行時執行匿名檔案垃圾收集。以前,只有在 Oberon 啟動時才會執行檔案 GC。

  • FileFS - 託管在 FatFS 中的 Oberon 的 FS。為那些不想建立分割槽來專門嘗試 Oberon 系統的使用者提供了在 FatFS 檔案中安裝“Oberon”的可能性。一個很好的例子是隨《"初學者程式設計手冊,第二版"》附帶的 CD-ROM 上包含的"Oberon for Dummies"。在 Native Oberon 的早期,這被稱為“DOSBased Native Oberon”。安裝在專用分割槽中的 Oberon 系統可以訪問檔案中的另一個 Oberon。
  • ISOFS - 在 CD-ROM 上找到的 ISO 9660 FS
  • LinuxFS - Linux FS。此 FS 只能從基於 Linux 的 Oberon 訪問

透過使用稍後描述的OFSTools.Mount命令掛載檔案系統來訪問檔案系統。檔案系統在命令引數中宣告的檔案系統必須與分割槽中駐留的檔案系統匹配。

每個檔案系統都以多種狀態為特徵

  • Boot:FS 在啟動時自動掛載。狀態由OFSTools.WatchPartitions.Show detail揭示
  • Removable:FS 託管在可移動磁碟上。狀態由Partitions.Show揭示
  • ReadOnly:FS 僅允許讀取訪問。由OFSTools.Mount命令控制。狀態由OFSTools.Watch揭示

AosFS 檔名中的大小寫敏感性與 Oberon 語言中的大小寫敏感性一致。最大檔案大小現在為 2 GB,最大卷和分割槽大小已增加到 282 GB。

[頂部]

Oberon 檔案系統的比較

Oberon 檔案系統自其誕生以來僅略有演變,以下表格中的數字基本上反映了朝更大容量介質(海量儲存裝置和 RAM)發展的趨勢。所提供的資訊摘自“Project Oberon”(第 7 章)[WG92],並針對從源模組獲得準確數字的兩個 Native Oberon 檔案系統進行了調整。我們將 Project Oberon 檔案系統稱為 CeresFS。

在隨機存取儲存器上實現檔案

Oberon 中選擇的方案有利於短檔案 (< 64KB),但為了保持磁碟上的結構小巧,同時仍然允許大檔案,每個檔案頭都符合以下模式

  • NatFS 和 CeresFS 包含一個包含 64 個直接條目的扇區表,每個條目指向一個數據扇區,以及一個包含 12 個單級間接條目的擴充套件表,每個條目指向一個直接資料扇區指標索引扇區。
  • AosFS 使用包含 128 個直接條目的扇區表,每個條目指向一個數據扇區,以及一個雙級間接條目,指向一個包含 1'024 個索引扇區的列表,總共提供 1'024 ^ 2 個索引條目。
    FS    Sector Sector Extens.  Index   Header     Max. file 
            size  table  table    size     size          size 
          (bytes)  size   size           (bytes)      (bytes) 
  AosFS    4'096    128     1  1'048'576    568  4'295'491'016 
  NatFS    2'048     64    12        512    352     12'713'632 
  CeresFS  1'024     64    12        256    352      3'210'912

第一個資料扇區指標指向自身,即包含頭的扇區。磁碟上的結構類似於 Unix 檔案的內部組織 [Bac86]。

扇區指標由型別為 LONGINT 的扇區號表示。實際上,這些數字乘以 29,即扇區因子。這意味著任何單位元錯誤都會導致一個不是 29 的倍數的數字,因此可以很容易地檢測到。Scavenger 程式利用了這一點。

檔案目錄

Oberon 系統在其檔案目錄中使用以下特徵的 B 樹結構

  1. 在階數為 N 的 B 樹中,每個節點(稱為)包含 m 個元素(對),其中 N <= m <= 2N,根節點除外,根節點中 0 <= m <= 2N。
  2. 包含 m 個元素的頁要麼有 0 個後代,在這種情況下它被稱為葉節點,要麼有 m+1 個後代。
  3. 所有葉節點都在同一(底部)層級上。

在一個頁中,必須為 2N 個元素和 N + 1 個指向後代的引用預留空間。因此,N 由頁的大小和元素的大小直接決定。在 Oberon 的情況下,名稱限制為 32 個字元(位元組),而物件是對相關檔案的引用(4 個位元組)。每個後代指標佔用 4 個位元組,頁的大小由扇區大小 (SZ) 減去儲存 m 所需的位元組數(2 個位元組)給出。因此 N = ((SZ - 2 - 4) DIV (32 + 4 + 4)) DIV 2

     FS       SZ     N   DirPgSize 
   AosFS     4096   51      102 
   NatFS     2048   25       50 
   CeresFS   1024   12       24

儲存在樹中的目錄條目數量取決於樹的高度。最大數量由以下表達式給出:MaxElems = 2*N * SUM(i:=0..Height-1, (2*N+1)^i)

           Height   1        2         3         4 
     FS 
   AosFS          102    10'608 1'092'726  2.145 E+09 
   NatFS           50     2'600   132'650   6'765'200 
   CeresFS         24       624    15'624     390'624

在目錄頁內,使用元素的二進位制搜尋(一個頁中包含 N 到 2*N 個元素)。因此,假設 AosFS 中有超過 10608 個檔案,樹的高度將為 3(最壞情況下訪問 3 個目錄頁),並且需要最大 3 * 2LOG(102) = 20 次比較(與磁碟訪問時間相比,這是很小的)。除此之外,快取可以使訪問速度更快(通常檔案目錄的根頁保留在快取中)。

AosFS 限制值

由於其三級索引結構,最大檔案大小為 4.0GB,但由於 Set 和 Pos 引數的 31 位值,其有效地限制為 2.0GB。

最大卷大小或分割槽大小為 282.48 GB,因為 BIOS 強加了限制:1'024 個柱面 * 256 個磁頭 * 63 個扇區 = 16'515'072 個物理扇區除以扇區因子 (29),得出 569485 個 512 位元組的物理扇區。

用於完整系統的典型可工作 Oberon 分割槽從大約 40MB 開始。參見 ShowAosFSLimits

[頂部]

beta 版本中的檔案系統

使用 2000 年 12 月 8 日或更早版本的 beta 版本的使用者必須注意,某些 FS 的特徵有所不同,並且在這些 FS 中執行檔案操作的方式也不同。可以想象,前面部分中描述的 alpha 版本的 FS 更加通用,這應該會促使使用者升級到 alpha 版本(最終將成為下一個 beta 版本)。

  • DosBasedFS - 在檔案(FAT16 分割槽中的檔案)中執行的 Oberon 的檔案系統。在缺失一段時間後,在 Beta001208 版本中重新引入了將 Oberon 安裝到現有 FAT 分割槽的大型檔案中的功能。在 Alpha 版本中不再需要。
  • FileFS - 將複製到 Oberon(從其 FAT16 分割槽)中的 Oberon 檔案的檔案系統。在 DosBasedFS 缺失的情況下(在 2000 年 12 月 8 日之前的 Beta 版本中),此功能被引入作為一種權宜之計。在 Beta 版本中,其重要性有限。

[頂部]

使用 Oberon 進行分割槽管理

Partitions 模組提供了一套相當完整的分割槽管理功能,因此可以使用現有的 Oberon 系統安裝更新的版本,無需其他作業系統的幫助。大多數針對分割槽的命令可以作用於任意型別的分割槽。一些命令僅對 Oberon 分割槽起作用:Format、UpdateBootFile、GetConfig、SetConfig。

分割槽用 "dev#part" 表示,其中 dev 是物理裝置識別符號,例如 IDE0、IDE1、Diskette0(用於 A 盤)或 Diskette1(用於 B 盤),part 是裝置上分割槽的序號。Oberon 從位於裝置前幾個扇區的分割槽表中收集分割槽資訊。透過執行 Partitions.Show 可以顯示磁碟分割槽的摘要。

Partitions.Show ["detail"] ~

顯示所有安裝了驅動程式的儲存裝置(包括硬碟和具有可移動介質的儲存裝置,如軟盤、ZIP 磁碟和 CD-ROM)的分割槽摘要。預設情況下,顯示的資訊量最少,但如果指定了引數 detail,則會新增詳細資訊。還將顯示可用空間量,以便與 Partitions.Create 一起使用。
示例 Partitions.Show detail ~
    Disk: IDE0, 8063MB = 16514064 * 512, CHS: 16383*16*63, Maxtor 90845D4, mntcnt=1 
    IDE0#00          0  16514064  8063MB --- (Whole disk) 
    IDE0#01         63    819252   400MB   6 * DOS FAT16 >= 32M 
    IDE0#02     819315   4176900  2039MB   6 DOS FAT16 >= 32M 
    IDE0#03    4996215    401625   196MB  79 Native Oberon or QNX Posix 
    IDE0#04    5397840  11036655  5388MB   5 Extended 
    IDE0#05    5397903    401562   196MB  76 |Native Oberon, Aos [mounted] 
    IDE0#06    5799528   2056257  1004MB 131 |Linux fs 
    ... 

     
    Disk: Diskette0, 1440KB = 2880 * 512, removable, CHS: 80*2*18, mntcnt=1 
    Diskette0#00          0      2880   1.4MB --- (Whole disk) [mounted]
第一行描述了磁碟
型別(IDE、SCSI、Diskette、...)和在控制器上的位置,例如 SCSI0.0
以 MB 為單位的大小
CHS 後面是柱面 * 磁頭 * 扇區的數量。對於使用 LBA 的驅動器,報告將為 "CHS: unsupported"。大多數 ATASCSI 驅動器使用 LBA。某些 ATA 驅動器支援兩種定址方式。
製造商和型號
掛載次數 mntcnt
在本例中,分割槽 0 是一個虛擬分割槽,跨越整個磁碟。沒有分割槽表的裝置,如軟盤或 CD,只有一個分割槽 0。第一個軟盤驅動器的磁碟名為 "Diskette0",分割槽的名稱為 "Diskette0#00"。原則上,ZIP 磁碟可以有多個分割槽,因為它可以包含分割槽表。
每行後續資訊介紹了分割槽或可用空間的位置、大小和型別。這些資料(對於一部分資料而言)是從位於 MBR 中的分割槽表中提取的。
每個分割槽都被分配了一個分割槽型別(見示例中的第 5 列),它標識了分割槽中包含的檔案系統。ETH Native Oberon 的分割槽型別為 "76"(十進位制)(包含新 AosFS 的分割槽)。一臺機器上可能存在多個分割槽型別為 "76" 的分割槽。對於以前使用的 Native Oberon 來說,情況並非如此,它使用分割槽型別 "79" 和不同的其他值用於其他分割槽。那裡使用的檔案系統名為 "NatFS"。
活動分割槽(見 Partitions.Activate),用 "*" 標記。
根據安裝的硬體,分割槽表會在明顯的延時後顯示。作為指示,掃描和收集 ATA/IDE 裝置的資訊可能需要長達 10 秒的時間。這種延遲在老式計算機上非常明顯。

Partitions.ChangeType dev#part from to ~

將指定分割槽的分割槽型別從當前型別(例如,DOS 分割槽的 "6")更改為新型別(例如,AosFS 的 "76")。之後,必須使用 Partitions.Format 建立檔案系統。在使用其他作業系統建立分割槽後或重新使用現有空閒分割槽時使用。
請注意,更改分割槽型別會使其無法被其他作業系統訪問!如果您意外更改了錯誤分割槽的型別,您可以隨時將其改回,前提是在此期間您沒有對其進行其他更改。

Partitions.Format dev#part [ AosFS | NatFS [ FSRes [ BootFile]]] ~
Partitions.Format ^

在指定分割槽上寫入一個空檔案系統,會銷燬任何其他現有的檔案系統。但是,如果檢測到 Oberon 檔案系統並且系統在 SAFE 模式下執行,則該命令將中止併發出警告。執行 Partitions.Unsafe ~(它會出現在系統日誌中)以授權格式化。第二個引數是將用於該分割槽的檔案系統型別。預設情況下使用 AosFS,這使第二個命令形式合法。分割槽必須在格式化後才能掛載。
BootFile 是 Aos 的“核心”。該檔案包含活動物件執行時基本模組、動態模組載入器、至少一個檔案系統和至少一個磁碟驅動器的靜態連結映像。這使得分割槽可引導。預設情況下,BootFile 為 "Native.Bin"。FSRes 是為承載資料而必須保留的空間量。預設情況下,保留 512 KB。稍後,在建立分割槽後,如果必須更新引導載入程式而無需格式化分割槽,則必須使用命令 Partitions.UpdateBootFile。目前,Native.Bin 缺失,並且會發出警告資訊,表明該分割槽不可引導。使用 Oberon0 軟盤啟動機器,執行部分安裝或安裝更新以訪問 Native.Bin。
如果軟盤僅用作備份介質,則將 FSRes 設定為 1(0 將不被接受),因為預設值會佔用大部分可用空間。
Partitions.Check 命令會隱式執行。如果之前檢查過該分割槽,則可以透過按空格鍵安全地中斷檢查過程。這將加快格式化操作的速度。

Partitions.Safe ~
Partitions.Unsafe ~

Partitions.UnSafe 啟用不安全命令並在 System.Log 中發出警告 "Now in UNSAFE mode!"。Partitions.Safe 停用不安全命令。Partitions.Format 不安全。預設情況下停用不安全命令。

Partitions.UpdateBootFile dev#part [ BootFile ] ~

更新現有 Oberon 分割槽中的引導載入程式。如果您在同一分割槽中重新安裝 Oberon,或者使用許多可用的商業工具之一移動分割槽,或者升級現有分割槽,則需要執行此操作。預設情況下,BootFile 為 "Native.Bin"。

Partitions.Check dev#part
Partitions.Check ^

檢查指定分割槽的扇區(任何型別)的可讀性,並在 System.Log 中報告結果。此長時間執行的命令可以透過按空格鍵安全地中斷。

Partitions.GetConfig dev#part ~
Partitions.GetConfig ^
Partitions.SetConfig dev#part { str = "val" } ~

GetConfig 的執行將在 System.Log 中顯示一個有效的、可執行的 Partitions.SetConfig 命令,該命令枚舉了為指定 Oberon 分割槽定義的所有配置字串,前提是該分割槽可引導。如果需要,可以立即在日誌中編輯配置,並透過啟用該命令將其寫回磁碟(或軟盤)。幾乎不需要從頭構建 SetConfig 命令。引數太多,無法詳細說明。資訊的量將取決於使用的版本,因為它在不斷改進和擴充套件。顯然,這些命令只能作用於 Oberon 分割槽,該分割槽可能包含配置資料。該分割槽可能從軟盤啟動,在這種情況下,可以透過執行以下命令獲得相關資訊:Partitions.GetConfig Diskette0#0 ~
配置字串 在 Oberon 由引導載入程式啟動時使用,並且可以在啟動時修改
限制:此命令只能作用於使用 512 位元組塊的裝置上的分割槽。例如,CD-ROM 使用 2'048 位元組塊,並且會導致陷阱。配置字串只能在啟動時檢查和修改。
實用提示:在 Oberon 安裝過程中,即使要建立引導軟盤,也要始終執行 Config.BootPartition menu ~。如果軟盤丟失或損壞,請快速建立一個新的軟盤,省略配置部分,然後執行 Partitions.GetConfig dev#part 後跟 Partitions.SetConfig Diskette0#0 來恢復配置。在某些情況下,可能難以確定最初選擇了哪個顯示驅動程式。
技術提示:配置資料儲存在分割槽的扇區 4 到 7 中 - 請參閱以下 Partitions.ShowBlocks 命令。

Partitions.FileToPartition dev#part filename [block blocks] ~

磁碟映像檔案塊複製到指定分割槽(任何型別)。block 是分割槽中的起始塊號(此偏移量值從 0 開始)。blocks 是要複製的塊數。執行 Partitions.Show detail 獲取後一個值。如果省略引數,則會恢復整個分割槽。強烈建議將映像檔案回滾到與原始分割槽大小相同的分割槽。
特別是,Partitions.FileToPartition Diskette0#0 Oberon0.Dsk ~ 用於在 Oberon 安裝過程中從磁碟映像檔案 Oberon0.Dsk 建立 Oberon-0 引導軟盤。
注意:在 2001 年 5 月 13 日之前的版本中,語法為:Partitions.PartitionFileTo dev#part filename [blocks] ~,這意味著:將前幾個塊寫入分割槽。

Partitions.PartitionToFile dev#part filename [block blocks] ~

將指定分割槽(任何型別)塊複製到名為 磁碟映像檔案 的檔案中,然後將其儲存以備備份。block 是分割槽中的起始塊號(此偏移量值從 0 開始)。blocks 是要複製的塊數。執行 Partitions.Show detail 獲取後一個值。如果塊為 0,負blocks 值將導致剩餘塊數(blocks - block)被複制。如果省略引數,則會儲存/備份整個分割槽。
可以透過執行 Partitions.PartitionToFile dev#0 MBR.Bin 0 1 ~ 將磁碟的 MBR 儲存到檔案(MBR.Bin)中。
注意:在 2001 年 5 月 13 日之前的版本中,語法為:Partitions.PartitionToFile dev#part filename [blocks] ~,這意味著:寫入分割槽的頭幾個塊。

Partitions.WriteMBR dev#0 filename ~

MBR 寫入指定的磁碟(小心)。MBR 資料從指定檔案讀取,程式會驗證資料末尾是否包含有效的 MBR 簽名“55 AA”。MBR 可能之前已經儲存過,例如使用 Partitions.PartitionToFile。檔案中的資料最好用 Hex.Open 檢查。
提示:此命令應被視為技術實用程式,與 Partitions.FileToPartition 配合使用。它可以與任何作業系統一起使用,並且對於例如刪除或寫入 LILO 啟動記錄很有用。此命令不等同於 Partitions.FileToPartition dev#part filename 0 1 ~ !!!
它只寫入 MBR 中的引導載入程式程式碼,即前 446 個位元組,而分割槽表保持不變。它等同於 DOS 命令 fdisk /mbr。相反,Partitions.FileToPartition 不僅寫入 MBR 中的引導載入程式,還寫入分割槽表,這可能會造成損害。
參見 如何工作 - 分割槽表.

Partitions.ShowBlocks dev#part block [blocks] ~

以十六進位制顯示任意磁碟塊,可以是任何型別的分割槽。例如,Partitions.ShowBlocks IDE1#0 0 1 ~ 顯示主 IDE 從盤上的 MBR。
使用此命令排查啟動問題
如果您的 Oberon 系統無法正常啟動,並且只是停滯並顯示“OBE”,則原生引導載入程式無法找到第二個扇區。執行:Partitions.ShowBlocks IDE0#02 0 8 ~ 寫入分割槽的前 8 個扇區。扇區 0(第一個扇區)應該在開頭附近有“OBERON”,並在末尾有 2 位元組簽名“55 AA”。扇區 1 必須在開頭有兩個 AA 55 位元組。示例
      IDE0#02 0 
      00000000 EB 29 90 4F 42 45 52 4F 4E 00 00 00 02 02 08 00 .).OBERON....... 
      00000010 04 E0 00 00 00 F0 09 00 3F 00 40 00 40 23 03 00 ........?.@.@#.. 
      00000020 C0 90 0F 00 80 00 00 03 00 00 00 FA EA 31 00 C0 .............1.. 
      ... 
      000001F0 72 72 6F 72 21 07 00 6F 62 65 72 6F 6E 00 55 AA rror!..oberon.U. 
      IDE0#02 1 
      00000000 AA 55 66 A1 1C 00 66 A3 06 07 BB 00 08 B9 04 00 .Uf...f.........
重要的是,扇區 0 中偏移量 1CH 處的四個位元組指定引導扇區的扇區號。在示例中:40 23 03 00(以小端序反轉) -> 00032340H = 205632 十進位制
最後一個值必須與執行 Partitions.Show detail ~ 後分區後出現的第一個列中的值匹配。
      IDE0#02     205632   1020096   498MB  79 Native Oberon or QNX Posix [mounted]
另一個需要檢查的是偏移量 24H 處的位元組是引導驅動器號(示例中的 80H)。對於軟盤 A:,它應該是 0,對於第一個 BIOS 磁碟驅動器,它應該是 80H,對於第二個 BIOS 磁碟驅動器,它應該是 81H,依此類推。在實踐中,這個規則比較寬鬆,因為軟體會接受 81H 或 80H。
您的配置應該從扇區 4 到 7 可見(或者如果始終透過 noboot.exe 啟動,它可能全為零)。

Partitions.Activate dev#part ~
Partitions.Activate ^
Partitions.Deactivate dev#part ~
Partitions.Deactivate ^

啟用/停用指定分割槽,無論型別如何;也就是說,設定/重置主分割槽的“活動”標記(參見分割槽表中的“分割槽條目”。在使用 Partitions.Show ~ 獲取的列表中,活動分割槽用“*”標記。當未安裝引導管理器時,第一個磁碟驅動器上的活動分割槽會自動啟動。前提是分割槽包含一個作業系統,並且對於 Oberon 來說,在安裝或之後在其中寫入了配置字串。
“活動”標記在以下情況下沒有意義
在這兩種情況下,都可以啟動任何分割槽,無論是主分割槽還是擴充套件分割槽中的邏輯驅動器。
第一個以外的磁碟驅動器上的活動分割槽:如果機器系統設定允許更改啟動順序,也可以啟動它。
多個活動分割槽:正常情況下,只允許磁碟上存在一個活動分割槽。如果存在多個活動分割槽(很容易實現),則期望在物理順序中找到的第一個分割槽會啟動,但這可能取決於 MBR 程式碼。有人觀察到一個引導管理器 (?) 會顯示一個包含活動分割槽的選單。

Partitions.Create dev#part sizeMB

建立一個指定大小的 Oberon 主分割槽(型別 AosFS = 76),它將保持未格式化,除了第一個扇區將填充 0F6X。它無法在擴充套件分割槽中建立邏輯驅動器。只有在主機裝置上沒有掛載分割槽的情況下才能執行;也就是說,使用 Oberon-0 或使用已安裝的 Oberon,但要在另一個沒有掛載分割槽的裝置上。參見 OFSTools.Unmount:在啟動時自動掛載的 FS 無法解除安裝。程式會驗證 MBR 是否有效,即末尾是否包含“55 AA”簽名。這隻有在安裝低階格式化的空磁碟時才需要記住。然後必須先寫入有效的 MBR。(* 在 Beta 中不存在 *)

Partitions.Delete dev#part type

刪除指定型別的某個主分割槽。之所以要求使用者指定型別,是因為它更加健壯。只有在主機裝置上沒有掛載分割槽的情況下才能執行;也就是說,使用 Oberon-0 或使用已安裝的 Oberon,但要在另一個沒有掛載分割槽的裝置上。警告:分割槽不可恢復!(* 在 Beta 中不存在 *)

Partitions.ShowAosFSLimits ~

在 System.Log 中顯示 AosFS 限制。

Partitions.Eject dev#part
Partitions.Eject ^

彈出選定裝置中的介質。(* 在 Beta 中不存在 *)

[頂部]

磁碟映像檔案

克隆是將已安裝的作業系統從一臺參考計算機複製到一臺或多臺其他計算機的過程。它包括備份儲存在參考計算機分割槽上的所有資料,並將這些資料還原到目標計算機。克隆在 ETH 中被廣泛用於安裝計算機實驗室。

Oberon 在一對命令 Partitions.PartitionToFilePartitions.FileToPartition 中實現了簡單的基於扇區的克隆方法,用於克隆單個分割槽。分割槽的扇區被複制到中間檔案和從中間檔案複製,而不會了解底層檔案系統的結構。中間檔案通常稱為磁碟映像檔案,或簡稱為磁碟映像。該方法的優點是它不僅可以用於 Oberon 分割槽,還可以用於任何現有的作業系統。

通常,磁碟映像會駐留在伺服器上。例如,Oberon0.Dsk 是一個磁碟映像,更準確地說是軟盤映像,它駐留在 ETH ftp 伺服器 ftp://ftp.ethoberon.ethz.ch/ETHOberon/Native/[已過期] 上。

克隆還有助於將分割槽移動到同一臺計算機上的另一個分割槽或另一臺計算機上的另一個磁碟。請記住,必須有一個第三個分割槽提供足夠的空間來儲存磁碟映像。鑑於 Oberon 分割槽通常不超過 50MB,這種克隆可以被認為是現實且可行的,因為它速度很快。其他作業系統的分割槽通常大得多,找到足夠的空間可能不太現實。克隆不適合調整分割槽大小 - 參見命令 OFSTools.GenCopyFiles

Oberon0.Dsk

此映像檔案是每個 Oberon 系統安裝或更新的基礎。使用它和 Partitions.FileToPartition 命令,可以建立一個 Oberon-0 啟動軟盤。從該軟盤啟動,將啟動 Oberon-0,這是一個用於配置和安裝真正的、完整功能的 Oberon 系統的小型基於 RAM 盤的系統。該啟動軟盤是軟盤上的 Oberon 系統的一個很好的例子。

映像檔案是透過一個在 Native.Tool 中的“安裝軟盤”部分中完整描述的過程建立的。

Oberon 實用程式軟盤

Oberon 實用程式磁碟 是軟盤上 Oberon 系統的另一個例子。映像檔案是透過一個在 Native.Tool 中的“實用程式軟盤”部分中完整描述的過程建立的。

磁碟映像格式

磁碟映像也可以由其他流行的磁碟映像程式處理。例如,Oberon-0 啟動軟盤也可以使用以下程式建立

  • Linux、Unix 或 BeOS 程式 dd
  • OS/2 程式 loaddskf

[頂部]

基於 Linux 的 Oberon 看到的分割槽

基於 Linux 的 Native Oberon 是為 Linux 模擬 Native Oberon。目標不是與 Linux 環境緊密整合,而是與 Native Oberon 保持二進位制相容性。此實現不會更改模組介面,但會以不同的方式檢視分割槽。這是因為 Linux Oberon 安裝在 LinuxFS 檔案中。

Partitions.Show [detail]

顯示虛擬分割槽表。當啟動基於 Linux 的 Oberon 時,主機檔案(預設名稱:oberon.dsk)被視為已掛載的虛擬分割槽。要訪問真正的 Native Oberon 分割槽,請執行
Linux.OpenDisk path
提供對 Native Oberon (AosFS 或 NatFS) 分割槽的訪問。path 是它的 Linux 識別符號,例如 /dev/hdb1。該分割槽將被視為虛擬,然後可以掛載其檔案系統。
示例 Partitions.Show detail ~
    Disk: oberon.dsk / 61438 * 512 = 29MB / GetCHS: unsupported / mntcnt=1 
    oberon.dsk#00          0     61438    29MB --- (Whole Disk) / mounted
    Disk: Diskette0 / removable / GetSize: no media / mntcnt=0

Partitions.Check path
Partitions.Check ^

與 Native Oberon 的含義相同。

所有剩餘的 Partitions 命令在該上下文中不適用。配置不會使用 Partitions.SetConfig 更改,而是透過編輯 oberon.cnf 更改。

與 Native Oberon 一樣,必須先掛載檔案系統才能訪問它。您可以掛載 LinuxFS 或使用 Linux.OpenDisk 訪問的 Native Oberon 分割槽。

[頂部]

Oberon 檔案系統和外來檔案系統

檔名以標識特定已掛載檔案系統的名稱作為字首,例如 SYS,它是系統從其啟動的檔案系統的名稱(預設字首)。

示例:新安裝系統上 Oberon.Text 的完整檔名是 SYS:Oberon.Text 。

NamePlate 小部件在開頭顯示檔名,在結尾顯示字首(或目錄),以便檔名始終可見。當檔名很長時,字首可能會被隱藏。在 NamePlate 上 MM 點選會導致完整名稱顯示在 System.Log 中。

Oberon 系統不僅可以訪問其自身檔案系統型別 AosFS 的資料,還可以訪問其他 Oberon 分割槽和外部檔案系統中的資料。對其他檔案系統的訪問由 OFSTools 模組的命令控制。

OFSTools.Mount prefix [hashSize] [cachesize] alias (dev#part [",R"] [",X"]] | params ~ | ^ ) ~

掛載檔案系統。第一個引數是必須掛載檔案系統的目錄。目錄在掛載時確定;也就是說,它不是永久的。掛載後,名稱的字首部分用於查詢正確的檔案系統,字首後的部分傳遞給檔案系統進行解釋。不同分割槽/卷不能有相同的目錄。多個檔案系統掛載的順序是搜尋它們的順序。順序可以使用 OFSTools.SetDefault 更改,並由 OFSTools.Watch 顯示。
示例:OFSTools.Mount AOS AosFS IDE2#5 ~
執行後,位於 IDE2#5 上的“My.Text”檔案(裝置 IDE2 上的第五個分割槽)將可以使用名稱“AOS:My.Text”訪問。
第二個和第三個引數是快取規範。預設情況下不安裝快取。請參閱 OFSTools.InstallCache 命令。
第四個引數是分割槽上預期的檔案系統型別(示例中的 AosFS)。有效型別在 Oberon.Text 的 OFS.Alias 部分列出。雖然從理論上講,系統可以推斷出要使用的正確檔案系統型別,並從 dev#part 值中推斷出來,但決定讓使用者指定這一點,因為它更穩健。
第五個引數中的 dev#part 指定要掛載的裝置和分割槽。它承載 AosFS、NatFS 或 FatFS 檔案系統。FatFS 可以是 DOS 或 Windows FAT FSs;也就是說,FAT12、FAT16 和 FAT32。可以使用熟悉的 System.CopyFiles 命令在這些 FSs 和 Oberon 系統的 FS 之間交換檔案。System.RenameFiles、System.DeleteFiles 和 System.Directory 也可以使用,檔案可以像往常一樣直接開啟。此外,FAT.Tool 允許訪問 Oberon 不支援的 FAT 檔案系統的擴充套件功能,即目錄、檔案屬性等。還可以掛載 DOS 格式化的軟盤或 ZIP 磁碟。
可選的 ",R" 引數提供對 FS 的只讀訪問。例如,在安裝新的 Oberon 系統期間,系統會提示您執行
OFSTools.Mount SRC NatFS Diskette0,R ~
這提供了對掛載的 Oberon-0 軟盤的只讀訪問,該軟盤包含要安裝的 Oberon 模組的存檔。軟盤可以是防寫的,也可以不是。不要嘗試在不指定 ",R" 引數的情況下掛載防寫的軟盤。將會發生 TRAP。
掛載軟盤會導致軟盤 LED 亮起並一直亮著,直到發出解除安裝命令。這應該引起您的注意,因為您必須在更換介質之前解除安裝軟盤。
可選的 ",X" 引數僅在掛載 FatFS 時使用。此選項強制 FAT 驅動程式忽略分割槽的乾淨關閉標誌並以讀寫方式掛載分割槽。如果未設定關閉標誌,則分割槽將以只讀方式掛載,以防止可能的資料損壞。這種情況會在核心日誌中報告。
關於乾淨關閉標誌:該標誌指示分割槽已正確解除安裝。如果 Oberon 崩潰,則不會為已掛載的分割槽設定該標誌。最好在 FatFS 上執行磁碟修復實用程式,例如 MS-DOS Scandisk:如果 Scandisk 修復了錯誤,則它會設定乾淨關閉標誌。如果未檢測到錯誤,Scandisk 不會設定該標誌,儘管它應該設定。
第五個引數中的 params 取決於 alias 中指定的檔案系統,如下所述。
實用提示:如果您希望在啟動系統時掛載檔案系統,可以在 Oberon.Text 的 System.InitCommands 部分放置一個 Mount 命令。
RamFS size sectorsize ~
掛載駐留在主儲存器中的檔案系統,因此位於裝置/分割槽層次結構之外,並且不需要格式化。RamFS 引數後面是扇區大小,以扇區為單位,後面是扇區大小,以位元組為單位。此檔案系統作為使用者便利性提供,用於儲存在 Oberon 終止時將被清除的臨時資料。
FileFS filename ~
掛載駐留在下一個引數中指定的檔案中的現有 Oberon。在此之前,必須掛載承載 FatFS。此命令變體使利用以前基於 DOS 的 Oberon 系統中的舊資料成為可能。
示例
OFSTools.Mount FAT FatFS IDE2#5 ~
後面是
OFSTools.Mount DFS FileFS FAT:Oberon.Dsk ~
LinuxFS path ~(基於 Linux 的 Oberon 獨有)
掛載沿指定路徑找到的 Linux 檔案系統。請參閱下面的特殊 Linux 部分。
訪問早期 Native Oberon 版本的檔案系統
首先,使用 Partitions.Show 列出所有分割槽,找到目標分割槽並選擇它。然後,執行: ::OFSTools.Mount NAT NatFS ^
從基於 Linux 的 Oberon 訪問 Linux 檔案系統
  • 在 Linux 中,確定檔案系統的 path。例如 /home/userid
  • 在 Linux Oberon 中,使用以下命令掛載檔案系統:OFSTools.Mount prefix LinuxFS path
從基於 Linux 的 Oberon 訪問 Native Oberon 子系統
  • 在 Linux 中,執行 fdisk 以確定分割槽的識別符號,例如 /dev/hda5
  • 在 Linux Oberon 中,使用以下命令訪問分割槽作為 虛擬磁碟:Linux.OpenDisk /dev/hda5 並使用以下命令掛載檔案系統(NatFS 或 AosFS):OFSTools.Mount prefix filesys /dev/hda5

OFSTools.Unmount prefix
OFSTools.Unmount ^

解除安裝之前在指定目錄下掛載的分割槽。介質上的檔案系統將更新,如果它駐留在可移動介質上,則可以移除介質。不要在介質乾淨更新之前移除介質!當您使用 System.RebootSystem.QuitCtrl-Alt-Del 清潔地關閉系統時,已掛載的檔案系統將首先自動解除安裝。
還要注意不要在關閉 所有顯示駐留在該檔案系統上的文件的檢視器之前解除安裝檔案系統,否則您將引發一系列 TRAP。
重要:在啟動時自動掛載的檔案系統無法解除安裝。狀態(啟動)由 OFSTools.Watch 顯示。

OFSTools.SetDefault prefix
OFSTools.SetDefault ^

將具有指定目錄的檔案系統設定為預設訪問的第一個檔案系統。其餘已掛載的檔案系統保留其當前順序。新的完整路徑將顯示在 System.Log 中。示例:路徑:WRK SYS
稍後,仍然可以透過執行 OFSTools.WatchSystem.Watch 來驗證檔案系統的順序。
掛載分割槽的順序很重要。在示例中,WRK 位於首位,然後是 SYS。這意味著當您載入檔案而未指定目錄時,系統將按順序搜尋所有已掛載的檔案系統,直到找到該檔案。例如,如果您載入名為“My.Text”的檔案,並且 WRK FS 不包含此類檔案,那麼如果存在,最終將開啟 SYS 中的檔案。
相反,在不使用顯式目錄儲存檔案時,該檔案將 始終儲存在 第一個檔案系統上(在本例中為 WRK)。為了避免混淆,最好在建立新檔案時始終指定目錄。TextDocs 小部件透過始終在 NamePlate 中顯示包含目錄的完整檔名來提供幫助。
為了引導檔案的放置,例如在編譯新的 .Obj 檔案時,您可以選擇:
  • 指示編譯器使用目錄(推薦)
Compiler.Compile \PUSR: {files} ~
  • 使用 OFSTools.SetDefault 更改預設檔案系統
    不推薦這樣做,因為它會影響所有新建立的無目錄檔案。
要顯示特定檔案系統上的所有檔案,請在 System.Watch 顯示中選擇該行並執行 System.Directory ^

OFSTools.Watch

按順序列出已掛載的檔案系統,以及它們的目錄、別名、分割槽 ID、大小和可用空間。 (boot) 表示在啟動時自動掛載的檔案系統。如果安裝了快取,則會顯示快取效能資訊。與 System.Watch 顯示的內容相比,它提供了更多詳細資訊,但後者命令還會顯示堆資訊。
如果可用空間不足,請記住,沒有直接的 Oberon 工具可以調整 Oberon 分割槽的大小。請參閱分割槽備份。
舉另一個例子,一個在從安裝盤 Oberon-0 啟動後立即安裝的基於 RAM 的系統
    RAM: GCN2KFS on RAM0 (boot) 
         1072KB of 2048KB free
Oberon-0 預設情況下會建立一個 2MB 的 RAM 磁碟。這意味著安裝至少需要 3MB。如果需要,Oberon 可以執行在不到 3 MB 的記憶體中。

OFSTools.InstallCache prefix hashSize cacheSize ~

為具有指定目錄的檔案系統安裝大小為 cacheSize 塊的快取。100 個塊提供良好的快取效能,大約佔用 200KB 的記憶體。使用 OFSTools.Watch 檢視快取效能。此命令不能與 FatFS 一起使用,因為它使用針對 FAT 最佳化的內建資料快取。

OFSTools.RemoveCache prefix

刪除為具有指定目錄的檔案系統安裝的快取。不適用於 FatFS。

OFSTools.CopyTo dst src ( &file | { file [=> file ] } ) ~

將大量檔案從檔案系統 src 複製到另一個 dst。如果檔案系統是預設檔案系統,則可以簡寫為“”。前兩個引數後面是
  • 要複製的檔案的名稱。可選地,每個檔案可以可選地分配一個新的名稱,該名稱在 "=4" 後面指定。
  • 或者是一個以 "&" 為字首的單個名稱,表示間接列表。要複製的檔案的名稱包含在指定的檔案中。

OFSTools.GenCopyFiles rem add ( "mask" | &file | { file [=> file] } ) ~

生成一個 System.CopyFiles 命令,您可以在可能編輯它之後執行該命令。前兩個引數指定目錄。第三個(以及後續)引數指定檔案列表或用於選擇檔名的掩碼。列表中的每個檔名都作為原始檔名使用。目標檔名按如下方式生成:第一個引數是要從檔名開頭刪除的字串;第二個引數是要附加到尾部的字串。
語法不太直觀,但該命令非常強大且有用,可用於準備一批檔名。瞭解該命令工作原理的最簡單方法是試用它。這是安全的,因為它本身不會有任何影響,只是生成一個您可以檢視和執行的文字。
複製或調整分割槽大小
假設寶貴資料儲存在 SYS: 中,並且 BACKUP: 是系統上的一個空閒分割槽。OFSTools.GenCopyFiles SYS: BACKUP: "SYS:*" ~ 命令的功能在以下兩種通常非常重要的應用程式中尤為出色
  • 備份分割槽:逐檔案複製會捕獲系統在特定時刻的狀態。然後,如果新軟體或新硬體安裝導致故障,可以回滾原始系統。這是一種輕鬆的回滾系統到正常工作狀態的技術。
  • 調整分割槽大小:複製過程會自動重新組織檔案,從而提供將資料移動到更小分割槽大小的可能性,儘管主要用途通常是增加大小。
克隆的優點是,影像檔案可以移植到另一個系統。

[頂部]

一臺機器上的多個 Oberon 分割槽

Oberon 可以安裝在主分割槽或邏輯驅動器中。因此,單個硬碟上可以共存四個以上的 Oberon 分割槽。但 Oberon 也可以安裝在不同的硬碟上,即使是不同型別的硬碟(EIDE、SCSI、USB)。在安裝過程中,系統會提示您選擇要安裝 Oberon 的硬碟控制器驅動程式。稍後,當您決定將 Oberon 安裝到另一個磁碟時,您必須執行相應的磁碟驅動程式安裝命令。

  • 對於 ATA/EIDE 磁碟控制器,執行 ATADisks.Install ~ (大約需要 5 秒)
  • 對於 Adaptec 7xxx SCSI 磁碟控制器,執行 Adaptec7.Install ~ (大約需要 15 秒)
  • 對於 NCR 810 SCSI 磁碟控制器,執行 NCR810Disks.Install ~ (大約需要 15 秒)

也可以在 Oberon.Text 的 System.InitCommands 部分進行。

之後,您將在 Partitions.Show 顯示中看到新裝置。要檢視這些驅動程式顯示的跟蹤資訊,請使用 System.OpenKernelLog

附加檔案系統

要建立新的檔案系統,您首先必須透過執行 Partitions.CreatePartitions.ChangeType 命令建立分割槽。下一步是使用 Partitions.Format 命令用 AosFS 格式化分割槽。格式化分割槽後,使用 OFSTools.Mount 命令將其掛載,例如使用引數 USR AosFS dev#part。如果您希望在系統啟動時掛載檔案系統,可以將此命令放置在 Oberon.Text 的 System.InitCommands 部分。您現在可以使用諸如“USR:SomeFile”之類的名稱訪問新檔案系統上的檔案。

您也可以在可移動介質(如軟盤和 ZIP 磁碟)上建立 Oberon 檔案系統(驅動程式可用)。對於可移動介質,您必須小心地在再次移除介質之前解除安裝檔案系統,以便乾淨地更新介質上的檔案系統。這可以使用 OFSTools.Unmount 命令完成。

分配分割槽字首的建議

應該使用少量分割槽。分割槽過多會導致以下問題:必須預先分配分割槽,並且使用者必須忍受糟糕的分配。如果 SYS 分割槽太小而無法安裝新版本,該怎麼辦?如果它太大,就會浪費空間。建議的分割槽大小從 40 MB 開始,用於完整版本,留出大約 40% 的使用者可用空間,但使用者也可以選擇將他們的檔案放在 HOME 分割槽中,如下所述。

ETH 的 Shark 網路計算機有三個

SYS: 用於只讀共享系統檔案
RAM: 用於記憶體磁碟
HOME: 用於使用者的個人檔案

在 PC 上,推薦的數量是兩個

SYS: 用於安裝
HOME: 用於使用者的個人檔案

建議透過執行 OFSTools.SetDefault HOME ~ 將 HOME: 設為預設檔案系統,最好是在 Oberon 啟動時將其新增到 Oberon.Text 的 System.InitCommands 部分。為了使這一點更加明顯,請將 System.Watch 也新增到該部分。

不同檔案系統中具有相同名稱的檔案

這可能是嚴重問題的一個來源,特別是對於 .Obj 檔案。當載入模組 X 時,模組載入器只會嘗試開啟檔案 X.Obj(沒有字首)。檔案系統將遍歷搜尋路徑(按 System.Watch 順序)直到找到 X.Obj,然後將模組 X 從該檔案系統載入。如果在不同的檔案系統上有多個 X.Obj 的副本,搜尋路徑順序決定了載入哪個副本。這最不令人困惑,也可能導致災難性後果,出現陷阱和系統鎖定。最好的方法是為模組命名唯一名稱(透過在 Native 主頁上的模組登錄檔中註冊字首),並避免重複的 .Obj 檔案。

[頂部]

Oberon 安裝和安裝更新

使用多個檔案系統的能力簡化了安裝策略。為了討論各種選項,假設 Oberon 系統執行在兩個檔案系統上(SYS: 和 HOME:)。請記住,當 Oberon 已經安裝後,不再需要其他作業系統進行進一步的安裝(除了建立另一個 Oberon 分割槽,因為此測試版尚不支援此功能)。

新版本的安裝

要安裝新版本而不會損害或破壞工作系統(例如,為了測試它),建立一個用於新版本的附加分割槽。然後,當前檔案系統 (SYS:)、新 FS(也是 SYS:)和使用者 FS (HOME:) 可以作為兩對管理:current + HOME 和 new + HOME。顯然,使用這種設定,您不會冒覆蓋某些根據個人喜好調整的 SYS: 檔案的風險,但這些特定檔案也必須在新系統中進行定製。透過執行 System.Directory SYS:*.Bak 可以輕鬆地發現修改過的檔案,這將生成一個列表,其中可能包含一些這些名稱

EditKeys.Text
Mail.Panel
Mail.Sig.Text - (您的郵件簽名)
MailMessages - (您的郵箱)
News.Sig.Text - (您的新聞簽名)
Oberon.Text
System.Tool
System3.Tool
TextPopups.Text

以及可能調整過的一些其他 *.Tool 檔名。按照 安裝說明 安裝新版本並啟動它。將舊 FS 掛載到您選擇的名稱下,例如 OLD。大多數上述檔案都可以複製到新 FS 中,但 Oberon.Text 必須與新版本合併,因為在新版本中可能添加了一些新設定。開啟 OLD:Oberon.TextSYS:Oberon.Text,並將舊設定複製到新文字中。將您的私有資料用顏色突出顯示可能是一個好習慣。

只有在執行 Mail.Collect 或刪除 100 條訊息後才會出現 MailMessage.Bak 檔案。

仍然需要組織以隨意啟動任一系統。提供了許多選擇:從軟盤、從引導管理器或透過啟用啟動它們。雖然從軟盤啟動總是可能的,但其他選擇取決於引導管理器或分割槽在硬碟上的位置。

升級已安裝的 Oberon

如果您在同一分割槽中重新安裝 Oberon 或升級它,原則上存在覆蓋檔案的風險,但安裝過程會為每個檔案建立一個 .Bak 檔案,字尾為“.Text”、“.Tool”或“.Mod”。只有前面部分列出的檔案才是真正“關鍵”的,並且可能會因錯誤處理而丟失 (*)。與完整安裝相比,安裝 本身已經簡化。實際上,分割槽已經存在,希望大小合適,並且 FS 也已經存在。因此,不需要格式化 FS。相反,引導載入程式必須使用 Partitions.UpdateBootFile 替換。安裝完成後,將關鍵檔案從它們的 .Bak 版本或特殊備份版本複製回來。不要簡單地複製 Oberon.Text,因為在新版本中可能添加了一些新設定。開啟 Oberon.TextOberon.Text.Bak,並將舊設定複製到新文字中。將您的私有資料用顏色突出顯示可能是一個好習慣。

(*) 例如,在完成當前安裝之前嘗試再次執行安裝。作為預防措施,您可以在安裝之前以下一部分中描述的任何方式備份這些檔案。

[頂部]

配置字串

Native Oberon 使用配置字串來設定底層配置選項。這些字串是 ASCII 字串對(名稱,值),儲存在啟動裝置(軟盤或硬碟)上的表格中。這些字串的永久值通常在使用 Oberon-0 中的安裝程式安裝期間設定。系統中的底層模組使用 Kernel.GetConfig 過程讀取這些字串。高階模組應使用更靈活的 Oberon.Text 和 Oberon.OpenScanner 過程來訪問配置資訊。

請參見 配置字串

[頂部]

啟動時重新配置 Oberon

有時需要暫時覆蓋某些配置字串的設定。可以透過在啟動期間按住 Shift 鍵或啟用 Scroll Lock 鍵來更改啟動的 Oberon 系統的配置。在幾秒鐘內,引導過程將中斷,配置字串及其名稱和當前值將列在螢幕上

    OBERON loading... 
    BootVol=IDE0#9 
    MT=PS2 
    ... 
    OBL>

輸入“h”(幫助)以回憶對 Oberon Boot Loader (OBL) 提示的回覆規則(在每個回覆後輸入回車)

     name=val - set config string 
     name=    - delete config string 
     c        - continue booting 
     w        - write config to boot device

輸入一個配置字串對,並在結尾輸入回車。從 2.23 版開始,名稱字串不再區分大小寫。要使更改永久生效,請輸入“w”,配置將被寫回啟動裝置。要繼續引導,請輸入最後的“c”。

如果使用 noboot.exe 啟動 Oberon(透過 DOS 或 Windows 95/98 中的 MS-DOS 模式(非 ME)),引導過程也會中斷,但會呼叫由 SET Editor= 命令確定的首選編輯器來編輯儲存在 Native.Par 檔案中的配置。退出編輯器後,將恢復引導。如果沒有定義編輯器,則引導將正常進行,不會提供修改 Native.Par 的機會。

顯然,也可以透過在需要時編輯 Native.Par 來更改配置字串。在基於 Linux 的 Native Oberon 中,只能更改包含 Oberon 的檔案的大小(在 Linux 檔案系統中)。

[頂部]

備份/恢復方法

PC Native Oberon 提供了多種備份敏感資料的方法。

檔案備份/恢復到可掛載的檔案系統

透過 Oberon 和外部檔案系統 中描述的掛載/解除安裝功能,可以將檔案備份到另一個檔案系統(AosFS、NatFS、FatFS)。最好使用 OFSTools.CopyTo 將一批檔案從一個檔案系統複製到另一個檔案系統。相同的命令用於恢復檔案。或者,可以透過執行 System.CopyFiles 來執行備份/恢復操作。使用 OFSTools.GenCopyFiles 命令可以方便地建立包含檔名列表的命令。

儘管軟盤的儲存容量有限,但考慮到 Oberon 模組和目標檔案的小平均檔案大小,它們仍然是最受歡迎的備份介質。軟盤的使用方式與硬碟相同,不同之處在於它們只有一個非常小的分割槽,其中包含一個可安裝的檔案系統。請注意,與 NatFS 和 FatFS 相比,AosFS 會浪費空間。經典的驅動器字母“A”和“B”在命令中不再使用,除了接下來描述的 *Backup.Tool* 命令。

由於 Oberon 使用長檔名,將檔案儲存到 FatFS 可能意外地很快遇到容量問題。檔案分配表中的根目錄最多可以包含 512 個條目。換句話說,根目錄中最多可以有 512 個檔案和資料夾。為了儲存長檔名和資料夾名以及它們關聯的 8.3 別名,可能會在根目錄中少於 512 個檔案或資料夾的情況下用完目錄條目。解決方法是將一批檔案移動到根目錄中的工作 *資料夾* 中。

Backup.Tool

使用 *Backup.WriteFiles* 將檔案從一個分割槽複製到軟盤,並使用 *Backup.ReadFiles* 將檔案恢復到分割槽。*Backup.Tool* 提供了詳細資訊。為了做到這一點,軟盤不需要掛載。檔名限制為 8.3 格式。

DOSBackup 軟盤

使用 DOSBackup 工具在 Windows Oberon 上備份的檔案可以在 Native Oberon 上恢復,方法是執行 *DOS.BackupDirectory "a:/"* 命令。這將生成一個帶有相關檔名的 *DOS.Copy* 命令,可以在執行之前進行編輯。恢復後的檔案將恢復其 Oberon 名稱,而不是 *DOS.ReadFiles* 命令強制執行的 8+3 名稱。

透過 FTP 在伺服器上備份

Oberon 本身適合通訊,尤其是 FTP。有一個圖形使用者介面用於將檔案上傳/下載到遠端伺服器,但 *NetSystem.Tool* 提供了更基礎的命令來實現相同目標。

分割槽備份

複製分割槽 到另一個分割槽並恢復它。

分割槽克隆

將分割槽複製到 磁碟映像檔案 並恢復它。

[頂部]

存檔

存檔檔案在備份操作和大量資料傳輸中起著重要作用。除了具有副檔名 "Arc" 的自定義 Oberon 存檔之外,很快將提供一種新的存檔型別。新的 Zip 存檔可以在所有 Oberon 和許多其他平臺之間移植。它們基於廣泛使用的 Zlib Deflate 壓縮技術,允許將多個檔案壓縮到單個 zip 存檔中,反之亦然,可以解壓縮存檔。本發行版中包含的存檔工具僅在此列出

  • Zip 工具 - cfr. Zip.Tool (* 不屬於 Beta 版 *)
  • 壓縮工具 - cfr. Compress.Tool 和 Chapter2.Text
  • AsciiCoder 工具 - cfr. AsciiCoder.Tool 和 Chapter2.Text
  • Base64 工具 - cfr. Decoders.Tool 和 Chapter2.Text
  • UUDecoder 工具 - cfr. Decoders.Tool 和 Chapter2.Text
  • BinHex 工具 - cfr. Decoders.Tool 和 Chapter2.Text
  • QuotedPrintable 工具 - cfr. Decoders.Tool
  • Rot13 工具 - cfr. Decoders.Tool
  • Tar - cfr. Decoders.Tool
  • TGZ 工具 - cfr. Decoders.Tool

Chapter2.Text 中記錄的 Unzip、OldFiles 和 FileUtils 工具已被刪除。

[頂部]

beta 版本特色

此版本的 Partitions 工具不能建立分割槽,它只能更改可供重複使用的現有分割槽的型別。最終,您將不得不使用另一個作業系統(例如,使用 Linux 或 PartitionMagic)建立分割槽,然後透過執行 *Partitions.ChangeType* 命令來更改其型別。

Partitions.Show ["detail"] ~ 該命令指示哪個驅動器字母與每個 DOS/Win 分割槽相關聯。此資訊不可靠,因為它取決於使用的版本,而且,它與 Oberon 無關。此非功能在 alpha 版本中被刪除,alpha 版本具有更通用的 FatFS。

示例

Disk: IDE0, 8063MB, Maxtor 90845D4 
IDE0#00   8063MB --- (Whole disk) 
IDE0#01    400MB   6 * c:/ DOS FAT16 >= 32M

驅動器字母對於掛載基於 DOS 的 Oberon 和使用 DOS.Tool 命令管理檔案是必需的。

OFSTools.Mount prefix DosBasedFS filename ~
掛載位於下一個引數中指定檔案中的 Oberon 系統的檔案系統。該檔案位於 FAT16 分割槽中。例如

OFSTools.Mount DOS DosBasedFS c:/oberon.dsk ~

OFSTools.Mount prefix FileFS filename ~
掛載位於下一個引數中指定檔案中的現有 Oberon 的 FileFS。在發出 *OFSTools.Mount* 命令之前,必須使用 *DOS.Copy* 將基於 DOS 的檔案從其主機 FAT16 分割槽複製到 Oberon 分割槽。例如

DOS.Copy c:/system3/native.dsk => native.dsk ~

此掛載命令變體使得利用以前基於 DOS 的 Oberon 系統中的遺留資料成為可能。

訪問 FAT16 分割槽

與其掛載 DosBasedFS,不如使用 *DOS.Tool* 中記錄的 DOS 命令集合、透過備份命令的外部介質或透過 ftp 訪問的伺服器在 Oberon 和 FAT16 檔案系統之間交換檔案。在 alpha 版本中以不同的方式解決。

檔案備份到 FAT16 分割槽

使用 *DOS.CopyTo* 將一批檔案從一個分割槽寫入另一個分割槽,並使用 *DOS.CopyFrom* 將其恢復到分割槽。*DOS.Tool* 提供了詳細資訊。

可以透過執行 *DOS.Copy* 命令以更多檔名編輯為代價來實現相同結果。在許多情況下,甚至需要執行 *DOS.Copy* 命令。執行指向 FAT 分割槽的 *DOS.Directory* 命令,將顯示大量嵌入在檔名中的“~”字元,這些名稱顯然是 Oberon 中作為目標檔名的無效名稱,如本例所示

DOS.CopyFrom "E:/ofwmay/work/" "mailsi~1.tex" ~

但這有效

DOS.Copy "E:/ofwmay/work/mailsi~1.tex" => Mail.Sig.Text ~

檔案備份到軟盤

使用 *Backup.WriteFiles* 將檔案從一個分割槽複製到軟盤,並使用 *Backup.ReadFiles* 將檔案恢復到分割槽。*Backup.Tool* 提供了詳細資訊。為了做到這一點,軟盤不需要掛載。檔名限制為 8+3 格式。

備份軟盤不能掛載。備份工具格式與 NatFS 或 AosFS 不相容。

[頂部]

參考文獻

[Bac86] Maurice Bach - *Unix 作業系統的設計* - Prentice Hall - ISBN 0-13-201757-1

[WG92] Niklaus Wirth 和 Jürg Gutknecht - *Oberon 專案 - 作業系統和編譯器的設計* - Addison-Wesley,1992 年。

[頂部]

2002 年 11 月 5 日 - 版權所有 © 2002 年蘇黎世聯邦理工學院。保留所有權利。
電子郵件:oberon-web at inf.ethz.ch
主頁:www.ethoberon.ethz.ch

  1. ftp.ethoberon.ethz.ch 不再可用。請參閱 最新的說明
華夏公益教科書