Как знать дисковое пространство, занятое пакетами в OpenWrt?

Эта строка,

Option "AutoAddDevices" "false"

конечно, не предназначен для rc.conf но для xorg.conf (от man xorg.conf):

Option "AutoAddDevices" "boolean"

Если эта опция будет отключена, то никакие устройства не будут добавлены от HAL или udev бэкендов. Включенный по умолчанию.

Просто попытайтесь добавить его там (к ServerLayout или ServerFlags разделите, см. документацию относительно Конфигурации X11).

Я немного удивлен, что Вы получили KDM, запущенный вообще, я буду ожидать вещи ниже line-not-meant-for-rc.conf быть проигнорированным.

16
11.01.2018, 07:20
3 ответа

не каждая среда OpenWRT IST настроен так же, поэтому мой ответ - это выстрел в темноте ...

Пример выхода взят из OpenWRT-12.09 на «TP-Link TL-WDR4300».

SSH в ваш роутер.

Проверьте свои файловые файлы.

root@AP9:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                    5184      2124      3060  41% /
/dev/root                 2048      2048         0 100% /rom
tmpfs                    63340       948     62392   1% /tmp
tmpfs                      512         0       512   0% /dev
/dev/mtdblock3            5184      2124      3060  41% /overlay
overlayfs:/overlay        5184      2124      3060  41% /
/dev/sda1             31234700    593536  29075728   2% /mnt/sda1

/ dev / sda1 - это карта Micro SD моей палочки UMTS ... просто игнорируйте это.

Многие маршрутизаторы вспыхнули аналогичным образом, как видно здесь: rootly root Fileyytem выполнен Pseudo с записью наложенной файловой системы.

Просмотр / Overlay ...

root@AP9:~# cd /overlay/usr/lib/opkg/info/
root@AP9:/overlay/usr/lib/opkg/info# ls *.list | tail -3
usb-modeswitch-data.list
usb-modeswitch.list
zlib.list

Этот каталог содержит информацию о дополнительно установленных пакетах. Файлы, заканчивающиеся с .List , являются списки файлов, установленных пакетом с аналогичным именем (без .List ):

root@AP9:/overlay/usr/lib/opkg/info# cat zlib.list 
/usr/lib/libz.so.1.2.7
/usr/lib/libz.so.1
/usr/lib/libz.so

Пакет ZLIB имеет 3 файла установлены.

root@AP9:/overlay/usr/lib/opkg/info# du $(cat zlib.list) 
71      /usr/lib/libz.so.1.2.7
1       /usr/lib/libz.so.1
1       /usr/lib/libz.so

Пакет ZLIB имеет 73кбайт установленных файлов.

Неочищенный 1-лайнер, чтобы приклеить это все вместе, и он сокращен выход:

# awk 'BEGIN{D="cd /overlay/usr/lib/opkg/info&&";C=D"ls *.list";while(C|getline>0){P=substr(F=$1,1,length($1)-5);J=D"du -sk $(cat "F")";s=0;while(J|getline>0){s+=$1;t+=$1}close(J);print s"\t"P}print t"\t---TOTAL---"}'
26      blkid
30      block-mount
17      chat
55      comgt
6       kmod-fs-exportfs
(((...some lines skipped...)))
14      portmap
48      swap-utils
223     usb-modeswitch-data
45      usb-modeswitch
73      zlib
4184    ---TOTAL---

HTH!


Добавлено 2014-10-17:

Следующий вывод взята из OpenWRT-12.09 на «TP-Link TL-WR703N» и показывает, как добавить сортировку вывода по размеру пакета.

Посмотрите на то, где и как переменная S входит в игру ...

# awk 'BEGIN{D="cd /overlay/usr/lib/opkg/info&&";C=D"ls *.list";S="sort -n";while(C|getli
ne>0){P=substr(F=$1,1,length($1)-5);J=D"du -sk $(cat "F")";s=0;while(J|getline>0){s+=$1;t+=$1}close(J)
;print s"\t"P|S}close(S);print t"\t---TOTAL---"}'
5       kmod-lib-crc16
5       luci-proto-3g
12      libuuid
13      kmod-usb-serial-wwan
17      chat
24      kmod-usb-acm
24      libusb
26      blkid
30      block-mount
41      kmod-usb-serial
45      usb-modeswitch
48      kmod-usb-serial-option
48      swap-utils
55      comgt
67      kmod-usb-storage
148     libblkid
154     kmod-scsi-core
223     usb-modeswitch-data
382     kmod-fs-ext4
1367    ---TOTAL---

снова: HTH!


Добавлено 2018-01-13:

Вышеуказанный путь был протестирован на OpenWRT-AA.

Теперь, глядя на LEDE-17.01, путь изменился: замена / наложение с / наложение / верхний исправляет это.

Статус-кво ( OPKG-List-User - установленный пользователем-сортированный по размеру Не как 1-лайнер):

#!/usr/bin/awk -f
BEGIN {
        D="cd /overlay/upper/usr/lib/opkg/info&&"
        C=D"ls *.list"
        S="sort -n"
        while(C|getline>0) {
                P=substr(F=$1,1,length($1)-5)
                J=D"du -sk $(cat "F")"
                s=0
                while(J|getline>0) {
                        s+=$1
                        t+=$1
                }
                close(J)
                print s"\t"P|S
        }
        close(S)
        print t"\t---TOTAL---"
}

Test Run:

root@zsun0:~# ./opkg-list-user-installed-sorted-by-size
8       luci-ssl
9       libustream-mbedtls
13      px5g-mbedtls
338     libmbedtls
368     ---TOTAL---

Открытый вопрос: когда это изменение / Overlay Структура происходит? LEDE-17 - преемник OpenWRT-CC, и у меня нет систем Runnig OpenWRT под рукой. Поэтому, если вам нужно это на OpenWRT-BB или -CC, сначала просмотр / Outlay .

11
27.01.2020, 19:48

Ваша проблема кажется, Будьте скомпилированы Python без поддержки Zlib. Убедитесь, что у вас установлен zlib-devel ( sudo apt-apt-rot stall zlib1g-dev ) до Компиляция Python. Нет ничего плохого в использовании Python скомпилированного вами, кроме того или вместо системы. Однако вы должны не забывать быть явным при вызове Python и вызвать тот, который вы намерены использовать, указав полный путь, как / usr / local / bin / python вместо простых python . В качестве альтернативы вы можете добавить ( / usr / local / bin / ) до вашего Путь до / usr / bin / , чтобы при наличии Python Система запускает ваш сборник Python.

-121--86115-

Основываясь на решении , есть другая возможность, что может быть быстрее. Вместо того, чтобы вычислить размер с DU для файлов в файле , мы можем использовать объявленный размер в элементе управления .

Что-то вроде моего маленького opkg_sizes скрипт

cd /usr/lib/opkg/info
for i in *.control
do
  echo `grep Size "$i" | cut -f 2 -d :` "${i%.control}"
done

Если вы хотите отсортировать вывод, вы можете запустить его через Сортировка :

./opkg_sizes | sort -n

Edit

Сравнение моего сценария Результаты yeti раскрытые различия. Это потому, что он упоминал / overlay / usr / lib / opkg / info , когда я думал, что префикс / Overlay не нужен. Ну, я не понимаю, почему, но / usr / lib / opkg / info дает также пакеты системы, а / overlay / usr / lib / opkg / info дает только пакеты пользователя.

Итак, если пользователь также заинтересован в пакетах системы, используйте первую версию. Но для того, чтобы добиться только пакетов пользователя, просто замените первую строку в:

 cd /overlay/usr/lib/opkg/info

после этого, оба скрипты относятся к той же упаковкам, но с разными номерами ... (помимо очевидной зависимости между байтами и килобайтами: - ))


root@ap8:~# ls -l 1412453029-14.07-wdr4300-default-packages 
-rw-r--r--    1 root     root          2683 Oct  4 20:03 1412453029-14.07-wdr4300-default-packages
root@ap8:~# du 1412453029-14.07-wdr4300-default-packages 
3       1412453029-14.07-wdr4300-default-packages

LS показывает размер в байтах, du показывает размер всех блоков, выделенных файлом.

4
27.01.2020, 19:48

Этот ответ является улучшенной версией ответа Zvika. Поскольку исходный код существенно отличается, я считаю, что лучше добавить его в качестве дополнительного ответа, а не редактировать исходный.

#!/bin/sh
grep -H Installed-Size: /overlay/usr/lib/opkg/info/*.control | \
  sed 's,^.*/\([^/]\+\)\.control:Installed-Size: *\(.*\),\2\t\1,'

В оригинальном коде требовалось слишком много форков, что делало его медленным до секунды. Этот улучшенный код короче и использует только три процесса, что приводит к молниеносному времени выполнения в 0,02 секунды (на моем маршрутизаторе).

Вы можете изменить пути:

  • /overlay/usr/lib/opkg/info/*.control → Установленные пользователем пакеты. Это пакеты, которые можно удалить, чтобы освободить место.
  • /rom/usr/lib/opkg/info/*.control → системные пакеты. Они не могут быть удалены. (Если только вы не действительно знаете, что делаете.) Поскольку они хранятся в разделе "только для чтения", их удаление не освободит дополнительное место.
  • /usr/lib/opkg/info/*.control → все пакеты.
2
27.01.2020, 19:48

Теги

Похожие вопросы