apeescape2.com
  • Põhiline
  • Planeerimine Ja Prognoosimine
  • Projekti Juht
  • Andmeteadus Ja Andmebaasid
  • Trendid
Tagumine Ots

NodeOS: JavaScripti põhine operatsioonisüsteem

Olen kindel, et enamik programmeerijaid on sellest kuulnud Node.js , aga mis siis NodeOS ? Jah, NodeOS, operatsioonisüsteem, mis on kirjutatud Node.js-s. Noh, selline. NodeOS kasutab Linuxi kernelit enamiku jõudluskriitiliste asjade jaoks, näiteks riistvara interaktsioonide jaoks, kuid kõige muu jaoks kasutab Node.js. NodeOSi arendamine algas kaks aastat tagasi ja selle lõid inimesed, kes jagasid lihtsat, kuid intrigeerivat ideed: 'Kas operatsioonisüsteemi on võimalik luua ainult Node.js abil?'

monte carlo simulatsiooni aegrida

Darwini evolutsioonitabel



Kas on võimalik operatsioonisüsteemi luua ainult Node.js abil? Piiksuma

Mis on suur asi?

Kõigepealt mõelge Node.js-i tehtud edusammudele selle lühikese aja jooksul. Mõelge nüüd sellele, mis juhtub operatsioonisüsteemiga. Seejärel lisame sellele lahedaid asju.



Kasutaja kohta sõltumatu ja eraldatud juurfailisüsteem

NodeOS tutvustas huvitavat paradigmat: kui kõigil kasutajatel on eraldatud failisüsteem, annab see neile töötamiseks lihtsa failisüsteemi hierarhia. Kuna nende 'kodukataloog' on tegelikult nende endi failisüsteemi hierarhia juur, saavad nad pakette installida ülemaailmselt ilma erilisi õigusi nõudmata ega pea midagi konfigureerima, kuna need on vaikimisi oma kodukataloogi installitud. Samuti pakub see palju turvalisust; kui häkker leiab viisi operatsioonisüsteemis konkreetse konto sisenemiseks, on ainus partitsioon, millele tal on juurdepääs, selle kasutaja partitsioon. Lõpptulemuseks on häkker ei saa kompromiteerida kogu süsteemi.

Node.js ja NPM

Kui järele mõelda, tähendab Node.js-i kasutav operatsioonisüsteem seda, et mis tahes NPM-is saadaval olev pakett on samal ajal ka NodeOS-i pakett. Kirjutamise ajal on 210 735 paketti; kuna NPM-i pakettide arv kasvab iga minutiga, poleks imelik, kui mõne aasta pärast oleks NodeOS-il miljon rakendust.



See põhineb Linuxi kernelil

See ei pruugi tunduda suurem asi, kuid Linux on enimkasutatav serveri operatsioonisüsteem. Kuna NodeOS põhineb Linuxi kernelil, võiksite minimaalsete muudatustega käivitada kõiki teisi Linuxi distributsioonidele kirjutatud rakendusi.

Varjuküljed

Nii palju kui ma tahaksin valmis NodeOS-i, pole seda veel olemas. Sellel puuduvad endiselt paljud serveri operatsioonisüsteemi põhifunktsioonid. Näiteks puudub kogu BASH-i tööriistakomplekt, sealhulgas ps, saba, nano ja grep. Lisaks ei saa te seda käivitada töölaua operatsioonisüsteemina, kuna sellel pole GUI-d. Muidugi saate mõned puuduvad funktsioonid üsna hõlpsalt rakendada, kasutades natuke JavaScripti, kuid see, et kõik mainitud funktsioonid pole vaikimisi saadaval, pole hea.

Niisiis, kuidas ma saan NodeOS-i proovida?

Dockeri kasutamine

Lihtsaim ja kiireim viis NodeOSi proovimiseks on järgmine:



  1. Kas Mac OSXi või Linuxiga arvuti. See võib Windowsiga töötada, kuid ma ei proovinud seda.
  2. Docker.

Kui olete Dockeri installinud, on NodeOS-i eksemplari käivitamine lihtne. Kõik, mida peate tegema, on käivitada järgmine käsk ja Docker teeb kogu maagia:

sudo docker run -t -i nodeos/nodeos

Lihtsaim ja kiireim viis NodeOSi proovimiseks on Dockeri kasutamine

Lihtsaim ja kiireim viis NodeOSi proovimiseks on Dockeri kasutamine. Piiksuma

Eelnimetatud käsu käivitamisel laadib Docker automaatselt hoidlast alla NodeOS-i kettapildi ja teostab NodeOS-i installimise virtuaalmasinas. Kui installimine on lõpule jõudnud, avab see SSH-seansi NodeOS-i kestale.

Ilma dokita

On mõned põhjused, miks soovite Dockeri kasutamist vältida, ja üks neist on uusim NodeOS-i versioon. Kirjutamise ajal tehti viimane muudatus NodeOS-i Dockeri pildile kaks kuud tagasi, arendusversiooni värskendati aga kuus päeva tagasi. Seega, kui soovite kasutada uusimat versiooni, peaksite kindlasti hankima lähtekoodi. See pole liiga keeruline, kuid see võtab kaua aega. Sa vajad:

  1. Linuxiga arvuti. Selle saate kompileerida OS X-is, kuid see võtab kauem aega, kuna see peab tegema ristkompileerimise. Sama kehtib ka Windowsi kohta.
  2. Linuxi ehituse utiliidid (make, g ++, gcc, autoconf).
  3. Qemu.
  4. Aeg. Tõsiselt, palju.

Kui kõik on käes, saate jätkata lähtekoodi kompileerimist:

  1. Laadige alla projekti lähtekood: bash git clone [email protected] :NodeOS/NodeOS.git.
  2. Kompileerige see, käivitades järgmised käsud: cd NodeOS ja npm install.
  3. Tsiteerin sõna-sõnalt ametlikku dokumentatsiooni: 'Valige mikrolaineahjus popkorni ja minge filmi vaatama. Ei, tõesti, tee seda. ' . Jah, see võtab nii palju aega, nii et tehke vahepeal midagi huvitavat.
  4. Käivita bash npm start Qemu sees NodeOS-i käivitamiseks.

Kas see töötab?

Kui installimine on lõpule jõudnud, saame selle toimimist kontrollida, käivitades NodeOS-i kestas käsu ls Selline väljund peaks ilmuma:

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

Kui see töötab, tähendab see, et mõned põhikäsklused töötavad. Aga mis siis, kui tahame kuvada võrgukaardi IP-aadressi? Linuxi all on käsk nimega ifconfig see teeb just seda; proovime seda:

command not found: ifconfig

Näib, et käsk ifconfig on kadunud. Seda seetõttu, et NodeOS-il pole vaikimisi ifconfig käsk. Mis nüüd? Noh, see on lihtne; NodeOSil on integreeritud paketihaldur (nt apt või yum), nimega npkg, mis põhineb Node'i NPM-il ja on hõlpsasti kasutatav. ifconfig Installimine on sama lihtne kui järgmise käsu käivitamine:

npkg install bin-ifconfig

Kui kõik läks hästi, käsk ifconfig peaks nüüd olema kestas saadaval. Kui proovime seda uuesti käivitada, kuvatakse selline väljund (ilmselgetel põhjustel panin juhusliku MAC-aadressi ja IP-aadressi):

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

Kui teie väljund näeb välja selline, siis see töötab. Olete edukalt installinud oma esimese NodeOS-i rakenduse: ifconfig.

See töötab. Kuid mida me nüüd OS-iga teeme?

Mis mõtet on operatsioonisüsteemil kirjutada Node.js-sse, kui saate teha samu asju (või isegi vähem asju), mida saate teha Ubuntus või mõnes muus Linuxi jaotuses? Noh, kogu mõte on selles, et kõik on välja töötatud ainult Node.js abil. See tähendab ka, et saame arenema meie rakendused ei kasuta muud kui Node.js. Näiteks pole NodeOS-il vaikimisi rakendust käsule man, mida Linuxis kasutatakse teiste käskude käsitsi lehtede kuvamiseks. Ära karda, selle rakendamine on lihtne. Kuidas, ma kuulen, kuidas sa küsid? Lihtne.

NodeOS-i rakenduse loomine rakendusega Node.js

Kõigepealt installime tekstiredaktori nimega Hipster, et saaksime faile luua ja redigeerida, käivitades järgmise käsu: npm install -g [email protected] . See failiredaktor on lihtne ja kindlasti mitte midagi, mida ma muudeks toimetajateks kasutaksin, kuid see on antud juhul piisavalt hea. Hipsteriga failide loomine on tõesti lihtne, lihtsalt käivitage hip filename, nagu hip package.json; salvestamiseks vajutage Ctrl + s ja väljumiseks vajutage Ctrl + q. Selle näite jaoks kasutan koodi, mille on välja töötanud üks peamisi NodeOS-i arendajaid, ma pole seda tegelikult ise rakendanud. Meie näite originaalkoodi leiate aadressilt sõlme-bin-man Giti hoidla .

Naaseme oma esimese NodeOS-i rakenduse loomise juurde. Nagu iga rakenduse Node.js (või NPM-i paketi) puhul, alustame ka package.json loomisega faili, nagu järgmises näites:

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

Parameetrid name, version, author, repository, license ja description on iseenesestmõistetavad. bin kogu on JSON-i võtme- / väärtusobjekt, mis sisaldab käsu nime ja sellega seotud JavaScripti faili. Meie näites on man käsk on seotud failiga man.js. Kogumik dependencies sisaldab loendit NPM-i pakettidest, mida on vaja selle rakenduse kasutamiseks. Meie näites lisas koodi autor Blode, needusetaolise teegi, millel on Node.js-i kõrgetasemelise terminaliliidese API-ga.

Nüüd läheme põhiosa, tegeliku koodi juurde.

#!/usr/bin/env node

Seda osa nimetatakse “shebangiks”. NodeOS seda tegelikult ei nõua, kuid see annab operatsioonisüsteemile teada, kuidas järgmist koodi käivitada. Meie puhul ütleb see tõlgile, et kõik tuleb täita käsuga /usr/bin/env node.

kui suur on veinitööstus
var fs = require('fs'); var blessed = require('blessed');

Täpselt nagu Node.js-s, on funktsioon require() laadib valitud paketi mällu ja salvestab selle määratud muutujasse.

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

A man standardkäitumine käsk on käsiraamatust endast teada anda, kui muud käsku pole määratud. Sama teeb ka meie koodinäide: kui teisele parameetrile (esimene on inimene ise) pole ühtegi argumenti määratud, on see vaikimisi 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); }

Siinkohal kontrollib programm, kas antud rakenduse jaoks on olemas readme-fail. NodeOS-is on iga rakenduse installitee kodukataloog (või /), millele järgneb kataloog lib/node_modules. Kui fail README.md on olemas, salvestab see muutuja readme sisse. Vastasel juhul näitab see viga ja väljub protsessist.

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

Blessedil on tõeliselt lihtne API; faili sisu näitamine on sama lihtne kui käsk luua box ja sisu laadimine.

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

Nüüd loome võimaluse man -ist väljumiseks rakendus. Ühendame võtmed escape, q või emacsi stiilis kombinatsioon C-c protsessist väljumiseks.

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

Ühe rea üles või alla kerimiseks kasutame suunaklahve ja klahve space, f, j või n lehe alla kerimiseks (nii palju ridu kui ekraanil on). Kasutage b, k või p teha vastupidist.

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

Lõpuks käskime rakendusel keskenduda box -le lõime ja renderdasime kogu asja. Paneme need failid kataloogi /lib/node_modules/bin-man ja lisame lihtsa README.md, umbes nii:

# Man Author: @groundwater ## Install npkg install bin-man ## Usage ``` Usage: man PKGNAME Display a packages README.md file ```

Oleme oma esimese kohandatud rakendusega NodeOS peaaegu valmis. Alles on jäänud üks viimane väike samm; peame looma konfiguratsioonifaili, kuna see on NodeOS-i rakenduste nõue. See on sama lihtne kui faili loomine teele /etc/bin-man/config.json järgmise sisuga: {}, tühi JSON-objekt. Nüüd saame proovida oma uut rakendust. Jooksmine man NodeOS-i kest peaks näitama varem loodud readme-faili.

Järeldus

Nagu näete meie lihtsa koodinäite abil, on NodeOS-is mis tahes rakendamine lihtne ülesanne, peate teadma ainult Node.js-i.

NodeOSil on palju potentsiaali ja ma arvan, et see võib saada suurepäraseks operatsioonisüsteemiks, kui lisafunktsioonid on rakendatud. See vajab veel tööd, kuid kogu Node.js-põhise ökosüsteemi populaarsuse tulemusel ei oleks ma üllatunud, kui sellest saaks kiiresti populaarne operatsioonisüsteem. Mis sa sellest arvad? Andke mulle kommentaarides teada.

Miks peaksid Java arendajad Graalidele võimaluse andma?

Tagumine Ots

Miks peaksid Java arendajad Graalidele võimaluse andma?
Kiiresti käivitage oma PHP testimine koodetseptsiooniga

Kiiresti käivitage oma PHP testimine koodetseptsiooniga

Tagumine Ots

Lemmik Postitused
Efektiivse tarkvara tootmise kaheksa reeglit
Efektiivse tarkvara tootmise kaheksa reeglit
Tarkvara määratletud raadioõpetus: pildid rahvusvahelisest kosmosejaamast ja sinkide kuulamine RTL-SDR abil
Tarkvara määratletud raadioõpetus: pildid rahvusvahelisest kosmosejaamast ja sinkide kuulamine RTL-SDR abil
Kirjutage olulised testid: lahendage kõigepealt kõige keerukam kood
Kirjutage olulised testid: lahendage kõigepealt kõige keerukam kood
Kuidas tehisintellekt rahandusmaailma mõjutab
Kuidas tehisintellekt rahandusmaailma mõjutab
Lõplik juhend WordPressi pistikprogrammi loomiseks
Lõplik juhend WordPressi pistikprogrammi loomiseks
 
5-sammuline protsess blogi muutmiseks suure konversiooniga lehtrisse
5-sammuline protsess blogi muutmiseks suure konversiooniga lehtrisse
5-sammuline protsess oma ajaveebi muutmiseks kõrgeks konversioonitunneliks
5-sammuline protsess oma ajaveebi muutmiseks kõrgeks konversioonitunneliks
Ethereumi Oracle'i lepingud: kas me võime Oracle'i usaldada?
Ethereumi Oracle'i lepingud: kas me võime Oracle'i usaldada?
ApeeScape käivitab kaugtöö tegemise põhjaliku juhendi „The äkki kaugjuhtimisraamat“
ApeeScape käivitab kaugtöö tegemise põhjaliku juhendi „The äkki kaugjuhtimisraamat“
Nurga 5 õpetus: samm-sammult juhend teie esimese nurga 5 rakenduse jaoks
Nurga 5 õpetus: samm-sammult juhend teie esimese nurga 5 rakenduse jaoks
Lemmik Postitused
  • mida tähendab 11. peatükk
  • õppida c-programmeerimist veebis tasuta
  • kuidas läbi viia kasutatavuse testimine
  • tüüpiline erakapitalifondide struktuur
  • s ettevõtte ja c ettevõtte
Kategooriad
Projekti Juht Investorid Ja Rahastamine Trendid Insenerihaldus Vilgas Ui Disain Tooteinimesed Ja Meeskonnad Inimesed Ja Meeskonnad Toote Elutsükkel Andmeteadus Ja Andmebaasid

© 2021 | Kõik Õigused Kaitstud

apeescape2.com