検索
ホームページウェブフロントエンドjsチュートリアルJavaScript ベースのオペレーティング システムについて聞いたことがありますか? _JavaScript スキル

Node.js についてはほとんどの人が聞いたことがあると思いますが、NodeOS については聞いたことがありますか?そうです、NodeOS、Node.js で書かれたオペレーティング システムです。正直に言うと、NodeOS はハードウェア通信などのさまざまな低レベルのタスクを処理するために Linux カーネルを使用しますが、それ以外は Node.js を使用します。 NodeOS の開発は、「Node.js だけを使用してオペレーティング システムを作成できるか?」という単純な目標から 2 年前に始まりました。

Node.js だけを使用してオペレーティング システムを作成することは可能ですか?

このアイデアはどうでしょうか?

過去数年間で Node.js が大きく発展してきたのを私たちは見てきました。それをさらにクールなものにしてみませんか?たとえば、オペレーティング システムを作成するために使用します。

ユーザーに依存しない独立したファイル システム

NodeOS には興味深い機能が導入されています。すべてのユーザーが独立したファイル システムを持ち、シンプルなファイル システムでさまざまなタスクを実行します。 「ホーム ディレクトリ」は実際には自分のファイル システムのルートであるため、スーパー アクセス許可なしでソフトウェア パッケージをシステムにインストールできます。また、ソフトウェア パッケージはデフォルトでインストールされるため、何も構成する必要はありません。自分自身のホームディレクトリ。さらに、これにより、ハッカーがアカウントに侵入した場合でも、ユーザーがいる部分のみにアクセスできるため、最終的にシステム全体に影響を与えることができなくなります。

Node.js と NPM

考えてみてください。オペレーティング システムが Node.js を使用している場合、NPM で利用可能なすべてのパッケージも NodeOS パッケージであることを意味します。この記事の執筆時点では 210,000 を超えるパッケージがあり、毎秒増加しています。数年以内に NodeOS に 100 万個のアプリケーションが登場しても不思議ではありません。

Linux カーネルに基づく

これは大したことではないように思えるかもしれませんが、Linux はほとんどのサーバーで使用されているオペレーティング システムです。 NodeOS は Linux カーネルに基づいているため、他の Linux ディストリビューション用に開発されたアプリケーションを最小限の変更だけで使用できます。

悪いニュース

NodeOS が完成品になることを強く望んでいますが、まだ完成していません。サーバー オペレーティング システムに必要ないくつかの重要な機能がまだ欠けています。たとえば、ps、tail、nano、grep などを含む完全な BASH ツール セットがありません。さらに悪いことに、GUI がないため、デスクトップ オペレーティング システムとして使用することはできません。もちろん、欠けている機能の一部をほんの少しの JavaScript で実装することもできますが、現時点ではデフォルトでその機能が何もないのは残念です。

わかりました、NodeOS を試してもいいですか?

Docker を使用して を体験してください NodeOS を体験する最も簡単かつ迅速な方法は次のとおりです:

1. Mac OSX または Linux を実行しているコンピューター。おそらく Windows も実行していますが、試したことはありません。

2. ドッカー。
Docker をインストールしたら、NodeOS インスタンスを実行するのは簡単です。次のコマンドを実行するだけで、Docker がすべての魔法を実行します:

sudo docker run -t -i nodeos/nodeos


最容易、最快捷的体验 NodeOS 的方法是通过 Docker。

当你运行了上述命令,Docker 会自动从仓库下载 NodeOS 的镜像,并将其安装到一个虚拟环境中。安装好之后,会打开一个连接到 NodeOS 的 SSH 会话。

不用 docker 呢?
有些情况下你也许不能使用 Docker 来体验,或者是你想体验一下最新版本的 NodeOS 。在写作本文时,NodeOS 的镜像已经是两个月前生成的了,而开发版本则是六天前更新的。所以,如果你希望使用最新版本,你应该从源代码开始。这也不算很难,但是要花费一些时间。你 需要:

1、一台运行 Linux 的计算机。你可以在 OS X 上编译它,但是跨平台编译需要花费很多时间,对于 Windows 也如此。
2、Linux 编译构建相关的工具(make、g++、gcc、autoconf)。
3、Qemu。
4、时间,真的需要很多。
如果万事俱备,你就可以从源代码开始编译了:

1、使用下列命令编译: cd NodeOS 并 npm install。
2、我逐字引用了其官方文档的话:“拿上爆米花去看场电影吧,不开玩笑,真的。”,是的,它需要很多时间,做些有意思的事情去吧。
3、执行 bash npm start 来在 Qemu 中运行 NodeOS。
可以工作了吗?
当安装完成后,我们可以通过在 NodeOS 的 shell 中执行  ls命令来看看它是否工作了。输出类似如下:

[ 'etc', 'lib', 'lib64', 'root', 'bin', 'sys', 'usr', 'share', 'proc' ]

如果显示如上,说明一些基本的命令可以工作了。但是如果我们想要知道网卡地址呢?在 Linux 下,这个命令是  ifconfig ,让我们试试:

command not found: ifconfig

看起来没有 ifconfig 命令。这是因为 NodeOS 默认没有  ifconfig命令。现在怎么办?很简单,NodeOS 有一个集成的包管理器(类似 apt 或 yum) ,叫做 npkg,它是基于 Node 的 NPM 的,很容易使用。可以通过如下命令很方便的安装 ifconfig :

npkg install bin-ifconfig

如果一切正常, ifconfig 命令现在就可以在 shell 中使用了。我们再次试着执行一下,输出类似如下:(我替换了其中的 MAC 地址):

eth0: flags=8863 mtu 1500
 ether 01:23:45:67:89:ab 
 inet6 f0cd::ef01:0203:0405:181%en1 prefixlen 64 scopeid 0x5 
 inet 192.168.0.21 netmask 0xffffff00 broadcast 192.168.0.21
 nd6 options=1
 media: autoselect
 status: active

如果你的输出也类似如上,那说明它可以工作了。你已经成功地安装了你的第一个 NodeOS 应用: ifconfig。

它是可以工作了,然而我们可以用这个操作系统做什么呢?

如果我们只能拿这个用 Node.js 写的操作系统做到你在 Ubuntu 或其它 Linux 发行版上一样的(或更少的)事情,那它有什么价值?其实,整个事情中最有趣的地方是所有的东西都是 Node.js 开发的。这意味着我们可以只需要使用 Node.js 就可以开发我们的应用了。比如,NodeOS 里没有默认实现的 man 命令,它用于显示其它命令的帮助信息。不用担心,实现它很简单。

使用 Node.js 构建一个 NodeOS 应用

首先让我们来安装一个叫做 Hipster 的文本编辑器,以便我们可以创建和编辑文件。执行如下命令: npm install -g hipster@0.15.0。这个文本编辑器很简单,除了用作文本编辑之外啥也干不了,不过对于我们来说足够了。

用 Hipster 创建文件很简单,运行 hip filename即可,如: hip package.json。要保存文件请按下 Ctrl + s ,退出按下 Ctrl + q。

在这里,我们使用了一个 NodeOS 的主开发人员所开发的代码,我自己并没有真的去开发这个应用。我们例子中的原始代码可以在 node-bin-man Git 仓库中找到。

让我们回过头来创建我们的第一个 NodeOS 应用。像每个 Node.js 应用(或 NPM 包)一样,我们从创建一个 package.json 文件开始,内容如下:

{
 "name": "bin-man",
 "version": "0.0.1",
 "description": "Format and display manual pages",
 "bin": {
 "man": "man.js"
 },
 "repository": "https://github.com/groundwater/node-bin-man",
 "author": "groundwater",
 "license": "MIT",
 "dependencies": {
 "blessed": "~0.0.22"
 }
}

这些参数 name、version、 author、 repository、 license和 description 是其意自明的。这个 bin 集合是一个 JSON 的键值对对象,包含了命令名及其关联的 JavaScript 文件。在我们的例子中, man 命令关联到  man.js文件。而  dependencies集合包含了这个应用所需要的 NPM 包的列表。在我们的例子中,代码的作者包含了 Blessed 包,这是一个类 curses 的库,可以让 Node.js 支持高级终端界面的 API。

现在我们进入了主要的部分,实际的代码。

#!/usr/bin/env node

这个部分叫做释伴(shebang)。NodeOS 实际上并不需要它,但是它用于告诉操作系统如何执行下面的代码。在这里的意思是,它告诉系统下面的每行代码都需要通过  /usr/bin/env node命令来解释执行。

var fs = require('fs');
var blessed = require('blessed');

像在 Node.js 中一样, require() 函数加载选定的包到内存中,并将其保存为特定的变量。

var arg = process.argv[2] || 'bin-man';

man 命令的标准行为是如果没有指定要查看的命令时,就显示它自己的帮助信息。在我们的代码示例中也一样:如果没有给出第二个参数(第一个参数是 man 本身),那么该参数的默认值是 bin-man。

var path = process.env.HOME + "/lib/node_modules/" + arg + "/README.md";

try{
 var readme = fs.readFileSync(path, 'utf-8');
}catch(e){
 console.log('No README.md for Package ',arg);
 process.exit(-1);
}

在这里,程序检查给定的应用是否有一个 readme 文件。在 NodeOS 中,每个应用的安装路径是其主目录(/)下的 lib/node_modules。如果 README.md 文件存在,就将其内容保存到 readme变量中。否则,显示一个错误信息并退出。

// Create a screen object.
var screen = blessed.screen();

var box = blessed.box({
 content: readme,
 alwaysScroll:true,
 scrollable: true,
});

// Append our box to the screen.
screen.append(box);

Blessed 有一个非常简单的 API,要显示一个文件的内容很容易,只需要创建一个  box ,然后载入内容即可。

screen.key(['escape', 'q', 'C-c'], function(ch, key) {
 return process.exit(0);
});

现在,让我们找个退出  man 应用的方法。我们组合了  escape、 q 或 emacs 风格的 C-c 来退出应用。

screen.key(['space','f','j','n'], function(ch, key) {
 box.scroll(box.height);
 screen.render();
});

screen.key(['down'], function(ch, key) {
 box.scroll(1);
 screen.render();
});

screen.key(['up'], function(ch, key) {
 box.scroll(-1);
 screen.render();
});

screen.key(['b','k','p'], function(ch, key) {
 box.scroll(-box.height);
 screen.render();
});

我们使用方向键来上滚和下滚,用 space、 f、 j 或 n 向下翻页,b、 k 或 p 向上翻页。

box.focus();
screen.render();

最后,我们让应用将输入焦点放到  box ,我们在这里创建和渲染所有内容。

把上面编辑的这个文件存放到  /lib/node_modules/bin-man 目录下(名字是 man.js),并加一个简单的  README.md ,类似如下:

# Man

Author: @groundwater

## Install

npkg install bin-man

## Usage

```
Usage: man PKGNAME

Display a packages README.md file
```

我们已经基本完成了我们的第一个 NodeOS 定制应用。最后剩下一小步了,我们需要创建一个 NodeOS 应用需要的配置文件。很简单,把它创建到 /etc/bin-man/config.json ,内容只是一个空的 JSON 对象: {}。

现在我们可以试试我们的新应用了。在 NodeOS 中运行 man ,它将展示我们之前创建的 readme 文件。

总结

如你所见,在 NodeOS 中实现任何东西都很简单,你只需要懂得 Node.js 即可。

NodeOS 很有潜力,我认为当实现了更多的功能之后它会成为一个伟大的操作系统。目前仍然需要很多工作,但是在整个Node.js 生态系统兴盛发展的形势下,万一哪天它很快地成为一个流行的操作系统也没什么好惊奇的。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptの役割:WebをインタラクティブでダイナミックにするJavaScriptの役割:WebをインタラクティブでダイナミックにするApr 24, 2025 am 12:12 AM

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScript:接続が説明しましたCおよびJavaScript:接続が説明しましたApr 23, 2025 am 12:07 AM

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

Webサイトからアプリまで:JavaScriptの多様なアプリケーションWebサイトからアプリまで:JavaScriptの多様なアプリケーションApr 22, 2025 am 12:02 AM

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Python vs. JavaScript:ユースケースとアプリケーションと比較されますPython vs. JavaScript:ユースケースとアプリケーションと比較されますApr 21, 2025 am 12:01 AM

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

JavaScript通訳者とコンパイラにおけるC/Cの役割JavaScript通訳者とコンパイラにおけるC/Cの役割Apr 20, 2025 am 12:01 AM

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

JavaScript in Action:実際の例とプロジェクトJavaScript in Action:実際の例とプロジェクトApr 19, 2025 am 12:13 AM

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptとWeb:コア機能とユースケースJavaScriptとWeb:コア機能とユースケースApr 18, 2025 am 12:19 AM

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンの理解:実装の詳細JavaScriptエンジンの理解:実装の詳細Apr 17, 2025 am 12:05 AM

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境