OpenWrt

Bách khoa toàn thư mở Wikipedia
Buớc tưới chuyển hướng Bước tới tìm kiếm
OpenWrt
Openwrt Logo.svg
Openwrt-15.05-login.svg
OpenWrt 15.05 ("Chaos Calmer") login screen
Nhà phát triểnOpenWrt Project
Họ hệ điều hànhUnix-like
Tình trạng
hoạt động
Đang phát triển
Kiểu mã nguồnMã nguồn mở
Phát hành lần đầuTháng 1, 2004 (2004-01)
Có hiệu lực
trong
22 languages[1]
Phương thức
cập nhật
opkg
Hệ thống
quản lý gói
opkg
Nền tảng50 nền tảng khác nhau Instruction sets: AVR32, ARM, CRIS, m68k, MIPS, PowerPC, SPARC, SuperH, Ubicom32, x86, x86-64[2]
Loại hạt nhânMonolithic (Linux)
Không gian
người dùng
BusyBox, GNU
Giao diện
mặc định
CLI, WebUIs
Giấy phépFree software (GPL and other licenses)
Website chính thứcopenwrt.org

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)
Không có Phiên bản cũ, không còn được hỗ trợ: pre Buildroot-NG 0.x Không có Không có uClibc 474 ≈ 310
r6268 Phiên bản cũ, không còn được hỗ trợ: 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 Phiên bản cũ, không còn được hỗ trợ: Kamikaze 7.06 6/2007 2.6.19 uClibc ≈ 750 ≈ 450 Sử dụngopkg.

Nền tảng được hỗ trợ: atheros-2.6, au1000-2.6, brcm-2.4, brcm47xx-2.6, ixp4xx-2.6, imagicbox-2.6, rb532-2.6 and x86-2.6.

r7832 Phiên bản cũ, không còn được hỗ trợ: Kamikaze 7.07 7/2007 2.6.21 uClibc ≈ 790 ≈ 475 Nền tảng mới: amcc-2.6.
r8679 Phiên bản cũ, không còn được hỗ trợ: Kamikaze 7.09 9/2007 2.6.21 uClibc ≈ 630 ≈ 500
r14547 Phiên bản cũ, không còn được hỗ trợ: Kamikaze 8.09 9/2008 2.6.26 uClibc ≈ 1,400 ≈ 875 Nền tảng mới: ar71xx.
r16279 Phiên bản cũ, không còn được hỗ trợ: Kamikaze 8.09.1 June 2009 2.6.26 uClibc ≈ 1,400 ≈ 875
r18961 Phiên bản cũ, không còn được hỗ trợ: Kamikaze 8.09.2 tháng 1 ngày 10, 2010[6] 2.6.26 uClibc ≈ 1,400 ≈ 875
r20742 Phiên bản cũ, không còn được hỗ trợ: 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 Phiên bản cũ, không còn được hỗ trợ: Backfire 10.03.1 tháng 12 ngày 21, 2011[8] 2.6.32 uClibc eglibc
glibc
≈ 2,950 ≈ 1,175
r36088 Phiên bản cũ, không còn được hỗ trợ: 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 Phiên bản cũ, không còn được hỗ trợ: 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 Phiên bản ổn định hiện tại: 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 Bản ra mắt trong tương lai: Designated Driver[16] development Không có ≥4.1 musl[17] uClibc
glibc
? ?
Chú giải:
Phiên bản cũ
Phiên bản cũ, vẫn được hỗ trợ
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.

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 vv)
  • 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]

  1. ^ “LuCI Translation Portal”. Ngày 1 tháng 9 năm 2004. Truy cập ngày 31 tháng 12 năm 2010. 
  2. ^ “Config.in in trunk/target – OpenWrt”. Dev.openwrt.org. Ngày 22 tháng 11 năm 2013. Truy cập ngày 13 tháng 2 năm 2014. 
  3. ^ [Linksys WRT54G https://lkml.org/lkml/2003/6/7/164 và các GPL] trên LKML (7 tháng 6 năm 2003)
  4. ^ The Open Source WRT54G Story Aaron Weiss (08 tháng 11 năm 2005)
  5. ^ Linksys Releases GPLed Code for WRT54G trên Slashdot (July 2003)
  6. ^ “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. 
  7. ^ “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. 
  8. ^ “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. 
  9. ^ “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. 
  10. ^ “OpenWrt BarrierBreaker 14.07”. openwrt.org. Tháng 10 năm 2014. 
  11. ^ “kernel: update to 3.10.49 – OpenWrt”. dev.openwrt.org. 20 tháng 7 năm 2014. 
  12. ^ Freescale i.MX support
  13. ^ “OpenWrt Chaos Calmer 15.05”. openwrt.org. Tháng 9 năm 2015. 
  14. ^ “[OpenWrt-Devel] Chaos Calmer 15.05-rc3”. 16 tháng 7 năm 2015. 
  15. ^ “[OpenWrt-Devel] [PATCH 1/2] toolchain: The glorious return of glibc, ver 2.21”. 11 tháng 3 năm 2015. 
  16. ^ “Changeset 46846: change banner to Designated Driver release”. 11 tháng 9 năm 2015. 
  17. ^ “[OpenWrt-Devel] OpenWrt switches to musl by default”. 16 tháng 6 năm 2015. 
  18. ^ “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. 
  19. ^ “OpenWrt: Table of Hardware”. openwrt.org. Truy cập ngày 26 tháng 9 năm 2013. 
  20. ^ “Debating overlayfs”. Ngày 15 tháng 6 năm 2011. 
  21. ^ “OpenWrt partition layout”. 
  22. ^ “OpenWrt Unified Configuration Interface”. 
  23. ^ freecwmp is a CWMP client for OpenWrt
  24. ^ “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. 
  25. ^ a ă “LuCI project”. Truy cập ngày 28 tháng 2 năm 2009. 
  26. ^ “OpenWrt 8.09 release notes”. Truy cập ngày 23 tháng 2 năm 2009. 
  27. ^ “Gargoyle Router Management Utility”. Truy cập ngày 21 tháng 8 năm 2011. 
  28. ^ a ă â “OpenWrt Buildroot – About”. openwrt.org. Truy cập ngày 21 tháng 10 năm 2013. 
  29. ^ “OpenWrt Buildroot - Usage and documentation”. openwrt.org. Ngày 8 tháng 1 năm 2006. Truy cập ngày 21 tháng 10 năm 2013. 
  30. ^ a ă 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. 
  31. ^ “Creating packages”. openwrt.org. Truy cập ngày 21 tháng 10 năm 2013. 

Liên kết ngoài[sửa | sửa mã nguồn]