NodeOS
Hệ điều hành nhẹ sử dụng Node.js làm không gian người dùng.
NodeOS là một hệ điều hành được xây dựng hoàn toàn bằng Javascript và được quản lý bởi npm. Bất kỳ gói nào trong npm
đều là gói NodeOS, điều đó có nghĩa là một lựa chọn từ hơn 400.000 gói. Mục tiêu của NodeOS là cung cấp đủ để để npm
cung cấp phần còn lại. Vì bất kỳ ai cũng có thể đóng góp vào nó, bất kỳ ai cũng có thể tạo ra các gói NodeOS.
Dự án này đã giành giải thưởng 9th National Free Software Championship ở hạng mục Hệ thống và đã được nhắc đến là Đề cương luận văn tốt nghiệp của Jesús Leganes Combarro với điểm 10/10 có tặng khen.
Giới thiệu
NodeOS là một hệ điều hành dựa trên Node.js, được xây dựng trên nền tảng hạt nhân Linux. Dự án NodeOS đang nhằm mục tiêu và đã có thể chạy trên một số nền tảng sau đây:
- phần cứng thực sự như máy tính để bàn, laptop hoặc SoC (Raspberry Pi)
- nhà cung cấp đám mây như Joyent, Amazon hoặc Rackspace
- máy ảo như QEmu, VirtualBox, VMWare và KVM
- nhà cung cấp PaaS như Heroku hoặc Joyent’s Manta
- nhà cung cấp container như Docker & Vagga
Phát triển lõi đang được thực hiện theo từng tầng. Có thể có một số khác biệt để điều chỉnh tốt hơn cho mỗi nền tảng mục tiêu, nhưng cấu trúc chung là:
- nhân Linux tùy chỉnh gọn gàng với một initramfs khởi động vào một Node.js REPL
- initramfs Môi trường Initram để gắn kết phân vùng người dùng và khởi động hệ thống
- usersfs Môi trường đa người dùng với cùng hành vi như các hệ điều hành truyền thống
Quá trình khởi động
Tất cả các tầng đều có thể khởi động, dẫn đến barebones là một dòng lệnh trần trụi của Node.js REPL với PID 1, trong khi initramfs thực thi mã NodeOS thực tế để cách ly mã nguồn của người dùng khỏi hệ thống cốt lõi và, nếu có sẵn, gắn kết một phân vùng với các thư mục gốc của người dùng và hệ thống tệp gốc.
Nếu một phân vùng usersfs được đặt vào thời gian khởi động, nó sẽ được gắn kết và hệ thống sẽ xem xét mỗi một trong số các thư mục của nó như thư mục gốc của một người dùng hợp lệ trên hệ thống, và sẽ thực thi một tệp init
trong gốc của từng thư mục đó. Nếu tìm thấy, người dùng root
sẽ được xem xét đầu tiên và sẽ có quyền truy cập vào tất cả các thư mục gốc, nhưng theo thiết kế, sẽ không thể tăng quyền hạn sau khi hệ thống đã khởi động xong.
Hack
Nếu bạn đang tham gia phát triển NodeOS cho một môi trường sản xuất một chút, bạn có thể quan tâm đến việc xây dựng một hình ảnh usersfs tùy chỉnh hoặc chỉnh sửa nó sau khi khởi động, vì mỗi người dùng được cách ly khỏi nhau và mọi người có thể tự xác định hệ thống tệp gốc của họ, nhưng bạn có thể tùy chỉnh tất cả các tầng khác nếu bạn muốn. Ví dụ, bạn có thể sửa đổi initramfs để đăng nhập người dùng và gắn kết thư mục gốc của họ từ một dịch vụ đám mây hoặc tạo ra một hệ thống không có dịch vụ toàn cầu (không có người dùng root
), hoặc cũng có thể dành một phiên bản NodeOS đầy đủ cho một ứng dụng Node.js duy nhất.
Hình ảnh đã được xây sẵn
Hình ảnh sẵn sàng sử dụng pre-build images được tạo tự động sau mỗi lần commit trên nhánh master mà hoạt động thành công pass the tests. Để chạy chúng, bạn cần phải cài đặt QEmu trên hệ thống của bạn.
iso có thể được ghi vào đĩa CD-R hoặc flash vào ổ USB, nhưng chỉ cung cấp rootfs chỉ đọc và các thay đổi sẽ được thực hiện trong bộ nhớ, mất đi sau khi khởi động lại, vì vậy bạn sẽ cần thiết lập một phân vùng usersfs có thể đọc và ghi nếu bạn muốn duy trì chúng. Ngược lại, nếu bạn muốn flash nó vào ổ USB, chúng tôi đề xuất thực hiện bằng cách sử dụng lệnh bin/installUSB
để nó sẽ tự động tạo ra một phân vùng usersfs có thể đọc và ghi để sử dụng phần còn lại và sử dụng nó như là bộ nhớ lưu trữ có độ bền.
Xây dựng NodeOS trong năm bước
Tải mã nguồn dự án:
git clone git@github.com:NodeOS/NodeOS.git
cd NodeOS
Cài đặt các công cụ xây dựng cần thiết. Trên hệ thống dựa trên Ubuntu, bạn có thể thực hiện bằng cách thực thi:
sudo bin/install-dependencies
Cài đặt các phụ thuộc xây dựng NodeOS:
npm install
Xây dựng NodeOS:
npm run build
Theo mặc định, nó sẽ tạo ra một số tệp có thể sử dụng với QEmu, được biên dịch cho kiến trúc máy tính hiện tại của bạn. Bạn có thể cấu hình quá trình xây dựng bằng cách truyền một số biến môi trường. Ví dụ, để buộc xây dựng cho 32 bit, hãy sử dụng BITS=32 npm install
thay vì đó.
Chạy hình ảnh NodeOS mới biên dịch của bạn:
npm start
Nó sẽ tự động phát hiện kiến trúc CPU nào cần phải sử dụng trên QEmu và thực hiện mô phỏng đúng.
…lợi nhuận! 😀
Nếu bạn gặp lỗi khi xây dựng NodeOS, hãy xem tại the wiki hoặc mở một issue.
Hệ điều hành Dự án Đơn lẻ
NodeOS có thể được sử dụng như một Hệ điều hành Dự án Đơn lẻ, nơi chỉ chạy một tệp thực thi duy nhất. Để làm điều này, hãy đặt biến môi trường SINGLE_USER
thành tên của một mô-đun npm
khi thực thi npm run build
. Điều này sẽ chạy hoàn toàn từ initram, tính bền vững có thể đạt được bằng cách đặt biến môi trường này thành một chuỗi trống và sau đó sử dụng một phân vùng usersfs
tùy chỉnh, nhưng điều này vẫn đang trong giai đoạn thử nghiệm.
NodeOS trên các container LXC (Docker và vagga)
NodeOS chính thức hỗ trợ Docker, các hình ảnh đã được xuất bản có sẵn tại DockerHub NodeOS organization. Nếu bạn quan tâm đến việc giúp đỡ hoặc kiểm tra, bạn có thể xây dựng chúng từ mã nguồn.
Hỗ trợ Vagga khá thử nghiệm, và sự giúp đỡ ở đây sẽ được đánh giá cao.
Bắt đầu Nhanh
Một Dòng Lệnh
sudo docker run -t -i nodeos/nodeos
Xây dựng từ Mã nguồn
git clone https://github.com/NodeOS/NodeOS.git
cd NodeOS
PLATFORM=docker npm install
Các liên kết hữu ích
- New Wiki (under work)
- pre-build releases images
- 1.0 Roadmap
- 2.0 Roadmap
- media files (logo, hình nền…)
- discussion
Chi tiết Tải xuống
Tác giả: NodeOS
Mã nguồn: https://github.com/NodeOS/NodeOS
Giấy phép: MIT license