Зменшення розміру прошивки та використання оперативної памʼяті

У пристроях з лише 4 МБ флеш-памʼяті важливо економити кожен кілобайт. Ви можете зекономити місце, компілюючи власний імідж прошивки (наприклад, через Image Builder), виключивши непотрібні пакети.

Щоб повністю видалити підтримку IPv6, необхідно передати параметр CONFIG_IPV6=n під час виклику `make`.

Дія Пакети Шлях у меню
видалити PPPoE -ppp -ppp-mod-pppoe Network
видалити IPv6 -ip6tables -odhcp6c -kmod-ipv6 -kmod-ip6tables -odhcpd-ipv6only Global build settings / Enable IPv6 support in packages
видалити DHCP сервер -odhcpd Network
видалити iptables -iptables Network / Firewall
видалити opkg -opkg Base system
додати мінімальний LuCI uhttpd uhttpd-mod-ubus Network / Web Servers/Proxies
libiwinfo-lua Languages / Lua
luci-base luci-app-firewall luci-mod-admin-full luci-theme-bootstrap LuCI
додати zram zram-swap Base system

:!: Не використовуйте zram-swap на пристроях з 4 МБ флеш-памʼяті, оскільки він збільшує розмір прошивки. Він наведений тут, оскільки корисний лише на пристроях з дуже малою RAM.

:?: Префікс -PACKAGE_NAME означає видалення пакета. Без префікса — додавання.

Приклад команди Image Builder

:!: Змініть PROFILE=tl-wr941nd-v6 на свій пристрій. Використовуйте make info для отримання списку доступних профілів.

LuCI Дія Команда
with LuCI - видалити PPPoE і IPv6
+ додати лише необхідні компоненти luci.
make image PROFILE=tl-wr941nd-v6 \ PACKAGES=“uhttpd uhttpd-mod-ubus libiwinfo-lua luci-base \ luci-app-firewall luci-mod-admin-full luci-theme-bootstrap \ -ppp -ppp-mod-pppoe -ip6tables -odhcp6c \ -kmod-ipv6 -kmod-ip6tables -odhcpd-ipv6only”
без LuCI - видалити PPPoE і IPv6 make image PROFILE=tl-wr941nd-v6 \ PACKAGES=“-ppp -ppp-mod-pppoe -ip6tables -odhcp6c \ -kmod-ipv6 -kmod-ip6tables -odhcpd-ipv6only”

Ресурси:

Пристрої з 16MB RAM рекомендується використовувати лише як точки доступу (AP).

RAM Дія Команда
16MB - видалити pppoe та IPv6
- видалити всі елементи iptables
- видалити dhcp сервери
+ додати LUCI
+ додати zram-swap
- видалити opkg - не потрібен при виконанні цих дій
make image PROFILE=tl-wr941nd-v6 \ PACKAGES=“uhttpd uhttpd-mod-ubus libiwinfo-lua \ luci-base luci-app-firewall luci-mod-admin-full \ luci-theme-bootstrap zram-swap \ -ppp -ppp-mod-pppoe -iptables -ip6tables -odhcp6c -kmod-ipv6 \ -kmod-ip6tables -odhcpd-ipv6only -odhcpd -opkg”
32MB - видалити pppoe та IPv6
+ додати LUCI
+ додати zram-swap
- видалити opkg - не потрібен при виконанні цих дій
make image PROFILE=tl-wr941nd-v6 \ PACKAGES=“uhttpd uhttpd-mod-ubus libiwinfo-lua luci-base \ luci-app-firewall luci-mod-admin-full luci-theme-bootstrap zram-swap \ -ppp -ppp-mod-pppoe -ip6tables -odhcp6c -kmod-ipv6 \ -kmod-ip6tables -odhcpd-ipv6only -opkg”

Ресурси:

Цей метод компілює модулі ядра всередину ядра. Можна вручну позначити потрібні модулі як y у `make kernel_menuconfig`, або зробити масову заміну:

sed -i -e "s/=m/=y/g" build_dir/target-mipsel_24kc_musl/linux-ramips_mt7620/linux-4.14.63/.config

Це працює лише якщо розділ ядра досить великий або пристрій підтримує динамічні розділи.

:!: Не можна вивантажити модулі, вбудовані у ядро. Але така інтеграція — ефективніша.

Можна зекономити простір, міняюючи змінні через make menuconfig.

Змінна конфігурації Шлях меню Коментарі
CONFIG_KERNEL_PRINTK=n Kernel build options Вимкнути printk
CONFIG_KERNEL_CRASHLOG=n Kernel build options Вимкнути crashlog
CONFIG_KERNEL_SWAP=n Kernel build options Вимкнути swap
CONFIG_KERNEL_KALLSYMS=n Kernel build options Вимкнути таблицю символів
CONFIG_KERNEL_DEBUG_INFO=n Kernel build options Вимкнути дебаг-інформацію
CONFIG_KERNEL_ELF_CORE=n Kernel build options Вимкнути core dump
CONFIG_IPV6=n Enable IPv6 support in packages Вимкнути IPv6 повністю
CONFIG_KERNEL_MAGIC_SYSRQ=n Kernel build options Вимкнути SysRq
CONFIG_KERNEL_PRINTK_TIME=n Kernel build options Вимкнути timestamps
CONFIG_PACKAGE_MAC80211_DEBUGFS=n Wireless Drivers / kmod-mac80211 -21 КБ
CONFIG_PACKAGE_MAC80211_MESH=n Wireless Drivers / kmod-mac80211 -29 КБ
CONFIG_STRIP_KERNEL_EXPORTS=y Strip kernel exports Видалити непотрібне
CONFIG_USE_MKLIBS=y Strip libraries Видалити непотрібні функції
CONFIG_SERIAL_8250=n Serial drivers Зекономить RAM, але зламає sysupgrade
CONFIG_EARLY_PRINTK=n Kernel hacking Доступно лише через kernel_menuconfig
KERNEL_SQUASHFS_FRAGMENT_CACHE_SIZE Kernel build options Менше кешу — менше RAM
TARGET_SQUASHFS_BLOCK_SIZE squashfs Збільшити block size для кращого стиснення

:!: Block size має бути степенем двійки (від 4КБ до 1МБ). Більший блок = більше RAM на кеш, більше CPU для розпакування.

:!: Щоб зібрати ядро тільки для одного пристрою, виконайте:

make kernel_menuconfig CONFIG_TARGET=subtarget

і вимкніть усі інші моделі.

Змінна Шлях
CONFIG_PACKAGE_zram-swap=y Base system
CONFIG_PROCD_ZRAM_TMPFS=y procd Configuration
CONFIG_KERNEL_SWAP=y Kernel build options

Іконки в LuCI не критичні. Їх можна замінити на 1-піксельні прозорі — це зекономить ~15 КБ.

Click to display ⇲

Click to hide ⇱

#!/bin/sh
if [ -z "$1" ]; then echo Need git path as parameter; exit 1; fi
cd "$1" || exit 1
gitpath=`pwd`
echo Installing to $gitpath
mkdir -p files/www/luci-static/resources/icons/
mkdir -p files/www/luci-static/resources/cbi/
wget -O files/www/luci-static/resources/cbi/blank.gif 'https://raw.githubusercontent.com/mathiasbynens/small/master/gif-transparent.gif'
wget -O files/www/luci-static/resources/cbi/blank.png 'https://raw.githubusercontent.com/mathiasbynens/small/master/png-transparent.png'
cd feeds/luci/modules/luci-base/htdocs/luci-static/resources/cbi
for a in *.gif; do ln -s blank.gif "$gitpath"/files/www/luci-static/resources/cbi/$a; done
cd ../icons
for a in *.gif; do ln -s ../cbi/blank.gif "$gitpath"/files/www/luci-static/resources/icons/$a; done
for a in *.png; do ln -s ../cbi/blank.png "$gitpath"/files/www/luci-static/resources/icons/$a; done

Зовнішні посилання

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2025/05/31 09:53
  • by vazaz