User Tools

Site Tools


zh:supported_devices:432_warning

4/32警告

任何一个操作系统都需要:

  1. 足够的闪存以适应固件映像
  2. 足够的内存以保证稳定的运行

闪存小于4M或内存小于32M的设备在可用性、扩展性及操作的稳定性上将有所局限。 在您选择购买设备或因设备被受支持决定在设备上刷入OpenWrt时,请务必关注这点。参阅4/32警告以便获取更多信息。

可用性

稳定运行所需的最低内存要求

  • 32MB 是最低要求。在这个条件下,OpenWRT或许可以正常运行,取决于你的使用方法。
  • 64MB 可以很流畅的运行,相对于32M来说是一个更好的选择。

扩展性

需要有足够的闪存来存储LEDE固件镜像

  • 最少需要 4MB (无法安装 luci) / 推荐 8MB (可以装下 luci 以及一些其他的应用程序)
  • 4MB 已经可以工作了,但工作的不算太好。 >4MB 的闪存会让你在使用时感到更为舒畅。
  • 4MB 的设备几乎无法安装任何重要的软件,除非你使用 the Image Generator (Image Builder) (需要使用Linux系统,并且你需要有一点使用的经验) 或者使用 Extroot. 对于高级用户来说,安装特定的或者自定义的固件可以绕过这个限制;但对于新手用户,他们可能会发现他们浪费了几个小时的时间,因为这个可扩展的系统无法安装在他们的设备上。
  • 再考虑上可扩展性,我们的建议是:8MB(或更多)是更好的选择。

4MB闪存的设备只能存储LEDE固件镜像,故扩展性方面有着极大的限制。对于小闪存设备,你还是不要期望太多吧。

在多数情况下,如果你只有4MB的闪存,你将无法安装这些(或其他)热门的软件包:

  • VPNs 以及其他需要加密的软件
  • Samba 文件夹共享
  • 3G/4G 上网卡的支持
  • 用于Extroot的文件系统的驱动以及格式化和磁盘检查工具

支持性

随着时间的发展,小内存和闪存设备将会越来越难得到支持。OpenWRT可能在未来结束对这些设备的支持。

建议

  • 对于新用户,无论他们知不知道他们想要什么,但如果他们不知道他们需要什么,不知道怎么做的 → 选择 8/64
  • 对于有经验的用户,知道自己想要什么,知道需要什么,知道怎么做的 → 如果适合的话可以尝试 4/32 ;不适合就选择 8/64

由论坛用户slh所做的问题分析

以下内容来自论坛用户 slh这个主题帖

首先,我并不是假装为LEDE团队发言,但是数字却可以让问题显而易见。

以论坛中 “ Why no images generated for default D-Link DIR-600A1?“这个帖为例,显然其他一些4MB闪存设备比这个特定的样品稍好一点,但趋势仍然是一致的。

D-Link DIR-600A1:
Backfire 10.03..............: 2293764 bytes
Backfire 10.03.1............: 2949124 bytes
Attitude Adjustment 12.09...: 2883588 bytes
Barrier Breaker 14.07.......: 3276804 bytes
Chaos Calmer 15.05..........: 3342340 bytes
Chaos Calmer 15.05.1........: 3407876 bytes
LEDE 17.01 release branch...: 3473412 bytes
absolute firmware size......: 3735576 bytes
maximum usable firmware size: 3538944 bytes

(以上数字是包括luci和大致相同的功能集的各发行版本镜像大小)

The erase block size for this (and most other) devices is 64 KB, so you now end up with 256 KB (== 4 erase blocks) free space, compared to 320 KB (== 5 erase blocks before). While this may look comfortable at a first glance, you have to consider that free space can only be assigned in (full) block size chunks, so once you touch the overlay partition at all, you already have one erase block in use (64 KB). Therefore the firmware creation tools used by LEDE enforce at least 3 erase blocks reserve for the overlay filesystem (that's where the maximum usable firmware size comes from, compared to the total size of the firmware partition). In other words, with 17.01 you'll only have 1 erase block (64 KB) before the hard limit, while 15.05.1 still gave you 2 spare erase blocks (128 KB) for your own use. On top of this there is the file system overhead needed for formatting to jffs2 as well (jffs2 does some light compression, but its fs header and log (more or less directory entries) need some space, then there is the hard requirement to keep some free space (in erase block == 64 KB chunks) for the garbage collection to work) at all times, reducing the usable free space even further. Around 25 KB are used by the configuration overlay immediately after firstboot, before you actually get a chance to configure anything.

Assuming pure statistics, what will the situation be in 12 or 24 months[1]?

No one has yet raised the suggestion to actually remove the hardware support for affected devices from LEDE's source repository. If you look deeper, you can still find full support for the Linksys WRT-54GL (4 MB flash, 16 MB RAM) in the repo, although support for devices with just 16 MB RAM had already been discontinued with Attitude Adjustment 12.09 and despite the fact that actually building a working up-to-date firmware for this device today is quite challenging[2].

This thread merely serves as a reminder for 'normal users', who expect to download and flash LEDE under the expectation to use it as a full featured replacement for the vendor firmware (including a webinterface, luci). Also keep in mind that luci is enabled for release builds, which means that it either fits into the firmware image (with the mandatory safety margin of at least 3 erase blocks) or no release images can be created for the affected devices[3], [4]. In my very personal opinion, this needs to be documented quite obviously, avoiding to raise false hope and expectations for (especially new) users.
Advanced users will obviously be able to delay the inevitable by quite some margin - depending on their use-cases and abilities to reduce LEDE's footprint below normal system requirements.

Despite the title, the RAM size is actually a much harder limit, affecting much more than just 4 MB flash devices. If you look through the commit log, you will notice quite some efforts to get opkg to use less RAM, but it's still a problem with just 32 MB RAM (even for normal operations, before touching opkg). Likewise you already are in trouble with sysupgrade and trying to flash a (larger) 6-8 MB firmware on a device with just 32 MB RAM, unless you really clean up services and loaded kernel modules manually beforehand, there is a high risk that you'll oom during the sysupgrade and brick your device for good (requiring bootloader/ tftp assistance to recover in the best case).

[1] switching from mach files to device tree (post 17.01) offers a potential to free up a little space in the kernel, but this isn't a whole lot and will probably be eaten more or less completely by upgrading to kernel 4.9+ (also keep in mind that the FDT file needs to be appended to the kernel image, which might or might not compress as well as the mach files before), so don't expect a significant positive effect from this switch.

[2] no webinterface, better no pppd, quite some custom configurations to get the kernel's runtime memory requirements as small as possible, disabling whatever is humanly possible (definately no IPv6, better no wireless either).

[3] with LEDE's pretty new feature of device specific rootfs images, it would technically be possible to decide between installing luci or omitting it on a per device basis, e.g. based on flash sizes, but support for something like this hasn't been implemented yet and would require quite some attention (both as in source patches and tagging of device classes) from interested parties. As implemented right now, the decision is binary - either the default (release) config (including luci) fits XOR building a firmware image for the affected device fails and no firmware will be available.

[4] I would expect that there already are a couple of 4 MB flash devices in the target list for which no release firmware can be built for 17.01, because of less ideal flash partitioning schemes chosen by the vendor (dropping free space below 3 erase blocks). Those are probably a minority, but given the close numbers, I'd be very suprised if there wouldn't be any affected.

More explanations on this subject by forum user slh.

The opinion of a Core LEDE developer

As originally written in this forum post by jow.

Just providing my rather pragmatic opinion on the topic here:
I do not believe in arbitrarily dropping device support
We usually support devices as long as it is feasible
A device should be considered supported as long as

  • it is possible to build bootable images
  • small enough images can be produced to still allow configuration persistence
  • no patches or other modifications to the source and buildroot are required

Eventually we might need to think about support tiers like:

  • Full ⇒ allows for running gui, has working opkg and plenty of space to allow packages
  • Medium ⇒ allows for running gui, has working opkg and at least enough space for setting up extroot
  • Small ⇒ bootable images can be built when either sacrificing gui or opkg while still having configuration persistence
  • Micro ⇒ only choice are heavily tailored custom images that require special measures like pre-shipped configuration, NFS mounts, preconfigured extroot etc.
zh/supported_devices/432_warning.txt · Last modified: 2018/06/10 01:14 by jiangming1399