Không phải mọi môi trường OpenWrt đều được thiết lập theo cùng một cách, vì vậy câu trả lời của tôi là một cú đánh trong bóng tối ...
Đầu ra ví dụ được lấy từ OpenWrt-12,09 trên "TP-Link TL-WDR4300".
ssh
vào bộ định tuyến của bạn.
Kiểm tra fileytsems của bạn.
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
là thẻ micro SD của thanh UMTS của tôi ... chỉ cần bỏ qua điều này.
Nhiều bộ định tuyến được flash theo kiểu tương tự như đã thấy ở đây: Một tập tin gốc chỉ đọc được tạo thành giả có thể ghi được bởi một hệ thống tập tin lớp phủ.
Nhìn vào bên trong /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
Thư mục này chứa thông tin về các gói cài đặt bổ sung. Các tệp kết thúc bằng .list
danh sách các tệp được cài đặt bởi gói có tên tương tự (không có .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
Gói zlib
có 3 tập tin được cài đặt.
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
Gói zlib
có 73kbyte tệp được cài đặt.
Một lớp lót thô để dán tất cả lại với nhau và nó rút ngắn sản lượng:
# 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!
Đã thêm 2014-10-17:
Đầu ra sau đây được lấy từ OpenWrt-12,09 trên "TP-Link TL-WR703N" và chỉ ra cách thêm sắp xếp đầu ra theo kích thước gói.
Có một cái nhìn về nơi và làm thế nào biến S
vào trò chơi ...
# 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---
Một lần nữa: HTH!
Đã thêm 2018-01-13:
Cách trên đã được thử nghiệm trên OpenWrt-AA.
Bây giờ nhìn vào LEDE-17.01, một đường dẫn đã thay đổi: Thay thế /overlay
bằng cách /overlay/upper
sửa lỗi này.
Hiện trạng ( opkg-list-user-installed-sorted-by-size
không phải là 1-liner):
#!/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---"
}
Chạy thử nghiệm:
root@zsun0:~# ./opkg-list-user-installed-sorted-by-size
8 luci-ssl
9 libustream-mbedtls
13 px5g-mbedtls
338 libmbedtls
368 ---TOTAL---
Câu hỏi mở: Khi nào sự thay đổi /overlay
cấu trúc này xảy ra? LEDE-17 là sự kế thừa của OpenWrt-CC và tôi không có hệ thống nào chạy OpenWrt trong tay. Vì vậy, nếu bạn cần điều này trên OpenWrt-BB hoặc -CC, /overlay
trước tiên hãy xem bên trong .