/Stark-OS

A simple operating system in bochs

Primary LanguageC

pNvrCQ.png

OS Stark 项目文档

设计说明

OS Stark 以我的英文名字 Stark 命名。OS Stark 在《Orange’s:一个操作系统的实现》提供的源代码的基础上,扩展了控制台命令行操作,重构并实现了一个多目录文件系统,实现了用户权限系统,并在系统中设计了不少可玩性强、实用性高的用户级应用程序。

开发说明

操作系统 OS Stark 的开发环境为 Ubuntu 16.04 ( 32 bit ),可完美运行于bochs 2.6.5 上。经测试,更高版本的 Ubuntu ( 64 bit ) 及 MacOS 也可在 bochs 中运行该系统。 在开发过程中,使用 Github 作为源代码管理和版本控制平台。

项目成员

个人项目

系统构成

  • boot(引导)
  • kernel(内核)
  • command(应用集)
  • fs(文件系统)
  • lib(可用代码库)
  • include(头文件集)
  • mm(内存调度系统)

项目亮点

控制台(命令行)

在 Orange’s 源代码的 tty 基础上,我们实现了一个集成进程管理、文件系统的控制台系统。我们提供了大量命令,可输入 help 查询所有命令及其使用方法。

文件系统

在 Orange’s 提供的文件系统的基础上,我们重构了大量代码,实现了一个多目录的文件系统。Orange’s 提供了一个单目录的文件系统,且在系统重启后重建文件系统(即文件无法记忆),可用性极差。重构后的文件系统,引入了目录的概念,提供了新建目录,删除目录,新建文件,删除文件,显示文件列表,改变当前目录等 Linux 文件系统的基本功能。

类 VI 编辑器

除了提供基本的 read/edit 的文件读写操作,我们提供了一个实现各种基本功能的文本编辑器。文件以行为单位进行划分,可对行进行插入、删除、追加、剪切、复制、粘贴、清除等操作,所有操作均可撤销。

用户权限系统

OS Stark 还实现了用户权限系统,包括用户登录/登出、添加新用户、查看权限、修改权限、修改密码、删除用户等操作。高权限用户可为低权限用户分配权限及其他管理操作。系统初始化时会提供一个唯一的超级管理员账户:admin admin

应用程序

OS Stark 提供了计算器、24 点游戏、推箱子游戏三个用户级应用程序。

操作说明

pUp7FK.png

login

按系统提示依次输入账号与密码。初始化硬盘镜像后可输入 newadmin。其他操作基于用户已登录的前提,所以 login 并非指令。

logout

登出。

cd [subdir]

切换当前目录至指定子目录。子目录名不带/_

cd ..

切换当前目录至上级目录。

ls

列出当前目录下的文件和目录。

mk [filename] [text]

在当前目录下新建文件。text 可选。filename 不含特殊字符和空格。Text 将被加入该文件。

mkdir [dirname]

在当前目录下新建目录。dirname 为目录名。

rm [filename]

移除当前目录下的指定文件。

rmdir [dirname]

移除当前目录下的指定目录。

read [filename]

简易读取指定文件内容并打印在屏幕上。

edit [filename] [text]

简易修改指定文件内容,即将 text 覆写入 filename。

vi [filename]

使用文本编辑器打开指定文件,具体操作说明请查看**【notepad】**条目。

permission

查看当前用户的权限。

authorize [username] [permission_value]

给指定用户分配指定权限,当前用户权限必须高于指定用户原权限且分配的新权限不可高于或等于自身权限。

password [password] [newpassword]

修改当前用户密码。分别输入原密码和新密码。

rmuser [username]

删除指定用户。需保证自身权限高于指定用户权限。

adduser [username] [password]

添加新用户,当前用户权限需大于 1,新用户权限默认为 1。

proc

打印进程列表。

help

打印指令表。

pUpbWD.png

Applications

Calculator

计算器应用。指令名 calc

输入一个四则运算表达式即可返回结果。输入 q 退出应用程序。

24 Points Game

24 点游戏应用。指令名 24

系统随机产生四个数字,用户给出一个包含且仅包含这四个数字的四则运算表达式,使其运算结果为 24。 输入 q 退出应用,输入 c 切换题目。

Push Box Game

推箱子应用。指令名 box。 迷宫中,A 表示玩家,X 表示箱子,#表示墙壁。

输入 WSAD 可操控玩家上下左右移动,输入 Q 退出应用。

Notepad

指令表

insert [line] [text]

在第 line 行插入 text0 <= line <= max_line + 1

edit [line] [text]

覆盖第 line 行内容为 text0 <= line <= max_line

append [text]

在文件最后追加一行 text

delete [line]

删除第 line 行。

clear

清空所有内容。

copy [line]

复制第 line 行。

cut [line]

剪切第 line 行。

paste [line]

粘贴第 line 行。

save

保存文件并退出。

exit

放弃修改并退出。

help

指南。

pUpHJO.png pUpoo6.png

参考资料

  • 《Orange S:一个操作系统的实现》 于渊 电子工业出版社
  • 《Linux 命令大全》