标签 FreeDOS 下的文章

如果你已经熟悉了 Linux 命令行,尝试这些命令有助于轻松地进入 FreeDOS 。

 title=

如果你已经尝试过 FreeDOS ,你可能已经被命令行所吓倒。DOS 命令可能稍微不同于你所使用的 Linux 命令行,因此,使用它的命令行上需要学习一些新的命令。

但是对于 Linux 用户来说,它不是一种 “全新的” 体验。在 FreeDOS 中,除了 DOS 命令之外,我们还包含一些已经熟悉的标准的 Unix 命令。因此,如果你已经熟悉了 Linux 命令行,尝试这些命令有助于轻松地进入 FreeDOS :

在四周走走

在 FreeDOS 文件系统中使用 cd 命令来 更改目录 。在 FreeDOS 上的用法在 Linux 上的用法基本相同。要更改到一个名称为 apps 的子目录,输入 cd apps 。要回到先前的目录,输入 cd ..

在 FreeDOS 上导航浏览目录和路径是仅有的不同点,目录分隔符是 \(“反斜杠”)而不是你在 Linux 上使用的 / (“正斜杠”)。例如,让我们假设你在 \devel 目录之中,你想移动到 \fdos 目录。这两个目录相对于 目录而言是处于相同的 “层次” 之中的。因此,你可以输入 cd ..\fdos 来 “向后返回” 一个目录层次(使用 ..) ,然后再 “转到” fdos 目录。

要更改到一个新的目录,你可以使用先前提到的反斜杠来替换需要给出的完整的路径。如果你已经深入了另外一个路径之中,并且只是像立即切换到新的位置,那么这会是非常方便的。例如,要更改到 \temp 目录,你可以输入 cd \temp

C:\>cd apps
C:\APPS>cd ..
C:\>cd devel
C:\DEVEL>cd ..\fdos
C:\FDOS>cd \temp
C:\TEMP>_

在 FreeDOS 中,像大多数的 DOS 系统一样,你可以在DOS 提示符中看到你的当前路径。在 Linux 上,你的提示符可能类似于 $ 。在 FreeDOS 上,提示符会列出当前的驱动器及其当前的路径,接下来使用 > 作为提示符(看做 Linux 上的 $)。

列出和显示文件

在 Linux 上,列出当前目录中文件的标准命令是 ls 命令。在 FreeDOS ,它是一个不同的命令: dir 。但是你可以创建一个 别名 来获取一种与 ls 类似的行为。

要为另外一个命令创建一个别名,使用内置的 alias 命令。例如,使用此命令来为 ls 定义一个别名,这个别名将显示一个目录列表,与在 Linux 上使用 ls 类似:

C:\>alias ls=dir /one /w /b /l
C:\>ls
[apps]    command.com   [devel]  fdauto.bat   fdconfig.sys
[fdos]    kernel.sys    [src]    [temp]
C:\>

在 FreeDOS 上的命令选项格式与 Linux 稍微不同。在 Linux 上, 你使用一个连字符号(-)表示选项。但是在 FreeDOS 上,你使用一个正斜杠来表示选项。上面的 alias 命令使用斜杆杠字符 — 它们是 dir 的选项。/one 可选择项告诉 dir 以某种方式排序(o):先按名称(n)再按扩展名(e)来排序一些文件和目录。/w 使用一个 “宽” 目录列表,/b 使用一种不带有 dir 通常提供的其它信息的 “裸” 显示,/l 指示 dir 以小写字母的形式显示文件和目录。

注意,针对于 FreeDOS 的 dir 命令的命令行选项与针对于 Linux 的 ls 命令的命令行选项截然不同,因此,你不能像你在 Linux 上一样精确地使用这个 ls 别名。例如,在 FreeDOS 上使用此别名输入 ls -l 将产生一条 “文件未找到” 的错误,因为底层的 FreeDOS 的 dir 命令不能找到一个名称为 -l 的文件。不过,对于基本的 “查看在我的系统上有哪些文件” 来说,这个 ls 别名已经足够帮助 Linux 用户开始使用 FreeDOS 了。

类似地,你可以为 FreeDOS 的 type 命令创建一个别名,来像 Linux 的 cat 命令一样工作。两个重新都会显示一个文本文件的内容。虽然 type 不支持你可能在 Linux 下使用的命令行选项,但是显示一单个文件的基本用法是相同的。

C:\FDOS>alias cat=type
C:\FDOS>cat version.fdi
PLATFORM=FreeDOS
VERSION=1.3-RC4
RELEASE=2021-04-30
C:\FDOS>

其它的类 Unix 命令

FreeDOS 包含一些精选的其它常见的类 Unix 命令,因此 Linux 用户将不会感觉到拘束。为在 FreeDOS 上使用这些 Linux 命令,你可能需要从 “FreeDOS Installer” - “My Package List Editor Software (FDIMPLES)” 软件包管理器来安装 “Unix Like Tools” 软件包。

 title=

(Jim Hall, CC-BY SA 4.0)

并不是所有的类 Unix 实用程序都能像在 Linux 上对应的实用程序一样 一致地 工作。这就是我们称其为 类 Unix 的原因。如果你将要使用一些深层次的命令行选项,你可能需要检查其兼容性,不过,对于典型的用法是没有问题的。开始在 FreeDOS 上使用这些类 Unix 命令:

cal 命令是标准的 Unix 的日历程序。例如,为显示当前月份的日历,只需要输入 cal 。为查看一个具体指定的月份,将月份和年份作为参数予以给定:

C:\>cal 6 1994

      June 1994    
Su Mo Tu We Th Fr Sa
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30      

使用 du 命令来查看你的磁盘使用情况。这是 Linux 的 du 命令的简单版本,并且不支持路径以外的任何命令行选项。

C:\>du -s apps
usage: du (start path)
C:\>du apps
    158784 C:\APPS\FED
         0 C:\APPS
Total from C:\APPS is 158784
C:\>

head 命令显示一个文件的前几行。例如,这是一种确定一个文件是否包含正确数据的简单方法。

C:>head fdauto.bat
@ECHO OFF
set DOSDIR=C"\FDOS
set LANG=EN
set TZ=UTC
set PATH=%dosdir%\BIN
if exist %dosdir%\LINKS\NUL set PATH=%path%;%dosdir%\LINKS
set NLSPATH=%dosdir%\NLS
set HELPPATH=%dosdir%\HELP
set TEMP=%dosdir%\TEMP
set TMP=%TEMP%
C:\>

要查看一个完整的文件,使用 more 命令,在 FreeDOS 上的默认文件查看器。这将一次显示一屏的文件,然后在显示下一屏的信息前,打印一个按下一次按键的提示。more 命令是一个非常简单的文件查看器;在 Linux 上你可能已经使用过一个功能更全面的查看器,可以尝试一下 less 命令。less 命令提供 “向后” 滚动一个文件的能力,以防你错过一些东西。你还可以搜索具体指定的文本。

C:\>less fdauto.bat
@ECHO OFF
set DOSDIR=C"\FDOS
set LANG=EN
set TZ=UTC
set PATH=%dosdir%\BIN
if exist %dosdir%\LINKS\NUL set PATH=%path%;%dosdir%\LINKS
set NLSPATH=%dosdir%\NLS
set HELPPATH=%dosdir%\HELP
set TEMP=%dosdir%\TEMP
set TMP=%TEMP%
[...]

如果在你的程序路径变量(PATH)中有很多的目录,并且不确定某个程序是从哪里运行的,你可以使用 which 命令。这个命令将扫描程序路径变量,并且将打印出你正在查找的程序的完整的位置。

C:\>which less
less    C:\>FDOS\BIN\LESS.EXE
C:\>_

FreeDOS 1.3 RC4 包含其它的类 Unix 命令,你可能会在其它更特殊的情况下使用。这些命令包括:

  • bc:任意精度数字处理语言
  • sed:流编辑器
  • grepxgrep:使用正则表达式搜索一个文本文件
  • md5sum:生成一个文件的一个 MD5 签名
  • nro:简单排版,使用 nroff 宏
  • sleep:暂停系统几秒钟
  • tee:保存一个命令行流的副本
  • touch:修改一个文件的时间戳
  • trch:转换单个字符(像 Linux 的 tr 一样)
  • uptime:报告你 FreeDOS 系统已经运行多长的时间

在你控制下的 FreeDOS

FreeDOS ,像 Linux 和 BSD 一样,是开源的。不管你是想通过学习一种新的命令行交互方式来挑战你自己,还是想再去熟悉令人舒适的类 Unix 工具,FreeDOS 都是一款有趣的值得尝鲜的操作系统。尝试一下!


via: https://opensource.com/article/21/6/freedos-linux-users

作者:Jim Hall 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

学习如何在 FreeDOS 中对目录和文件执行创建、移除、复制等任务。

 title=

DOS 的开源实现 FreeDOS 提供了一个轻量级的操作系统,可以在现代硬件(或模拟器)上用于运行历史遗留下来的应用程序,可以更新硬件供应商不兼容于 Linux 的固件闪存。熟悉 FreeDOS 不仅是一种对旧计算机时代的有趣考古,也是一种获取有用的计算机技能的投入。在这篇文章中,我将介绍一些在 FreeDOS 系统上工作所需要知道的基本命令。

基本的命令和文件命令

FreeDOS 在硬盘驱动器上使用目录来组织文件。这意味着你需要使用目录命令来创建一个结构,用于存储和查找你在其中存储的文件。你所需要的用于管理目录结构的命令有:

  • MD (或 MKDIR) 创建一个新的目录或子目录。
  • RD (或 RMDIR) 移除(删除) 一个目录或子目录。
  • CD (或 CHDIR) 从当前工作目录更改到另一个命令。
  • DELTREE 删除一个目录,包括其包含的任意文件或子目录。
  • DIR 列出当前工作目录的内容。

因为使用目录是 FreeDOS 的主要工作,所有的这些命令(除 DELTREE 以外)是包含在 COMMAND.COM 中的内部命令。因此,它们将被加载到内存之中,并在你启动(即使是从启动盘启动)时随时可用。前三个命令有两个版本:一个版本是两个字母的短名,一个版本是长名。在实践中没有区别,因此,我将在这篇文章中使用短名。

使用 MD 创建一个目录

FreeDOS 的 MD 命令会创建一个新的目录或子目录。(实际上,由于 \ 是根目录,从技术上讲,所有的目录都是子目录,因此,我更喜欢在所有的示例中使用“子目录”的说法)。有一个可选的参数是你所想要创建目录的路径,但是如果不包含路径,将在当前工作子目录中创建子目录。

例如,为在你的当前位置创建一个名称为 letters 的子目录:

C:\HOME\>MD LETTERS

这会创建子目录 C:\letters

通过包含一个路径,你可以在任意位置创建一个子目录:

C:\>MD C:\HOME\LETTERS\LOVE

这和先移动到 C:\HOME\LETTERS ,然后在其中创建一个子目录的结果相同:

C:\CD HOME\LETTERS
C:\HOME\LETTERS\>MD LOVE
C:\HOME\LETTERS\>DIR
LOVE

一个路径描述不能超过 63 个字符,包括反斜杠在内。

使用 RD 移除一个目录

FreeDOS 的 RD 命令会移除一个子目录。这个子目录必须是空的。如果它包含文件或其它是子目录,你将会得到错误信息。它也有一个可选的路径参数,语法与 MD 的相同。

你不能移除你的当前工作子目录。为移除此目录,你必须 CD 到其父目录,然后再移除不需要的子目录。

使用 DELTREE 删除文件和目录

RD 命令可能会让人有点迷糊,因为在该命令中内置了保护 FreeDOS 的措施。例如,你不能删除一个包含内容的子目录是一种安全措施。DELTREE 就是解决方案。

DELTREE 命令会删除整个子目录“树”(子目录)、其包含的所有的文件,以及其包含的所有的子目录及其包含的所有的文件等等,上述的一切都在一个简单的命令中完成。有时,它可能有点 容易了,因为它可以如此快速地擦除数据。它是忽略文件属性的,因此你可以擦除隐藏、只读,和未知的系统文件。

你甚至可以在命令中具体指定多个目录树来擦除它们。这条命令将在一个命令中擦除这两个目录中的所有子目录:

C:\>DELTREE C:\FOO C:\BAR

这是那些使用前需要三思的命令中的其中一个。毫无疑问,它自然有其价值。我仍然对转到每个子目录,删除个别文件,检查每个子目录的内容,一次删除一个子目录, 然后再跳转到上一层目录,重复上述过程的乏味而记忆犹新。DELTREE 在你需要时是非常省时。但是我从不会将其用于日常维护,因为一此失误都能造成重大的损失。

格式化一个硬盘驱动器

FORMAT 命令也可以用于准备一个空白的硬盘驱动器来将文件写入其中。这将格式化 D: 驱动器:

C:\>FORMAT D:

复制文件

COPY 命令,顾名思义,将文件从一个位置复制到另一个位置。所需要的参数是:将要被复制的文件、要将其复制到的路径和文件。开关选项包含:

  • /Y 当一个文件要被覆盖时,避免出现提示。
  • /-Y 当一个文件要被覆盖时,需要出现提示。
  • /V 验证副本的内容。

这将从 C: 上的工作目录中复制文件 MYFILE.TXTD: 驱动器的根目录,并将其重命名为 EXAMPLE.TXT

C:\>COPY MYFILE.TXT D:\EXAMPLE.TXT

这将从 C: 上的工作目录中复制文件 EXAMPLE.TXTC:\DOCS\ 目录,接下来验证文件的内容来确保副本是完整的:

C:\>COPY EXAMPLE.TXT C:\DOCS\EXAMPLE.TXT /V

你也可以使用 COPY 命名来合并和追加文件。这个命令将合并两个文件 MYFILE1.TXTMYFILE2.TXT ,并将其放置到一个新的名称为 MYFILE3.TXT 的文件之中:

C:\>COPY MYFILE1.TXT+MYFILE2.TXT MYFILE3.TXT

使用 XCOPY 复制目录

XCOPY 命令将复制整个目录以及它们的所有的子目录和这些子目录中包含的所有的文件。参数是将要复制的文件和其路径,以及将要复制到的目的地。重要的开关选项是:

  • /S 复制当前目录及其子目录中的所有文件。
  • /E 复制子目录,即使它们是空的。这个选项必须和 /S 一起使用。
  • /V 验证其所制作的副本。

这是一个非常强大和有用的命令,尤其是用于备份目录或整个硬盘驱动器。

这个命令将复制目录 C:\DOCS 的全部内容,包括所有的子目录及其内容(除了空的子目录以外),并将其放置到驱动器 D: 的目录 D:\BACKUP\DOCS\ 之中:

C:\>XCOPY C:\DOCS D:\BACKUP\DOCS\ /S

使用 FreeDOS

FreeDOS 是一个有趣的、轻量的、开源的操作系统。不管你正在使用它来更新你的主板的固件,还是给予旧计算机新生,它都能提供很多有用的实用程序,可以使你能够很好地使用它工作。学习 FreeDOS 的基本知识。你都可能会被它的多才多艺所惊讶。


via: https://opensource.com/article/21/4/freedos-commands

作者:Kevin O'Brien 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

学习如何使用 FDCONFIG.SYS 来配置 FreeDOS 。

 title=

FreeDOS 是主配置文件是在根目录中的名称为 FDCONFIG.SYS 的文件。这个文件包含一系列的行,每行都设置一个诸如 LASTDRIVE=ZFILES=40 的值。例如,在 FreeDOS 1.3 RC4 中的默认 FDCONFIG.SYS ,看起来像这样:

SET DOSDIR=C:\FDOS

!COUNTRY=001,858,C:\FDOS\BIN\COUNTRY.SYS
!LASTDRIVE=Z
!BUFFERS=20
!FILES=40
!MENUCOLOR=7,0

MENUDEFAULT=1,5
MENU 1 - Load FreeDOS with JEMMEX, no EMS (most UMBs), max RAM free
MENU 2 - Load FreeDOS with JEMM386 (Expanded Memory)
MENU 3 - Load FreeDOS low with some drivers (Safe Mode)
MENU 4 - Load FreeDOS without drivers (Emergency Mode)

12?DOS=HIGH
12?DOS=UMB
12?DOSDATA=UMB
1?DEVICE=C:\FDOS\BIN\JEMMEX.EXE NOEMS X=TEST I=TEST NOVME NOINVLPG
234?DEVICE=C:\FDOS\BIN\HIMEMX.EXE
2?DEVICE=C:\FDOS\BIN\JEMM386.EXE X=TEST I=TEST I=B000-B7FF NOVME NOINVLPG
34?SHELL=C:\FDOS\BIN\COMMAND.COM C:\FDOS\BIN /E:1024 /P=C:\FDAUTO.BAT
12?SHELLHIGH=C:\FDOS\BIN\COMMAND.COM C:\FDOS\BIN /E:1024 /P=C:\FDAUTO.BAT

但是,这些指令行都表示什么意思?为什么一些指令行有一个问号(?)或一个叹号(!),而其它的命令行却没有?

一个简单的配置

让我们从一个简单的配置开始,像这样,我们就可以看到我们的配置做了什么。做出这个非常简单的 FDCONFIG.SYS 文件:

LASTDRIVE=Z
BUFFERS=20
FILES=40
DEVICE=C:\FDOS\BIN\HIMEMX.EXE
SHELL=C:\FDOS\BIN\COMMAND.COM C:\FDOS\BIN /E:1024 /P=C:\FDAUTO.BAT

这个配置文件仅包含几个指令:

  1. LASTDRIVE=Z
  2. BUFFERS=20
  3. FILES=40
  4. DEVICE=C:\FDOS\BIN\HIMEMX.EXE
  5. SHELL=C:\FDOS\BIN\COMMAND.COM C:\FDOS\BIN /E:1024 /P=C:\FDAUTO.BAT

第一行指令告诉 FreeDOS 在存储器中保留多少驱动器字母。(DOS 使用字母来表示附属于系统的每个驱动器,LASTDRIVE=Z 表示预留从 AZ 的所有驱动器字母)。 LASTDRIVE 会影响系统可以识别的 逻辑驱动器 的数量。你可能没有任何的逻辑驱动器;FreeDOS 安装器不会默认设置这些逻辑驱动器。在任何情况下,在任何 FreeDOS 系统上设置 LASTDRIVE=Z 都是没有害处的。

BUFFERS 行设置文件缓冲区预留存储器。缓冲区 有助于加速某些需要存储空间的进程,例如复制文件。如果你为 BUFFERS 设置一个较大的值,那么 FreeDOS 将预留更多的存储器。同理反之。大多数的用户将会设置其为 BUFFERS=20BUFFERS=40 ,取决于他们在系统上读写文件的频率。

FILES 设置决定 DOS 允许你一次打开多少文件。如果你运行的一个应用程序需要一次打开很多文件,例如打开一个谱系数据库,你可能需要为 FILES 设置一个较大的值。对于大多数的用户来说,FILES=40 是一个合理的值。

DEVICE 是一个特殊的指令,用于加载 设备驱动器 。DOS 需要针对某些硬件或配置文件的设备驱动器。这行 DEVICE=C:\FDOS\BIN\HIMEMX.EXE 来加载 HimemX 设备驱动,这样,DOS 可以利用超出前 640 KB 的扩展存储器。

最后的指令行告诉 FreeDOS 的内核在哪里找到命令行 shell 。默认情况下,内核将从 COMMAND.COM 开始查找 shell ,但是你可以使用 SHELL 指令来更改它。在这个示例中, SHELL=C:\FDOS\BIN\COMMAND.COM 说明 shell 是 COMMAND.COM 程序,位于 C 驱动器上的 \FDOS\BIN 目录之中。

SHELL 结尾处的其它文件表示选项为 COMMAND.COM 的 shell 。FreeDOS 的 COMMAND.COM 支持一些启动选项来修改它的行为,包括:

  • C:\FDOS\BINCOMMAND.COM 程序的完整的路径
  • /E:1024:环境(E)大小,以字节为单位。/E:1024 告诉 COMMAND.COM 来预留 1024 字节,或者说是 1 KB ,来存储它的环境变量。
  • /P=C:\FDAUTO.BAT/P 选项表示 shell 是一个永久性的(P)shell ,因此用户不能通过输入 EXIT 来退出 shell(附加文本 =C:\FDAUTO.BAT 告诉 COMMAND.COM 在启动时执行 C:\FDAUTO.BAT 文件,而不再执行默认的 AUTOEXEC.BAT 文件)

通过这个简单的配置文件,你应该能够理解 FreeDOS 1.3 RC4 安装的 FDCONFIG.SYS 文件中的一些东西。

启动菜单

FreeDOS 支持一种有序的功能:在一个系统上使用多个配置文件,使用一个“启动菜单”来选择你想要的配置。FDCONFIG.SYS 文件包含一些定义菜单的行:

!MENUCOLOR=7,0

MENUDEFAULT=1,5
MENU 1 - Load FreeDOS with JEMMEX, no EMS (most UMBs), max RAM free
MENU 2 - Load FreeDOS with JEMM386 (Expanded Memory)
MENU 3 - Load FreeDOS low with some drivers (Safe Mode)
MENU 4 - Load FreeDOS without drivers (Emergency Mode)

MENUCOLOR 指令定义启动菜单的文本颜色和背景颜色。这些值通常在 0 到 7 的范围之内, 并代表这些颜色:

  • 0 黑色
  • 1 蓝色
  • 2 绿色
  • 3 品蓝
  • 4 红色
  • 5 品红
  • 6 棕色
  • 7 白色

因此,MENUCOLOR=7,0 的定义意味着显示一个黑色背景(0)白色文本(7)的菜单。如果你想使用一个蓝色背景白色文本,你可以将其定义为 MENUCOLOR=7,1

在行头部的叹号(!)意味着:不管你选择哪个菜单,这个指令都将会执行。

MENUDEFAULT=1,5 行告诉内核等待用户多长时间来选择启动菜单项,或者如果用户没有选择的话,使用那个默认菜单项。MENUDEFAULT=1,5 标示着系统将等待 5 秒钟;如果用户不在这段时间内尝试选择一个菜单的话,内核将选择启动菜单 “1” 。

 title=

在其后的 MENU 行至不同启动菜单配置的标签。它们是按顺序排列的,因此,菜单项目 “1” 是第一个,接下来的 “2” 是第二个,以此类推。

 title=

FDCONFIG.SYS 中的接下来的一行中,你将在一个问号(?)前看到一些数字。这标示“针对这几个数字的启动菜单项,使用这行命令”。例如,如果用户选择启动菜单项 “2”、“3” 或 “4” 的话,那么带有 234? 的这行命令才将加载 HimemX 设备驱动器。

234?DEVICE=C:\FDOS\BIN\HIMEMX.EXE

这里有很多方法来使用 FDCONFIG.SYS 以配置你的 FreeDOS 系统。我们在这里只介绍基本的东西,最重用的方法是定义你的 FreeDOS 内核设置。更多的信息,探索 FreeDOS 帮助系统(在命令行中输入 HELP)来学习如何使用 FreeDOS 的 FDCONFIG.SYS 选项:

  • SWITCHES:启动时处理过程行为
  • REM;:注释(在 FDCONFIG.SYS 中将被忽略)
  • MENUCOLOR:启动菜单文本颜色和背景颜色
  • MENUDEFAULT:启动菜单默认值
  • MENU:启动菜单选项
  • ECHOEECHO:显示信息
  • BREAK:设置打开或关闭扩展的 Ctrl+C 检查
  • BUFFERSBUFFERSHIGH:分配多少磁盘缓冲区
  • COUNTRY:设置国际化行为
  • DOS:告诉 FreeDOS 内核如何将其自身加载到存储器之中
  • DOSDATA:告诉 FreeDOS 加载内核到上位存储器之中
  • FCBS:设置文件控制块(FCB)的数量
  • KEYBUF:在存储器中重新指定键盘缓冲区
  • FILESFILESHIGH:一次可以打开多少个文件
  • LASTDRIVELASTDRIVEHIGH:设置可以使用的最后一个驱动器字母
  • NUMLOCK:设置打开或关闭键盘数字锁
  • SHELLSHELLHIGHCOMMAND:设置命令行 shell
  • STACKSSTACKSHIGH:添加堆栈以处理硬件中断
  • SWITCHAR:重新定义命令行选项开关字符
  • SCREEN:设置在屏幕上的行数
  • VERSION:设置向程序报告的 DOS 版本
  • IDLEHALT:激活节能功能,在某些系统上有用
  • DEVICEDEVICEHIGH:加载一个驱动程序到存储器之中
  • INSTALLINSTALLHIGH:加载一个 “存储器驻留”(TSR)程序
  • SET:设置一个 DOS 环境变量

以纯文本方式配置 FreeDOS

像 Linux 和 BSD 一样,FreeDOS 配置以纯文本的方式进行。不需要特殊指定的编辑工具,因此,深入研究,看看哪些选项最适合你。它很简单,但是功能很强大!


via: https://opensource.com/article/21/6/freedos-fdconfigsys

作者:Jim Hall 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

熟悉 FreeDOS 软件包管理器 FDIMPLES 。

在 Linux 上,你可能已经使用过 “软件包管理器” 来安装或移除软件包。例如,在 Debian Linux 上的默认软件包管理器是 deb 命令,在 Fedora Linux 上的默认软件包管理器是 dnf 命令。 但是你知道 FreeDOS 也有一个软件包管理器吗?

安装软件包

FreeDOS 1.3 RC4 发行版包含了很多极好的你可以使用的程序和应用程序。不过,我们不会默认安装其中的全部的程序 —— 我们不想过度地填充你的硬盘驱动器空间,尤其是在一个较老的系统上,可能仅有几百兆字节容量的硬盘驱动器。当你安装 FreeDOS 时,如果你选择 “Plain DOS system” 选项,你将发现你的 FreeDOS 系统是非常小的(大约 20 MB 大小)。

不过,要安装新的软件包很容易。在命令行中运行 FDIMPLES 程序。因为 DOS 是 不区分大小写 的,所以,你可以使用大写字母或小写字母来输入这个命令: fdimples 。(fdimplesFDIMPLESFDImples 等同)

fdimples

在 FreeDOS 1.3 RC4 上的 FDIMPLES 软件包管理器(运行在 QEMU 之中)(Jim Hall, CC-BY SA 4.0

FDIMPLES 是 "FreeDOS Installer - My Package List Editor Software" 的首字母缩略词,是一个交互式软件包管理器。FDIMPLES 读取安装介质来识别可以安装或移除的软件包。如果你看到一个不同的菜单,它显示 “Installed!” ,但是,不让你安装其它的软件的话,请检查你系统中是否有 FreeDOS 的 CD-ROM 的安装介质。在物理机器上,你将需要将 CD-ROM 插入 CD-ROM 驱动器;在诸如 QEMU 或 VirtualBox 之类的虚拟机器上,你需要将安装 FreeDOS 的 CD-ROM 的安装介质与虚拟机器关联在一起。

fdimples installed

如果你仅看到一条 “Installed!” 的信息,检查 CD-ROM 是否已经加载(Jim Hall, CC-BY SA 4.0

让我们假设你想安装一些可以让你听音乐文件或其它声音文件的软件。使用向上箭头和向下箭头按键来导航到菜单中的 声音工具 项。这是一个针对声音和音乐程序的 软件包组

fdimples sound

在 FDIMPLES 中突出显示声音软件包组(Jim Hall, CC-BY SA 4.0

要选择这个组中的所有软件包,在你的键盘上按下空格键。如果你决定安装这个组中的某个软件包,按下 Tab 按键来移动到 软件包列表 方框面板,接下来使用空格键来选择每个软件包。

fdimples sound select

通过按下空格键来选择一个组中的所有的软件包(Jim Hall, CC-BY SA 4.0

你可以继续选择你想要安装的其它的软件包或软件包组。当你选择好一切的东西后,使用 “Tab” 按键来高亮显示 “OK” 按键,并按下空格键按键。

fdimples sound select ok

当你准备好安装时,突出显示 “Ok” 按钮(Jim Hall, CC-BY SA 4.0

FDIMPLES 接下来会安装你所选择的所有的软件包。如果你仅选择几个小型的软件包,这可能只需要花费片刻的时间,或者,如果你要求安装很多大型的软件包,它可能会花费数分钟的时间。当 FDIMPLES 安装每个软件包时,FDIMPLES 会输出安装状态。在安装完后,FDIMPLES 退出到命令行之中,以便你可以回去继续工作。

fdimples sound install done

当 FDIMPLES 安装软件包时,FDIMPLES 会显示安装过程,并在完成安装后自动地退出(Jim Hall, CC-BY SA 4.0

移除软件包

如果你安装了一个软件包,但是后来发现你不想要它了怎么办?在 FDIMPLES 中移除软件包也同样容易。

就像安装软件包一样,启动 FDIMPLES ,使用箭头键导航到包含你想要移除的软件包的组。例如,如果我想卸载一些我先前安装的音乐播放器软件包,我将导航到 “Sound Tools” 软件包组。

fdimples sound select

导航到你想要移除的软件包组(Jim Hall, CC-BY SA 4.0

为一次移除整个软件包组,你可以在你想要移除的软件包组上按下空格键来取消选择它们。但是,在这里让我们假设我只是想移除几个我不需要的软件包,像音频 CD 播放器 “CDP”。(我没有任何的真实的音乐 CD 光盘)。为移除 CDP ,敲击 Tab 按键来移动到软件包列表方框面板,接下来使用空格键来取消选择 CDP 软件包。这会在该软件包上移除 “X” 标志。

fdimples unselect cdp

取消选择一个软件包来移除它(Jim Hall, CC-BY SA 4.0

你可以继续取消选择你想要移除的其它的软件包或软件包组。当你选择一切的东西后,使用 Tab 按键来突出显示 “OK” 按钮,并按下空格键按键。FDIMPLES 将移除你取消选择的软件包,然后自动地返回到命令行之中。

fdimples cdp removed

FDIMPLES 移除软件包,然后返回到命令行之中(Jim Hall, CC-BY SA 4.0

在 FreeDOS 中。我们包含很多的软件包,遍及各种各样的软件包组。使用 FDIMPLES 来安装你需要的软件。请随意实验!如果你决定你不想要保留一个软件包了,你可以移除它,并为其它的软件包来释放所占用的磁盘空间。


via: https://opensource.com/article/21/6/freedos-package-manager

作者:Jim Hall 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这里是如何在不使用安装程序的情况下来手动设置你的 FreeDOS 系统。

 title=

大多数的人应该能够使用安装程序来非常容易地安装 FreeDOS 1.3 RC4 。FreeDOS 安装程序会先询问几个问题,然后处理剩余的工作,包括为 FreeDOS 制作安装空间和使系统可启动。

但是,如果安装程序不适合你怎么办?或者,你更喜欢 手动 设置你的 FreeDOS 系统,而不喜欢使用安装程序怎么办?使用 FreeDOS ,你也可以做到这些!让我们在不使用安装程序的情况下逐步走完安装 FreeDOS 的步骤。我将使用 QEMU 虚拟机的一个空白的硬盘驱动器镜像来完成所有的步骤。我使用这个 Linux 命令来创建了一个 100 MB 的硬盘驱动器镜像:

$ qemu-img create freedos.img 100M

我下载了 FreeDOS 1.3 RC4 的 LiveCD ,并将其命名为 FD13LIVE.iso ,它提供了一个 “身临其境” 的环境,我可以在其中运行 FreeDOS ,包括所有的标准工具。大多数用户也使用 LiveCD 自带的常规安装程序来安装 FreeDOS 。但是,在这里我将仅使用 LiveCD ,并从其命令行中使用某些类型的命令来安装 FreeDOS 。

我使用这个相当长的 QEMU 命令来启动虚拟机,并选择 “Use FreeDOS 1.3 in Live Environment mode” 启动菜单项:

$ qemu-system-x86_64 -name FreeDOS -machine pc-i440fx-4.2,accel=kvm,usb=off,dump-guest-core=off -enable-kvm -cpu host -m 8 -overcommit mem-lock=off -no-user-config -nodefaults -rtc base=utc,driftfix=slew -no-hpet -boot menu=on,strict=on -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny -msg timestamp=on -hda freedos.img -cdrom FD13LIVE.iso -device sb16 -device adlib -soundhw pcspk -vga cirrus -display sdl -usbdevice mouse

 title=

选择 "Use FreeDOS 1.3 in Live Environment mode" 来启动 LiveCD(Jim Hall, CC-BY SA 4.0

这个 QEMU 命令行包含大量的选项,乍看可能会让你迷糊。因为你完全使用命令行选项配置 QEMU ,所以在这里有很多东西需要审查。但是,我将简单地重点说明几个重要的选项:

  • -m 8:设置系统存储器(RAM)为 8 MB
  • -boot menu=on,strict=on:使用一个启动菜单,这样,我可以选择从 CD-ROM 镜像或硬盘驱动器镜像启动
  • -hda freedos.img:使用 freedos.img 作为硬盘驱动器镜像
  • -cdrom FD13LIVE.iso:使用 FD13LIVE.iso 作为 CD-ROM 镜像
  • -device sb16 -device adlib -soundhw pcspk:定义计算机带有一个 SoundBlaster16 声卡、AdLib 数字音乐卡、PC 扬声器模拟器(如果你想玩 DOS 游戏的话,这些模拟器很有用)
  • -usbdevice mouse:将用户的鼠标识别为一个 USB 鼠标(在 QEMU 窗口中单击以使用鼠标)

对硬盘驱动器进行分区

你可以从 LiveCD 使用 FreeDOS 1.3 RC4 ,但是,如果你想安装 FreeDOS 到你的计算机中,你需要先在硬盘驱动器上制作安装空间。这需要使用 FDISK 程序来创建一个 分区

从 DOS 命令行中,输入 FDISK 来运行 分区 设置程序。FDISK 是一个全屏交互式程序,你只需要输入数字来选择菜单项。从 FDISK 的主菜单中,输入 1 来在驱动器上创建一个 DOS 分区,然后在接下来的屏幕上输入 1 来创建一个 “主” DOS 分区。

 title=

选择 1 来创建一个分区(Jim Hall, CC-BY SA 4.0

 title=

在接下来的菜单上选择 1 来制作一个主分区(Jim Hall, CC-BY SA 4.0

FDISK 会询问你是否想要使用全部的硬盘空间大小来创建分区。除非你需要在这个硬盘驱动器上和另外一个操作系统(例如 Linux)共享硬盘空间,否则,对于这个提示,你应该回答 Y

FDISK 创建新的分区后,在 DOS 能够识别新的分区信息前,你将需要重新启动 DOS 。像所有的 DOS 操作系统一样,FreeDOS 仅在其启动时识别硬盘驱动器信息。因此,如果你创建或删除任何的磁盘分区的话,你都将需要重新启动 FreeDOS ,只有这样做,FreeDOS 才能识别到更改的分区信息。FDISK 会提醒你重新启动,因此,你是不会忘记的。

 title=

你需要重新启动以识别新的分区(Jim Hall, CC-BY SA 4.0

你可以通过停止或重新启动 QEMU 虚拟机来重新启动 FreeDOS,但是我更喜欢在 FreeDOS 命令行中使用 FreeDOS 的高级电源管理(FDADPM)工具来重新启动 FreeDOS 。为了重新启动,输入命令 FDADPM /WARMBOOT ,FreeDOS 将自动重新启动。

对硬盘驱动器进行格式化

在 FreeDOS 重新启动后,你可以继续设置硬盘驱动器。创建磁盘分区是这个过程的“第一步”;现在你需要在分区上创建一个 DOS 文件系统 ,以便 FreeDOS 可以使用它。

DOS 系统使用字母 AZ 来识别“驱动器”。FreeDOS 将识别第一个硬盘驱动器的第一个分区为 C 驱动器,依此论推。你经常使用字母和一个冒号(:)来表示驱动器,因此我们在上面创建的新分区实际上是 C: 驱动器。

你可以在新的分区上使用 FORMAT 命令来创建一个 DOS 文件系统。这个命令带有一些选项,但是,我们将仅使用 /S 选项来告诉 FORMAT 来使新的文件系统可启动: S 意味着安装 FreeDOS “系统” 文件。输入 FORMAT /S C: 来在 C: 驱动器上制作一个新的 DOS 文件系统。

 title=

格式化分区来创建 DOS 文件系统(Jim Hall, CC-BY SA 4.0

使用 /S 选项,FORMAT 将运行 SYS 程序来传输系统文件。你将看到这是从 FORMAT 输出的一部分:

 title=

FORMAT /S 将使用 SYS 来使磁盘可启动(Jim Hall, CC-BY SA 4.0

安装软件

在使用 FDISK 创建了一个新的分区,并使用 FORMAT 创建了一个新的文件系统后, 新的 C: 驱动器基本上是空的。此时,C: 驱动器仅包含一份内核和 COMMAND.COM 命令行 shell 的副本。为使新的磁盘可以执行一些有用的操作,我们需要在其上安装软件。这是手动安装过程的最后步骤。

FreeDOS 1.3 RC4 LiveCD 包含所有的你可能希望在新的系统上所要安装的软件。每个 FreeDOS 程序都是一个单独的 “软件包” ,它实际上只是一个 Zip 档案文件。建立标准 DOS 环境的软件包存储在 LiveCD 上 PACKAGES 目录下的 BASE 目录之中。

你可以一次一个的将其中的每一个软件包都 “解压缩” 到硬盘驱动器来完成安装。在 Base 组中有 62 个单独的软件包,如果每次安装一个软件包,这可能会花费非常多的时间。不过,你可以运行一个只有一行的 FOR “循环” 命令来 UNZIP 每个程序。接下来 FreeDOS 可以为你 “解压缩” 所有的软件包。

FOR 循环的基本用法中提及的一个单个字母变量(让我们使用 %F),稍后,FreeDOS 将使用该字母变量来 “填充” 文件名称。FOR 还需要括号中的一个文件列表,这个命令会对每个文件都运行一次。用来解压一系列的 Zip 文件的语法看起来像这样:

FOR %F IN (*.ZIP) DO UNZIP %F

这将提取所有的 Zip 文件到当前目录之中。为提取或 UNZIP 文件到一个不同的位置,在 UNZIP 命令行结尾处使用 -d (“目的地”) 选项。对于大多数的 FreeDOS 系统来说,你应该安装软件包到 C:\FDOS 目录中:

 title=

解压缩所有的基本软件包来完成安装 FreeDOS(Jim Hall, CC-BY SA 4.0

FreeDOS 会处理剩余的工作,安装所有的 62 个软件包到你的系统之中。这可能会花费几分钟的时间,因为 DOS 在处理很多单个的文件时会很慢,这个命令需要提取 62 个 Zip 文件。如果我们使用单个的 BASE.ZIP 档案文件的话,安装过程可能会运行地更快,但是使用软件包的话,在你选择想要安装或不安装软件包时会提供更多的灵活性。

 title=

在安装所有的基本软件包后(Jim Hall, CC-BY SA 4.0

在我们安装完所有的东西后,使用 FDADPM /WARMBOOT 来重新启动你的系统。手动安装意味着你的新 FreeDOS 系统没有常见的 FDCONFIG.SYS 配置文件,因此,当 FreeDOS 在启动时,它将假设一些典型的默认值。因为没有 AUTOXEC.BAT 文件,FreeDOS 也会提示你时间和日期。

 title=

在手动安装后,重新启动 FreeDOS(Jim Hall, CC-BY SA 4.0

大多数的用户应该能够使用比较用户友好的过程来在一台新的计算机上安装 FreeDOS 。但是如果你想自己使用“古老的”方法来安装它,那么你可以手动运行安装步骤。这会提供一些额外的灵活性和控制权,因为是你自己安装的一切。现在你知道如何安装它了。


via: https://opensource.com/article/21/6/install-freedos-without-installer

作者:Jim Hall 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

现在,很多嵌入式系统都是在 Linux 上运行的。但是,在很久很久以前,嵌入式系统要么在一个定制的专有的平台上运行,要么在 DOS 上运行。

 title=

FreeDOS 网站 宣称,大多数人使用 FreeDOS 来完成三项主要任务:

  1. 玩经典的 DOS 游戏
  2. 运行老式的 DOS 软件
  3. 运行一款嵌入式系统

但是,运行一个“嵌入式”系统的意义是什么呢?

嵌入式系统基本上是一款非常小的系统,专用于运行一个特定的任务。你可以把现在的嵌入式系统当作是 物联网(IoT)的一部分,这包括传感器、恒温器和门铃摄像头。现在,很多嵌入式系统都是在 Linux 上运行的。

但是,在很久很久以前,嵌入式系统要么在一个定制的专有的平台上运行,要么在 DOS 系统上运行。在现在,一些基于 DOS 的嵌入式系统仍然在运行,例如,收银机或电话专用交换机(PBX)系统。举个例子来说,在 2017 年,酷爱列车的人发现一个正在运行 FreeDOS 的俄罗斯的电动列车控制系统 (俄语: САВПЭ),它使用特殊的软件来控制和监控郊区列车的线路,并发布乘客通告。

在 DOS 上建立一个嵌入式系统需要定义一个最小化的 DOS 环境来运行单个应用程序。幸运的是,设置一个最小化的 FreeDOS 环境是非常容易的。从技术上来说,启动 FreeDOS 并运行 DOS 应用程序仅需要内核和一个 FDCONFIG.SYS 配置文件。

安装一款最小化的系统

我们可以使用 QEMU 仿真器来模拟一个专用的、最小化的 FreeDOS 系统,并给它分配很少的资源。为了更准确地反映一个嵌入式系统,我将定义一个只有 8 MB 的存储器和仅仅有 2 MB 的硬盘驱动器的虚拟机。

为创建这个微小的虚拟硬盘,我将使用这个 qemu-img 命令来定义一个 2M 的文件:

$ qemu-img create tiny.img 2M
Formatting 'tiny.img', fmt=raw size=2097152

下面的这行命令定义了一个 32 位的 “i386” CPU、8MB 的存储器,使用 2MB 的 tiny.img 文件作为硬盘驱动器镜像,使用 FreeDOS 1.3 RC4 LiveCD 作为 CD-ROM 介质。我们也将机器设置为从 CD-ROM 驱动器启动(-boot order=d),尽管我们只需要用它来安装系统。在我们完成所有的设置后,我们将从该硬盘启动完成的嵌入式系统:

qemu-system-i386 -m 8 -hda tiny.img -cdrom FD13LIVE.iso -boot order=d

使用 “ 现场环境模式 Live Environment mode ” 来启动系统,这将为我们提供一个正在运行的 FreeDOS 系统,我们可以使用它来将一个最小化的 FreeDOS 转移到硬盘上。

 title=

启动到 LiveCD 环境之中(Jim Hall, CC-BY SA 4.0

我们需要在虚拟硬盘驱动器上为我们的程序创建一个分区。为此,从命令行中运行 FDISK 程序。FDISK 是 FreeDOS 上的一个标准的 磁盘分区 实用程序。使用 FDISK 来创建一个单个硬盘驱动器分区,占用整个(2 MB)硬盘驱动器。

 title=

FDISK,在创建 2 MB 分区后(Jim Hall, CC-BY SA 4.0

但是,在你重新启动 FreeDOS 之前,FreeDOS 不会看到新的硬盘驱动器分区 — FreeDOS 仅在启动时读取硬盘详细信息。退出 FDISK ,并重新启动 FreeDOS 。

在重新启动后,你需要在新的硬盘驱动器上创建一个 DOS 文件系统。因为这里只有一个虚拟硬盘,FreeDOS 将识别其为 C: 驱动器。你可以使用 FORMAT 命令来在 C: 驱动器上创建一个 DOS 文件系统。使用 /S 选项将把操作系统文件(内核,外加一个 COMMAND.COM shell 的副本)转移到新的驱动器上。

 title=

格式化新的驱动器来创建一个 DOS 文件系统(Jim Hall, CC-BY SA 4.0 你已经创建了硬盘驱动器并将其格式化,现在,你可以安装应用程序,这些应用程序是将会在新安装的嵌入式系统上运行的。

安装专用的应用程序

嵌入式系统实际上只是一个运行在一个专用系统上的单一用途的应用程序。这些应用程序通常是为其将要控制的系统而自定义构建的,例如,一台收银机、显示终端、或控制环境。在这个演示中,让我们使用一个来自 FreeDOS 1.3 RC4 安装光盘中的程序。它需要足够小,以适应我们为其创建的 2 MB 微型硬盘驱动器。这可以是任何东西,所以,为了好玩,让我们把它变成一个游戏。

FreeDOS 1.3 RC4 包含一些有趣的游戏。我喜欢的一个游戏是一个名称为 “Simple Senet” 的棋类游戏。它是一个基于 Senet 的古埃及棋类游戏。游戏的细节对这个演示并不重要,我们将安装它,并将其设置为嵌入式系统的专业应用程序。

为安装应用程序,在 FreeDOS 1.3 RC4 LiveCD 上,进入 \PACKAGES\GAMES 目录。你将在其中看到一个很长的软件包列表,而我们想要的 SENET.ZIP

 title=

来自 FreeDOS 1.3 RC4 的一个游戏软件包列表(Jim Hall, CC-BY SA 4.0

为解压缩 “Simple Senet” 软件包到虚拟硬盘上,使用 UNZIP 命令。所有的 FreeDOS 软件包都是 Zip 文件,因此,你可以使用任意与 Zip 兼容的档案实用程序来管理它们。FreeeDOS 1.3 RC4 包含创建 Zip 档案文件的 ZIP 和提取 Zip 档案文件的 UNZIP 。它们都来自 Info-Zip 项目

UNZIP SENET.ZIP -d C:\FDOS

通常,使用 UNZIP 来提取 Zip 文件到当前目录中。在命令行结尾的 -d C:\FDOS 选项将告诉 UNZIP 来提取 Zip 文件到 C:\FDOS 目录之中。(-d 指的是“目的地”)

 title=

解压缩 Simple Senet 游戏(Jim Hall, CC-BY SA 4.0

为了让嵌入式系统启动时运行 “Simple Senet” 游戏,我们需要告诉 FreeDOS 来使用 Senet 作为系统的 “shell” 。 默认的 FreeDOS 的 shell 是 COMMAND.COM 程序,但是,你可以在 FDCONFIG.SYS 内核配置文件中使用 SHELL= 指令来定义一个不同的 shell 程序。我们可以使用 FreeDOS 的 Edit 来创建新的 C:\FDCONFIG.SYS 文件。

 title=

(Jim Hall, CC-BY SA 4.0

如果你需要定义其它的参数来支持嵌入式系统,你可以将其添加到 FDCONFIG.SYS 文件之中。例如,你可能需要使用 SET 动作来设置环境变量,或者使用 FILES=BUFFERS= 语句来调整 FreeDOS 内核。

运行嵌入式系统

在全面地完成嵌入式系统的定义之后,现在,我们可以重新启动计算机来运行嵌入式应用程序。运行一个嵌入式系统通常仅需要有限的资源,因此,在这个演示中,我们需要调整 QEMU 命令行来只从硬盘驱动器(-boot order=c)中启动,而不再定义一个 CD-ROM 驱动器:

qemu-system-i386 -m 8 -hda tiny.img -boot order=c

当 FreeDOS 内核启动时,它将读取 FDCONFIG.SYS 文件以获取启动参数。然后,它将使用 SHELL= 行的定义来运行 shell 。这将自动地运行 “Simple Senet” 游戏。

 title=

作为一个嵌入式系统运行 Simple Senet(Jim Hall, CC-BY SA 4.0

我们已经使用了 “Simple Senet” 来演示如何在 FreeDOS 上设置一个嵌入式系统。根据你的需要,你可以使用任何你喜欢的独立应用程序。在 FDCONFIG.SYS 中使用 SHELL= 行将其定义为 DOS 的 shell ,FreeDOS 将在启动时自动地启动该应用程序。

不过,在这里有一个限制。嵌入式系统通常不需要退回到一个命令行提示符之中,因此这些专用应用程序通常不允许用户退出到 DOS 之中。如果你设法退出了嵌入式应用程序,你可能会看到一个 “Bad or missing Command Interpreter” 的提示,你将需要在其中输入一个新的 shell 的完整路径。对于一个以用户为中心的桌面系统来说,这将是一个问题。但是在一个嵌入式系统上,它只专注执行一种工作的,那么,你也永远不需要退出嵌入式应用程序。


via: https://opensource.com/article/21/6/freedos-embedded-system

作者:Jim Hall 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出