日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
詳解NodeOS操作系統(tǒng)

NodeOS 是一個對開發(fā)者友好的操作系統(tǒng),使用 Node.js 編寫,NodeOS 是一個完全用 Javascript 構(gòu)建的操作系統(tǒng),并使用 npm 作為其軟件包管理器。npm 中的任何軟件包都是 NodeOS 軟件包,最后計(jì)數(shù)為 244、180 個軟件包,詳細(xì)講解一下NodeOS操作系統(tǒng)。

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的惠水網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

img

用戶自主的獨(dú)立文件系統(tǒng)

NodeOS 引入了一個有趣的特性:所有的用戶都有一個獨(dú)立的文件系統(tǒng),他們在一個簡單的文件系統(tǒng)中完成各種工作。因?yàn)樗麄兊摹爸髂夸洝笔聦?shí)上就是他們自己的文件系統(tǒng)的根(root),所以他們可以不需要任何超級權(quán)限就可以將軟件包安裝到系統(tǒng)中,也不需要配置什么,因?yàn)檐浖J(rèn)就安裝在他們自己的主目錄里面。此外,這樣也提供了良好的安全性,如果黑客攻入到了某個賬戶,那么只能訪問到該用戶所在的部分,最終的結(jié)果就是黑客并不能由此影響到整個系統(tǒng)。

Node.js 和 NPM

你可以想想,如果一個操作系統(tǒng)使用 Node.js,那就意味著所有在 NPM 中可用的包同時也都是 NodeOS 的軟件包。在寫作本文時,已經(jīng)有了超過 21 萬的軟件包,而且每分每秒都在不斷增長,如果幾年以后,NodeOS 有了一百萬應(yīng)用,那也沒什么好奇怪的。

基于 Linux 內(nèi)核

這看起來并不算什么,Linux 是大多數(shù)服務(wù)器所采用的操作系統(tǒng)。因?yàn)?NodeOS 是基于 Linux 內(nèi)核的,所以你只需要很少的修改就可以使用那些給其它的 Linux 發(fā)行版開發(fā)的應(yīng)用了。

不好的消息

我非常希望 NodeOS 是一個已經(jīng)完成的作品,但是,它現(xiàn)在還不是。它仍然缺少一些服務(wù)器操作系統(tǒng)所必需的關(guān)鍵功能。比如,缺失完整的 BASH 工具集,包括 ps、tail、nano 和 grep 等都沒有。更糟糕的是,你也不能把它當(dāng)成桌面操作系統(tǒng)使用,因?yàn)樗鼪]有 GUI。當(dāng)然,你可以實(shí)現(xiàn)一些缺失的功能,只需要使用一點(diǎn)點(diǎn) JavaScript,但是默認(rèn)情況下,這些功能現(xiàn)在都還沒有,真糟糕。

好吧,那我可以試試 NodeOS 嗎?

使用 Docker 來體驗(yàn)

最容易、最快捷的體驗(yàn) NodeOS 的方法如下:

  1. 一臺運(yùn)行 Mac OSX 或 Linux 計(jì)算機(jī),也許 Windows 也可以,但是我沒試過。
  2. Docker。

當(dāng)你安裝好 Docker 之后,運(yùn)行一個 NodeOS 實(shí)例是很容易的。你只需要執(zhí)行如下命令就可以了, Docker 會為你完成這一切:

sudo docker run -t -i nodeos/nodeos

NodeOS操作系統(tǒng)NodeOS操作系統(tǒng)

當(dāng)你運(yùn)行了上述命令,Docker 會自動從倉庫下載 NodeOS 的鏡像,并將其安裝到一個虛擬環(huán)境中,安裝好之后,會打開一個連接到 NodeOS 的 SSH 會話。

不用Docker呢?

有些情況下你也許不能使用 Docker 來體驗(yàn),或者是你想體驗(yàn)一下最新版本的 NodeOS 。在寫作本文時,NodeOS 的鏡像已經(jīng)是兩個月前生成的了,而開發(fā)版本則是六天前更新的。所以,如果你希望使用最新版本,你應(yīng)該從源代碼開始。這也不算很難,但是要花費(fèi)一些時間。你需要:

  1. 一臺運(yùn)行 Linux 的計(jì)算機(jī)。你可以在 OS X 上編譯它,但是跨平臺編譯需要花費(fèi)很多時間,對于 Windows 也如此。
  2. Linux 編譯構(gòu)建相關(guān)的工具(make、g++、gcc、autoconf)。
  3. Qemu。
  4. 時間,真的需要很多。

如果萬事俱備,你就可以從源代碼開始編譯了:

  1. 下載項(xiàng)目源代碼:bash git clone git@github.com:NodeOS/NodeOS.git。
  2. 使用下列命令編譯: cd NodeOS 并 npm install。
  3. 執(zhí)行 bash npm start來在 Qemu 中運(yùn)行 NodeOS。

當(dāng)安裝完成后,我們可以通過在 NodeOS 的 shell 中執(zhí)行 ls命令來看看它是否工作了。輸出類似如下:

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

如果顯示如上,說明一些基本的命令可以工作了。但是如果我們想要知道網(wǎng)卡地址呢?在 Linux 下,這個命令是 ifconfig> ,讓我們試試:

command not found: ifconfig

看起來沒有ifconfig命令,這是因?yàn)?NodeOS 默認(rèn)沒有ifconfig命令?,F(xiàn)在怎么辦?很簡單,NodeOS 有一個集成的包管理器(類似apt或yum) ,叫做npkg,它是基于 Node 的 NPM 的,很容易使用??梢酝ㄟ^如下命令很方便的安裝ifconfig :

npkg install bin-ifconfig

如果一切正常,ifconfig命令現(xiàn)在就可以在shell中使用了。我們再次試著執(zhí)行一下,輸出類似如下:(我替換了其中的 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

如果你的輸出也類似如上,那說明它可以工作了,你已經(jīng)成功地安裝了你的第一個 NodeOS 應(yīng)用:ifconfig。

它是可以工作了,然而我們可以用這個操作系統(tǒng)做什么呢?

如果我們只能拿這個用 Node.js 寫的操作系統(tǒng)做到你在 Ubuntu 或其它 Linux 發(fā)行版上一樣的(或更少的)事情,那它有什么價值?其實(shí),整個事情中最有趣的地方是所有的東西都是 Node.js 開發(fā)的。這意味著我們可以只需要使用 Node.js 就可以開發(fā)我們的應(yīng)用了。比如,NodeOS 里沒有默認(rèn)實(shí)現(xiàn)的 man 命令,它用于顯示其它命令的幫助信息。不用擔(dān)心,實(shí)現(xiàn)它很簡單。

NodeOS操作系統(tǒng)NodeOS操作系統(tǒng)

首先讓我們來安裝一個叫做 Hipster 的文本編輯器,以便我們可以創(chuàng)建和編輯文件。執(zhí)行如下命令:npm install -g hipster@0.15.0。這個文本編輯器很簡單,除了用作文本編輯之外啥也干不了,不過對于我們來說足夠了。用 Hipster 創(chuàng)建文件很簡單,運(yùn)行hip filename即可,如:hip package.json。要保存文件請按下Ctrl + s ,退出按下 Ctrl + q。在這里,我們使用了一個 NodeOS 的主開發(fā)人員所開發(fā)的代碼,我自己并沒有真的去開發(fā)這個應(yīng)用。我們例子中的原始代碼可以在 node-bin-man Git 倉庫中找到。

讓我們回過頭來創(chuàng)建我們的第一個 NodeOS 應(yīng)用。像每個 Node.js 應(yīng)用(或 NPM 包)一樣,我們從創(chuàng)建一個package.json文件開始,內(nèi)容如下:

{
 "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"
 }
}

這些參數(shù) name、version、author、repository、license和description是其意自明的。這個bin集合是一個JSON的鍵值對對象,包含了命令名及其關(guān)聯(lián)的JavaScript文件。在我們的例子中,man命令關(guān)聯(lián)到man.js文件。而dependencies集合包含了這個應(yīng)用所需要的 NPM包的列表。在我們的例子中,代碼的作者包含了 Blessed 包,這是一個類 curses 的庫,可以讓 Node.js 支持高級終端界面的 API。

現(xiàn)在我們進(jìn)入了主要的部分,實(shí)際的代碼。

#!/usr/bin/env node

這個部分叫做釋伴(shebang)。NodeOS 實(shí)際上并不需要它,但是它用于告訴操作系統(tǒng)如何執(zhí)行下面的代碼。在這里的意思是,它告訴系統(tǒng)下面的每行代碼都需要通過/usr/bin/env node命令來解釋執(zhí)行。

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

像在 Node.js 中一樣,require() 函數(shù)加載選定的包到內(nèi)存中,并將其保存為特定的變量。

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

man命令的標(biāo)準(zhǔn)行為是如果沒有指定要查看的命令時,就顯示它自己的幫助信息。在我們的代碼示例中也一樣:如果沒有給出第二個參數(shù)(第一個參數(shù)是 man 本身),那么該參數(shù)的默認(rèn)值是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);
}

在這里,程序檢查給定的應(yīng)用是否有一個readme文件。在 NodeOS 中,每個應(yīng)用的安裝路徑是其主目錄(/)下的lib/node_modules。如果README.md文件存在,就將其內(nèi)容保存到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,要顯示一個文件的內(nèi)容很容易,只需要創(chuàng)建一個box,然后載入內(nèi)容即可。

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

現(xiàn)在,讓我們找個退出man應(yīng)用的方法。我們組合了escape、q或 emacs 風(fēng)格的C-c來退出應(yīng)用。

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();

最后,我們讓應(yīng)用將輸入焦點(diǎn)放到box ,我們在這里創(chuàng)建和渲染所有內(nèi)容。把上面編輯的這個文件存放到 /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

我們已經(jīng)基本完成了我們的第一個 NodeOS 定制應(yīng)用。最后剩下一小步了,我們需要創(chuàng)建一個 NodeOS 應(yīng)用需要的配置文件。很簡單,把它創(chuàng)建到/etc/bin-man/config.json ,內(nèi)容只是一個空的 JSON 對象:{}。

現(xiàn)在我們可以試試我們的新應(yīng)用了,在 NodeOS 中運(yùn)行man,它將展示我們之前創(chuàng)建的 readme 文件。如你所見,在 NodeOS 中實(shí)現(xiàn)任何東西都很簡單,你只需要懂得 Node.js 即可。NodeOS 很有潛力,我認(rèn)為當(dāng)實(shí)現(xiàn)了更多的功能之后它會成為一個偉大的操作系統(tǒng)。目前仍然需要很多工作,但是在整個Node.js 生態(tài)系統(tǒng)興盛發(fā)展的形勢下,萬一哪天它很快地成為一個流行的操作系統(tǒng)也沒什么好驚奇的。


分享題目:詳解NodeOS操作系統(tǒng)
文章位置:http://www.5511xx.com/article/dphpidh.html