OpenWrt
Nhà phát triển | OpenWrt Project |
---|---|
Họ hệ điều hành | Tương tự Unix |
Tình trạng hoạt động | Đang phát triển |
Kiểu mã nguồn | Mã nguồn mở |
Phát hành lần đầu | Tháng 1 năm 2004 |
Có hiệu lực trong | 22 ngôn ngữ[1] |
Phương thức cập nhật | opkg |
Hệ thống quản lý gói | opkg |
Nền tảng | 50 nền tảng khác nhau Instruction sets: AVR32, ARM, CRIS, m68k, MIPS, PowerPC, SPARC, SuperH, Ubicom32, x86, x86-64[2] |
Loại nhân | Monolithic (Linux) |
Không gian người dùng | BusyBox, GNU |
Giao diện mặc định | Giao diện dòng lệnh, giao diện web |
Giấy phép | Phần mềm miễn phí (GPL và một số giấy phép khác) |
Website chính thức | 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ử
[sửa | sửa mã nguồn]Dự án bắt đầu vì Linksys cung cấp Firmware của thiết bị định tuyến WRT54G theo GPL.[3] 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ự,[4][5] 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
[sửa | sửa mã nguồn]Tagged | Tên Mã | Phiên bản | Ngày phát hành | Hạt nhân Linux | Thư viện C chuẩn | Gói PM | Gói Nguồn | Ghi chú | |
---|---|---|---|---|---|---|---|---|---|
(mặc định) | (có sẵn) | ||||||||
— | pre Buildroot-NG | 0.x | — | — | uClibc | 474 | ≈ 310 | ||
r6268 | White Russian | 0.9 | 1/2006 | 2.4.30 | uClibc | ≈ 360 | ≈ 140 | NVRAM-based, nas , wl . Nền tảng được hỗ trợ: brcm-2.4 .
| |
r7428 | Kamikaze | 7.06 | 6/2007 | 2.6.19 | uClibc | ≈ 750 | ≈ 450 | Sử dụngopkg .
Nền tảng được hỗ trợ: | |
r7832 | Kamikaze | 7.07 | 7/2007 | 2.6.21 | uClibc | ≈ 790 | ≈ 475 | Nền tảng mới: amcc-2.6 .
| |
r8679 | Kamikaze | 7.09 | 9/2007 | 2.6.21 | uClibc | ≈ 630 | ≈ 500 | ||
r14547 | Kamikaze | 8.09 | 9/2008 | 2.6.26 | uClibc | ≈ 1,400 | ≈ 875 | Nền tảng mới: ar71xx .
| |
r16279 | Kamikaze | 8.09.1 | June 2009 | 2.6.26 | uClibc | ≈ 1,400 | ≈ 875 | ||
r18961 | Kamikaze | 8.09.2 | tháng 1 ngày 10, 2010[6] | 2.6.26 | uClibc | ≈ 1,400 | ≈ 875 | ||
r20742 | Backfire | 10.03 | tháng 4 ngày 7, 2010[7] | 2.6.32 | uClibc | ≈ 2,350 | ≈ 1,050 | Nền tảng được hỗ trợ: adm5120_mips , adm5120_mipsel , ar7 , ar71xx , atheros , au1000 , avr32 , brcm-2.4 , brcm47xx , brcm63xx , cobalt , ep80579 , ifxmips , ixp4xx , kirkwood , octeon , orion , ppc40x , ppc44x , rb532 , rdc , x86 and xburst .
| |
r29594 | Backfire | 10.03.1 | tháng 12 ngày 21, 2011[8] | 2.6.32 | uClibc | eglibc glibc |
≈ 2,950 | ≈ 1,175 | |
r36088 | Attitude Adjustment | 12.09 | tháng 4 ngày 25, 2013[9] | 3.3 | uClibc | eglibc | ≈ 3,450 | ≈ 1,150 | CoDel (network scheduler) backported from Linux 3.5 to 3.3. New platforms: ramips , bcm2708 (Raspberry Pi) and others.
|
r42625 | Barrier Breaker | 14.07 | tháng 10 ngày 2, 2014[10] | 3.10.49[11] | uClibc | musl eglibc |
? | ? | New platforms: i.MX23 , i.MX6 [12] and mvebu .
|
r46767 | Chaos Calmer | 15.05 | tháng 9 ngày 11, 2015[13] | 3.18.20[14] | uClibc | musl glibc[15] |
? | ? | nftables (available since Linux kernel 3.12); New platforms: TBA if any |
trunk | [16] | Designated Driverdevelopment | — | ≥4.1 | musl[17] | uClibc glibc |
? | ? | |
Phiên bản cũ Phiên bản mới nhất Phiên bản xem trước mới nhất Ra mắt trong tương lai |
Không tương thích phần cứng
[sửa | sửa mã nguồn]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
.[18][19]
Tính năng
[sửa | sửa mã nguồn]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[20][21] 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[22]
- 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 [23]
- 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.[24] Đ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[25]
- 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
[sửa | sửa mã nguồn]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.[26] 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.[25]
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[27] 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.
-
Luci
-
X-WRT
-
Gargoyle
Phát triển
[sửa | sửa mã nguồ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.[28][29]
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.[28][30]
OpenWrt Buildroot Cung cấp các tính năng sau:[28][30]
- 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.[31]
Tham khảo
[sửa | sửa mã nguồn]- ^ “LuCI Translation Portal”. ngày 1 tháng 9 năm 2004. Bản gốc lưu trữ ngày 19 tháng 11 năm 2010. Truy cập ngày 31 tháng 12 năm 2010.
- ^ “Config.in in trunk/target – OpenWrt”. Dev.openwrt.org. ngày 22 tháng 11 năm 2013. Bản gốc lưu trữ ngày 22 tháng 2 năm 2014. Truy cập ngày 13 tháng 2 năm 2014.
- ^ [Linksys WRT54G https://lkml.org/lkml/2003/6/7/164 và các GPL] trên LKML (7 tháng 6 năm 2003)
- ^ The Open Source WRT54G Story Aaron Weiss (08 tháng 11 năm 2005)
- ^ Linksys Releases GPLed Code for WRT54G trên Slashdot (July 2003)
- ^ “Release Notes Kamikaze 8.09.2”. openwrt.org. 10 tháng 1 năm 2010. Truy cập ngày 26 tháng 4 năm 2013.
- ^ “Release Notes Backfire 10.03”. openwrt.org. 7 tháng 4 năm 2010. Truy cập ngày 26 tháng 4 năm 2013.
- ^ “Release Notes Backfire 10.03.1”. openwrt.org. 21 tháng 12 năm 2011. Truy cập ngày 26 tháng 4 năm 2013.
- ^ “Release Notes Attitude Adjustment 12.09”. openwrt.org. 25 tháng 4 năm 2013. Truy cập ngày 26 tháng 4 năm 2013.
- ^ “OpenWrt BarrierBreaker 14.07”. openwrt.org. tháng 10 năm 2014.
- ^ “kernel: update to 3.10.49 – OpenWrt”. dev.openwrt.org. 20 tháng 7 năm 2014. Bản gốc lưu trữ ngày 24 tháng 7 năm 2015. Truy cập ngày 1 tháng 1 năm 2015.
- ^ Freescale i.MX support
- ^ “OpenWrt Chaos Calmer 15.05”. openwrt.org. tháng 9 năm 2015.
- ^ “[OpenWrt-Devel] Chaos Calmer 15.05-rc3”. 16 tháng 7 năm 2015. Bản gốc lưu trữ ngày 28 tháng 9 năm 2015. Truy cập ngày 28 tháng 1 năm 2016.
- ^ “[OpenWrt-Devel] [PATCH 1/2] toolchain: The glorious return of glibc, ver 2.21”. 11 tháng 3 năm 2015. Bản gốc lưu trữ ngày 30 tháng 6 năm 2015. Truy cập ngày 28 tháng 1 năm 2016.
- ^ “Changeset 46846: change banner to Designated Driver release”. ngày 11 tháng 9 năm 2015. Bản gốc lưu trữ ngày 29 tháng 9 năm 2015. Truy cập ngày 28 tháng 1 năm 2016.
- ^ “[OpenWrt-Devel] OpenWrt switches to musl by default”. 16 tháng 6 năm 2015. Bản gốc lưu trữ ngày 30 tháng 6 năm 2015. Truy cập ngày 28 tháng 1 năm 2016.
- ^ “Release Notes for Attitude Adjustment (12.09 final)”. openwrt.org. ngày 25 tháng 4 năm 2013. Truy cập ngày 26 tháng 9 năm 2013.
- ^ “OpenWrt: Table of Hardware”. openwrt.org. Truy cập ngày 26 tháng 9 năm 2013.
- ^ “Debating overlayfs”. ngày 15 tháng 6 năm 2011.
- ^ “OpenWrt partition layout”.
- ^ “OpenWrt Unified Configuration Interface”.
- ^ freecwmp is a CWMP client for OpenWrt
- ^ “Changeset 31756 – OpenWrt”. Dev.openwrt.org. ngày 16 tháng 5 năm 2012. Truy cập ngày 13 tháng 2 năm 2014.
- ^ a b “LuCI project”. Bản gốc lưu trữ ngày 26 tháng 10 năm 2015. Truy cập ngày 28 tháng 2 năm 2009.
- ^ “OpenWrt 8.09 release notes”. Truy cập ngày 23 tháng 2 năm 2009.
- ^ “Gargoyle Router Management Utility”. Truy cập ngày 21 tháng 8 năm 2011.
- ^ a b c “OpenWrt Buildroot – About”. openwrt.org. Truy cập ngày 21 tháng 10 năm 2013.
- ^ “OpenWrt Buildroot - Usage and documentation”. openwrt.org. ngày 8 tháng 1 năm 2006. Bản gốc lưu trữ ngày 21 tháng 10 năm 2013. Truy cập ngày 21 tháng 10 năm 2013.
- ^ a b Tao Jin (ngày 13 tháng 2 năm 2012). “OpenWrt Development Guide” (PDF). Wireless Networks Lab, CCIS, NEU. Truy cập ngày 21 tháng 10 năm 2013.
- ^ “Creating packages”. openwrt.org. Truy cập ngày 21 tháng 10 năm 2013.