OpenWrt

**OpenWrt** là một hệ điều hành /hệ điều hành nhúng dựa trên nhân Linux, và chủ yếu được sử dụng trên các thiết bị nhúng vào mạng lưới định tuyến đường truyền. Các thành phần chính là hạt nhân Linux, util-linux, uClibc và BusyBox. Tất cả các thành phần đã được tối ưu hóa kích thước, phải đủ nhỏ để nhúng vào bộ nhớ có hạn của các router dùng trong gia đình.

OpenWrt được cấu hình bằng cách sử dụng giao diện dòng lệnh (ash Shell), hoặc một giao diện Web (Luci). Có khoảng 3.500 gói phần mềm tùy chọn có sẵn để cài đặt qua hệ thống quản lý gói opkg.

OpenWrt có thể chạy trên các bộ định tuyến CPE, hệ thống mạng nhỏ, điện thoại thông minh (ví dụ: Neo FreeRunner), máy tính bỏ túi (ví dụ: Ben NanoNote), thậm chí cả máy tính xách tay (ví dụ: One Laptop per Child (OLPC)). Ngoài ra, OpenWrt có thể chạy trên các máy tính thông thường (ví dụ như kiến trúc x86). Nhiều bản vá lỗi từ các mã nguồn cơ sở của OpenWrt đã được đưa và đóng góp ngược lại cho nhân Linux bằng đường chính.

## Lịch sử
Dự án bắt đầu vì Linksys cung cấp Firmware của thiết bị định tuyến WRT54G theo GPL. Theo các điều khoản của Giấy phép đó, Linksys đã được yêu cầu để làm cho mã nguồn của phiên bản sửa đổi của nó có sẵn theo giấy phép tương tự, nó cho phép các nhà phát triển có thể phát sinh ra nhưng phiên bản tự do khác. Hỗ trợ ban đầu được giới hạn ở những dòng WRT54G, nhưng từ đó đã được mở rộng để bao gồm nhiều chipset khác, các nhà sản xuất và các loại thiết bị, bao gồm cả máy tính và điện thoại di động OpenMoko.

Sử dụng mã này như là một cơ sở và sau đó là một tài liệu tham khảo, các nhà phát triển tạo ra một bản phân phối Linux, cung cấp nhiều tính năng không tìm thấy trước đây trong các router ở mức khách hàng. Một số tính năng trước đây là yêu cầu phần mềm độc quyền. Trước khi giới thiệu OpenWrt 8.09, sử dụng Linux 2.6.25 và `b43` module hạt nhân, đối với nhiều WLAN Broadcom dựa trên router WS chỉ có sẵn thông qua việc độc quyền `wl.o` module đó WS cũng cung cấp cho Linux kernel phiên bản 2.4.x chỉ.

Các tên mã của chi nhánh OpenWrt được đặt theo tên của đồ uống có cồn, thường bao gồm cả công thức nấu ăn của họ trong màn hình đăng nhập SSH được cho là tốt, như White Russian, Kamikaze, Backfire, Attitude Adjustment, Barrier Breaker.

Sự phát triển không ngừng trunk có tên Kamikaze cho đến tháng 2 năm 2011, nhưng với r25514 nó được đổi tên thành "Attitude Adjustment" và hiện đang được liên tục đổi tên thành tên ổn định tiếp theo.

### Releases

### Không tương thích phần cứng
Với phiên bản Attitude Adjustment (12.09) được phát hành bởi OpenWrt, tất cả các thiết bị phần cứng với 16 MB RAM hoặc ít hơn không còn được hỗ trợ như vì có thể bị tràn bộ nhớ. Phiên bản cũ hơn Backfire (10.03) được khuyến nghị cho các dòng `bcm47xx`, có một số vấn đề với sự ngưng hỗ trợ của Broadcom `brcm-2.4`.

## Tính năng
OpenWrt có sự mở rộng rất linh hoạt và đa dạng tính năng. Các tính năng chính:

* Một hệ thống tập tin gốc có thể ghi, cho phép người dùng thêm, xóa hoặc sửa đổi bất kỳ tập tin. Điều này được thực hiện bằng cách sử dụng overlayfs có hệ thống tập tin chỉ đọc được nén với SquashFS, và JFFS2 thể ghi Copy-on-Write. JFFS2 hỗ trợ chống hao mòn flash "wear leveling".
* Quản lý gói *opkg,* tương tự như dpkg, cho phép người dùng cài đặt và gỡ bỏ phần mềm. Các kho gói chứa khoảng 3500 gói. Điều này trái ngược với firmware Linux dựa trên dựa trên các hệ thống tập tin chỉ đọc mà không có khả năng sửa đổi các phần mềm được cài đặt mà không cần xây dựng lại và trở thành một ảnh firmware hoàn tất.
* Một tập hợp các mã gọi là UCI (giao diện cấu hình Unified) Dự kiến để thống nhất và đơn giản hóa cấu hình của toàn bộ hệ thống
* Cấu hình mở rộng của toàn bộ trình điều khiển phần cứng, ví dụ như xây dựng tích hợp switch mạng và VLAN, WNIC s, modem DSL s, FX, các nút phần cứng có sẵn, vv
* khả năng toàn diện để cấu hình các tính năng mạng như:
** Định tuyến thông qua iproute2, Quagga, BIRD, vv
** lưới mạng qua BATMAN, OLSR và IEEE chuẩn 802.11s của các trình điều khiển WNIC
** chức năng không dây,]] ví dụ như làm những hành động thiết bị như một repeater không dây, một điểm truy cập không dây, một cầu nối không dây, một cổng khóa, hoặc một sự kết hợp của những việc này với ví dụ ChilliSpot, WiFiDog Captive Portal, vv
** bảo mật không dây: Packet injection, ví dụ: Airpwn, lorcon, ea
** tường lửa, NAT và port forwarding thông qua netfilter; PeerGuardian có sẵn
** tự động được cấu hình cổng giao thức chuyển tiếp UPnP và NAT-PMP qua upnpd, vv
** cổng gõ qua knockd và knock
** TR-069 
** IPS qua Snort (phần mềm)
** quản lý hoạt động hàng đợi (AQM) thông qua mạng scheduler của hạt nhân Linux, có nhiều người sẵn sàng xếp hàng kỷ luật s. CODEL đã Been backported đến 3,3 Kernel. Điều này gói gọn giao thông hình thành để đảm bảo phân phối công bằng băng thông giữa nhiều người sử dụng và chất lượng dịch vụ (QoS) cho sử dụng đồng thời của các ứng dụng như VoIP, chơi game trực tuyến, và phương tiện truyền thông mà không cần trải qua các tác động tiêu cực của liên kết bão hòa.
** cân bằng tải để sử dụng với nhiều ISP
** IP tunneling
** mở rộng mạng lưới giám sát thời gian thực và thống kê thông qua các ví dụ: RRDtool, Collectd, Nagios, Munin lite, Zabbix, vv
** Domain Name System (DNS) và DHCP qua dnsmasq, MaraDNS, vv
** Dịch vụ DNS động để duy trì một tên miền cố định với một ISP không cung cấp một địa chỉ IP tĩnh
** hệ thống phân phối không dây (WDS) bao gồm WPA-PSK, WPA2-PSK, WPA-PSK / WPA2-PSK Mixed-Mode chế độ mã hóa
* OpenWrt hỗ trợ bất kỳ phần cứng có hỗ trợ Linux; thiết bị có thể được ví dụ như kết nối qua USB với một thiết bị nhúng bao gồm
** máy in
** băng thông rộng di động, modem
** webcam
** card âm thanh
* gói phần mềm đáng chú ý để sử dụng các phần cứng hỗ trợ là:
** chia sẻ tập tin qua SAMBA, (tương thích với Windows), NFS và FTP, chia sẻ máy in qua máy chủ CUPS in (spooling) hoặc p910nd (không spooling)
** PulseAudio, Music Player Daemon, Audio / Video trực tuyến thông qua các tiêu chuẩn AV DLNA / UPnP, iTunes (DAAP) máy chủ
** Asterisk (PBX)
** MQ Telemetry Transport qua Mosquitto
* Mở rộng một giao diện Web Ajax, nhờ dự án Luci
* fix lỗi và cập nhật thường xuyên, ngay cả đối với các thiết bị không còn được hỗ trợ bởi các nhà sản xuất của họ.

### Giao diện Web
Trước khi phát hành 8.09, OpenWrt có một giao diện web tối giản. Trong OpenWrt phát hành 8.09 và mới hơn, Có khả năng nhiều hơn một giao diện web được bao gồm. Giao diện này được dựa trên Luci, A MVC Framework viết trong ngôn ngữ lập trình Lua.

Các dự án X-WRT cung cấp một giao diện web thay thế, có tên webif² trong kho gói, cho các phiên bản hiện tại và trước đây của OpenWrt.

Các Gargoyle Router Management Utility là một giao diện Web cho OpenWrt với A nhấn mạnh vào khả năng sử dụng. Ban đầu nó được có sẵn như là một tập hợp các gói cho OpenWrt. Là tác giả của Gargoyle bắt đầu thực hiện sửa đổi để bố trí hệ thống cơ bản của OpenWrt, hệ thống gói đã được giảm và tải duy nhất hiện đang có sẵn là những hình firmware đầy đủ. Gargoyle sử dụng rộng rải JavaScript, để giảm tải như làm việc nhiều càng tốt để các máy tính của khách hàng, và đang tập trung vào tính dễ sử dụng, phấn đấu để đạt được một mức độ so sánh với cảm giác của thiết bị định tuyến firmwares thương mại.


File:OpenWrt-luci-firewall.png|Luci
File:X-Wrt-logo.png|X-WRT
File:Gargoyle Router Firmware quotas.png|Gargoyle


## Phát triển
Môi trường và xây dựng phát triển hệ thống *OpenWrt,* được biết đến với nhau như OpenWrt *Buildroot,* được dựa trên một hệ thống *Buildroot* thay đổi rất nhiều. OpenWrt Buildroot là một tập hợp các bản vá lỗi và Makefile Đó Tự động hóa Quy trình xây dựng một hệ thống hoàn chỉnh dựa trên Linux OpenWrt cho một thiết bị nhúng, bởi Xây dựng và sử dụng một Cross-compilation toolchain thích hợp.

Thiết bị nhúng thường sử dụng một bộ xử lý khác nhau hơn so với một máy tính được tìm thấy trong máy chủ được sử dụng để xây dựng hình ảnh hệ thống OpenWrt của họ, đòi hỏi một toolchain cross-biên dịch. Như một toolchain lập chạy trên một hệ thống máy chủ, nhưng tạo ra mã cho một thiết bị nhúng nhắm mục tiêu và kiến trúc tập lệnh của vi xử lý (ISA). Ví dụ, nếu một hệ thống máy chủ sử dụng x86 và một hệ thống mục tiêu sử dụng MIPS32, toolchain compilation thường xuyên của các máy chủ chạy trên x86 và tạo ra mã cho kiến trúc x86, trong khi các toolchain cross-compilation chạy trên x86 và tạo ra mã cho các kiến trúc MIPS32. OpenWrt Buildroot Tự động hóa toàn bộ quá trình này để làm việc trên các kiến trúc tập lệnh của Embedded Devices Hầu hết các máy chủ và hệ thống.

OpenWrt Buildroot Cung cấp các tính năng sau:
* Làm cho nó dễ dàng để port phần mềm trên các kiến trúc khác nhau
* Sử dụng kconfig (Linux kernel menuconfig) cho cấu hình của tất cả các tùy chọn
* Cung cấp một toolchain cross-compiler tích hợp (gcc, ld, uClibc,...)
* cung cấp một khái niệm trừu tượng autotools (automake, autoconf), cmake và SCons
* Xử lý tiêu chuẩn OpenWrt hình ảnh xây dựng quy trình làm việc: tải về, vá, cấu hình, biên dịch và đóng gói
* Cung cấp một số bản sửa lỗi phổ biến cho biết gói nặng hành xử.

Ngoài việc xây dựng hình ảnh của hệ thống, môi trường phát triển OpenWrt cũng cung cấp một cơ chế cho việc đơn giản hóa xây dựng nền tảng của các gói phần mềm OpenWrt. Các mã nguồn cho mỗi gói phần mềm được yêu cầu để cung cấp một tập Makefile như các hướng dẫn xây dựng, và thiết lập một tùy chọn của các bản vá lỗi cho bản sửa lỗi hoặc tối ưu hóa.

## Tham khảo

## Liên kết ngoài

* 
* Dự án Luci 
* Trang chủ mã GPL Linksys 
* Trang chủ mã GPL TP-Link
* Buildroot: Làm nhúng Linux dễ dàng