OpenWrt paketlerinin kapladığı disk alanını nasıl bilebilirim?


16

Cihazımda OpenWrt yapılandırmaya çalışıyorum ve alanım bitti. Bazı takım paketleri indiriyordum. Şimdi ne kaldıracağına karar vermek için ağırlıklarını nasıl belirleyebilirim?

Kurulu paketlerin boyutunu OPKG ile görüntülemek mümkün müdür?

Yanıtlar:


11

Her OpenWrt ortamı aynı şekilde kurulmaz, bu yüzden cevabım karanlıkta bir çekimdir ...

Örnek çıktı bir "TP-Link TL-WDR4300" üzerinde OpenWrt-12.09'dan alınmıştır.

ssh yönlendiricinize.

Dosya sistemlerinizi kontrol edin.

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 UMTS çubuğumun mikro SD kartı ... bunu görmezden gel.

Birçok yönlendirici, burada görüldüğü gibi benzer şekilde yanıp söner: Salt okunur bir kök dosya sistemi, bir kaplama dosya sistemi tarafından sahte yazılabilir hale getirilir.

İçeri bak /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

Bu dizin ek olarak yüklenen paketler hakkında bilgi içerir. İle biten .listdosyalar paket tarafından benzer ada sahip (olmadan .list) kurulan dosyaların listeleridir :

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

Paketin zlibyüklü 3 dosyası var.

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

Pakette zlib73kbyte yüklü dosya var.

Bunları bir araya getirmek için ham bir 1-astar ve çıktı kısaltılmış:

# 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 eklendi:

Aşağıdaki çıktı bir "TP-Link TL-WR703N" üzerindeki OpenWrt-12.09'dan alınır ve çıktıyı paket boyutuna göre nasıl sıralayacağınızı gösterir.

Değişkenin oyuna nereden ve nasıl Sgeldiğine bir göz atın ...

# 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---

Tekrar: HTH!


2018-01-13 eklendi:

Yukarıdaki yol OpenWrt-AA üzerinde test edilmiştir.

Şimdi bir yol değişti LEDE-17,01 bakarak: Değiştirme /overlayile /overlay/upperdüzeltmeleri bu.

Statüko ( opkg-list-user-installed-sorted-by-size1 astarlı değil):

#!/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 sürüşü:

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

Açık soru: /overlayYapısındaki bu değişiklik ne zaman oldu ? LEDE-17, OpenWrt-CC'nin halefidir ve elimde OpenWrt tarafından çalıştırılan hiçbir sistem yok. Bu nedenle, OpenWrt-BB veya -CC'de buna ihtiyacınız varsa, önce içine bir göz atın /overlay.


Müthiş! Sadece sıralama eksik ;-)
bonanza

@bonanza ... Poof! Veya AWKish'te "simsAWKlabim" ... ;-D

4

Yeti'nin çözümüne dayanarak, daha hızlı olabilecek başka bir olasılık daha var. Dosyadaki dudosyaların boyutunu kullanarak hesaplamak yerine , listdosyada belirtilen boyutu kullanabiliriz control.

Benim küçük opkg_sizessenaryom gibi bir şey

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

Çıktının sıralanmasını istiyorsanız, şu yolla çalıştırabilirsiniz sort:

./opkg_sizes | sort -n

DÜZENLE

Senaryo sonuçlarımı yeti'nin ortaya çıkan farklılıklarıyla karşılaştırmak. Çünkü ön ekin gereksiz /overlay/usr/lib/opkg/infoolduğunu düşündüğü sırada bahsetti /overlay. Nedenini tam olarak anlamadım, ancak /usr/lib/opkg/infosistem paketlerini verirken /overlay/usr/lib/opkg/info, yalnızca kullanıcının paketlerini veriyor.

Dolayısıyla, kullanıcı sistem paketleriyle de ilgileniyorsa, ilk sürümü kullanın. Ancak yalnızca kullanıcının paketlerine ulaşmak için ilk satırı şu şekilde değiştirin:

 cd /overlay/usr/lib/opkg/info

Bunu yaptıktan sonra, her iki komut dosyası da aynı paketlere karşılık gelir, ancak farklı sayılarla ... (bayt ve kilobayt arasındaki bariz farkın yanı sıra :-))


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

lsbayt cinsinden duboyutu, dosya tarafından ayrılan tüm blokların boyutunu gösterir.


İndirilen paketlerin ne kadar alan harcadığı soruldu. Yanıp sönen ürün yazılımına yüklenen paketlerin kaldırılması, bindirme dosya sisteminde yer açmaz. . . . . . En azından bu soruyu yorumlama

Soruyu anladığınıza katılıyorum. Ama / yer paylaşımının gerçek sistemi yansıtması gerektiğini düşündüm, belki daha fazla bilgiye sahip olabilirdim; ama daha az bilgi içerdiğine şaşırdım .
Zvika

Ayrıca, 2 yöntemin farklı sayılar vermesi garip ...
Zvika

dudosya sistemi blok boyutu ayrıntılarını sayar. Ve / overlay, dosya sistemi katmanlarının sadece en önemli parçasıdır.

Tamam o zaman, cevabınızın daha iyi olduğu sonucuna varıyorum ...
Zvika

2

Bu cevap Zvika'nın cevabının geliştirilmiş bir versiyonudur . Kaynak kodu büyük ölçüde farklı olduğundan, orijinali düzenlemek yerine ek bir cevap olarak eklemenin daha iyi olduğuna inanıyorum.

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

Orijinal kod bir saniye kadar yavaş olarak yapma, çok fazla çatal gerektiriyordu. Bu geliştirilmiş kod daha kısadır ve yalnızca üç işlem kullanır ve 0.02s'lik hızlı bir çalışma süresine (yönlendiricimde) yol açar.

Yolları düzenleyebilirsiniz:

  • /overlay/usr/lib/opkg/info/*.control→ kullanıcı tarafından kurulan paketler. Bunlar, yer açmak için çıkarılabilen paketlerdir.
  • /rom/usr/lib/opkg/info/*.control→ sistem paketleri. Bunlar kaldırılamaz. ( Ne yaptığınızı gerçekten bilmiyorsanız.) Salt okunur bölümde depolandıkları için, bunları kaldırmak ek alan açmaz.
  • /usr/lib/opkg/info/*.control → tüm paketler.

0

Benim için en kolay yol find;

find / -size +500k

aşağıda çıktı ile;

# find / -size +500k
/lib/libc.so
/lib/modules/4.4.92/mac80211.ko
/overlay/upper/usr/lib/libcrypto.so.1.0.0
/overlay/upper/usr/lib/libdns.so.165.0.4
/overlay/upper/usr/sbin/sshd
/rom/lib/libc.so
/rom/lib/modules/4.4.92/mac80211.ko
/usr/lib/libcrypto.so.1.0.0
/usr/lib/libdns.so.165.0.4
/usr/sbin/sshd

Bunlar LEDE kurulumumdaki "büyük" dosyalardı. Bazı USB depolama alanını biçimlendirebilmem, bölümleyebilmem ve monte edebilmem için yönlendiricimde fazladan alana ihtiyacım vardı. +500kSize daha uygun bir dosya boyutuna ayarlayın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.