跳转至内容

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 不再可用。请参阅 最新的说明
华夏公益教科书