Temat: Czy to możliwe syscfg jako overlay?

Witam mam router WRT3200ACM. Układ partycji wygląda tak https://openwrt.org/toh/linksys/linksys_wrt3200acm.
Teraz tak jak zbuduje obraz to raz jest ładowany z mtd5/mtd6 lub mtd7/mtd8. Jest jeszcze partycja mtd9 która ma 80MB. Chciałbym ją użyć jako /overlay. niestety proste montowania nie pomagają.
Po starcie systemu wygląda to tak

/dev/root
/rom
0.00 B / 46.00 MB
100% (46.00 MB)
-
tmpfs
/tmp
241.70 MB / 249.49 MB
3% (7.79 MB)
-
/dev/ubi0_1
/overlay
15.62 MB / 17.02 MB
3% (512.00 KB)
-
overlayfs:/overlay
/
15.62 MB / 17.02 MB
3% (512.00 KB)
-
ubi1:syscfg
/tmp/syscfg
66.02 MB / 70.22 MB
1% (600.00 KB)

partycja mtd9 jest zamontowana jako /tmp/syscfg i można ją normalnie użyć.
Jak to zmodyfikować, sam kompiluje system. Znalazłem nawet skrypt odpowiedzialny za to że mtd9 jest montowana do tmp. Niestety nie wiem jak to zmodyfikować bo wszystkie próby kończą się niczym.
To log z boota

Fri May  3 00:13:54 2019 user.info kernel: [    8.512344] mount_root: loading kmods from internal overlay
Fri May  3 00:13:54 2019 user.info kernel: [    8.525582] kmodloader: loading kernel modules from //etc/modules-boot.d/*
Fri May  3 00:13:54 2019 user.info kernel: [    8.532847] kmodloader: done loading kernel modules from //etc/modules-boot.d/*
Fri May  3 00:13:54 2019 kern.notice kernel: [    8.779970] UBIFS (ubi0:1): background thread "ubifs_bgt0_1" started, PID 951
Fri May  3 00:13:54 2019 kern.notice kernel: [    8.830302] UBIFS (ubi0:1): UBIFS: mounted UBI device 0, volume 1, name "rootfs_data"
Fri May  3 00:13:54 2019 kern.notice kernel: [    8.838169] UBIFS (ubi0:1): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes
Fri May  3 00:13:54 2019 kern.notice kernel: [    8.848136] UBIFS (ubi0:1): FS size: 20062208 bytes (19 MiB, 158 LEBs), journal size 1015809 bytes (0 MiB, 8 LEBs)
Fri May  3 00:13:54 2019 kern.notice kernel: [    8.858534] UBIFS (ubi0:1): reserved for root: 947587 bytes (925 KiB)
Fri May  3 00:13:54 2019 kern.notice kernel: [    8.865006] UBIFS (ubi0:1): media format: w4/r0 (latest is w5/r0), UUID D9E7AF9E-EA86-481D-9092-FC660F2CA3C8, small LPT model
Fri May  3 00:13:54 2019 user.info kernel: [    8.877102] block: attempting to load /tmp/ubifs_cfg/upper/etc/config/fstab
Fri May  3 00:13:54 2019 user.info kernel: [    8.887753] block: extroot: device not present, retrying in 5 seconds
Fri May  3 00:13:54 2019 user.err kernel: [   14.011493] block: extroot: cannot find device ubi1_0
Fri May  3 00:13:54 2019 kern.notice kernel: [   14.051775] UBIFS (ubi0:1): un-mount UBI device 0
Fri May  3 00:13:54 2019 kern.notice kernel: [   14.056505] UBIFS (ubi0:1): background thread "ubifs_bgt0_1" stops
Fri May  3 00:13:54 2019 kern.notice kernel: [   14.110887] UBIFS (ubi0:1): background thread "ubifs_bgt0_1" started, PID 954
Fri May  3 00:13:54 2019 kern.notice kernel: [   14.153738] UBIFS (ubi0:1): UBIFS: mounted UBI device 0, volume 1, name "rootfs_data"
Fri May  3 00:13:54 2019 kern.notice kernel: [   14.161623] UBIFS (ubi0:1): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes
Fri May  3 00:13:54 2019 kern.notice kernel: [   14.171589] UBIFS (ubi0:1): FS size: 20062208 bytes (19 MiB, 158 LEBs), journal size 1015809 bytes (0 MiB, 8 LEBs)
Fri May  3 00:13:54 2019 kern.notice kernel: [   14.181985] UBIFS (ubi0:1): reserved for root: 947587 bytes (925 KiB)
Fri May  3 00:13:54 2019 kern.notice kernel: [   14.188454] UBIFS (ubi0:1): media format: w4/r0 (latest is w5/r0), UUID D9E7AF9E-EA86-481D-9092-FC660F2CA3C8, small LPT model
Fri May  3 00:13:54 2019 user.info kernel: [   14.202569] mount_root: loading kmods from internal overlay
Fri May  3 00:13:54 2019 user.info kernel: [   14.213794] kmodloader: loading kernel modules from /tmp/overlay/upper/etc/modules-boot.d/*
Fri May  3 00:13:54 2019 user.info kernel: [   14.223118] kmodloader: done loading kernel modules from /tmp/overlay/upper/etc/modules-boot.d/*
Fri May  3 00:13:54 2019 user.info kernel: [   14.613263] block: attempting to load /tmp/ubifs_cfg/upper/etc/config/fstab
Fri May  3 00:13:54 2019 user.info kernel: [   14.622424] block: extroot: device not present, retrying in 5 seconds
Fri May  3 00:13:54 2019 user.err kernel: [   19.753818] block: extroot: cannot find device ubi1_0
Fri May  3 00:13:54 2019 user.info kernel: [   19.791262] mount_root: switching to ubifs overlay
Fri May  3 00:13:54 2019 kern.info kernel: [   19.908523] fuse init (API version 7.26)
Fri May  3 00:13:54 2019 kern.info kernel: [   20.018677] F2FS-fs (mtdblock7): Magic Mismatch, valid(0xf2f52010) - read(0xee070f10)
Fri May  3 00:13:54 2019 kern.err kernel: [   20.027000] F2FS-fs (mtdblock7): Can't find valid F2FS filesystem in 1th superblock
Fri May  3 00:13:54 2019 kern.info kernel: [   20.036432] F2FS-fs (mtdblock7): Magic Mismatch, valid(0xf2f52010) - read(0xe1a0e082)
Fri May  3 00:13:54 2019 kern.err kernel: [   20.045333] F2FS-fs (mtdblock7): Can't find valid F2FS filesystem in 2th superblock
Fri May  3 00:13:54 2019 kern.info kernel: [   20.054461] F2FS-fs (mtdblock7): Magic Mismatch, valid(0xf2f52010) - read(0xee070f10)
Fri May  3 00:13:54 2019 kern.err kernel: [   20.063670] F2FS-fs (mtdblock7): Can't find valid F2FS filesystem in 1th superblock
Fri May  3 00:13:54 2019 kern.info kernel: [   20.072750] F2FS-fs (mtdblock7): Magic Mismatch, valid(0xf2f52010) - read(0xe1a0e082)
Fri May  3 00:13:54 2019 kern.err kernel: [   20.082005] F2FS-fs (mtdblock7): Can't find valid F2FS filesystem in 2th superblock
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.120146] ubi1: attaching mtd9
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.350925] ubi1: scanning is finished
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.359079] ubi1: attached mtd9 (name "syscfg", size 86 MiB)
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.364771] ubi1: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.371678] ubi1: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.378496] ubi1: VID header offset: 2048 (aligned 2048), data offset: 4096
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.385489] ubi1: good PEBs: 680, bad PEBs: 8, corrupted PEBs: 0
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.391523] ubi1: user volume: 1, internal volumes: 1, max. volumes count: 128
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.398776] ubi1: max/mean erase counter: 8/4, WL threshold: 4096, image sequence number: 617815743
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.407864] ubi1: available PEBs: 0, total reserved PEBs: 680, PEBs reserved for bad PEB handling: 32
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.417130] ubi1: background thread "ubi_bgt1d" started, PID 982
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.427294] UBIFS (ubi1:0): background thread "ubifs_bgt1_0" started, PID 987
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.475643] UBIFS (ubi1:0): UBIFS: mounted UBI device 1, volume 0, name "syscfg"
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.483081] UBIFS (ubi1:0): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.493045] UBIFS (ubi1:0): FS size: 80375808 bytes (76 MiB, 633 LEBs), journal size 4063232 bytes (3 MiB, 32 LEBs)
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.503529] UBIFS (ubi1:0): reserved for root: 3796347 bytes (3707 KiB)
Fri May  3 00:13:54 2019 kern.notice kernel: [   20.510175] UBIFS (ubi1:0): media format: w4/r0 (latest is w5/r0), UUID EC0B4F23-B842-458E-8FBD-C92364E6E205, small LPT model

2

Odp: Czy to możliwe syscfg jako overlay?

uci show fstab pokaż

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3 (edytowany przez steel_rat 2019-05-03 20:40:26)

Odp: Czy to możliwe syscfg jako overlay?

fstab.@global[0]=global
fstab.@global[0].anon_swap='0'
fstab.@global[0].anon_mount='0'
fstab.@global[0].auto_swap='1'
fstab.@global[0].auto_mount='1'
fstab.@global[0].delay_root='5'
fstab.@global[0].check_fs='0'
fstab.@mount[0]=mount
fstab.@mount[0].target='/overlay'
fstab.@mount[0].fstype='ubifs'
fstab.@mount[0].enabled='1'
fstab.@mount[0].device='/dev/ubi1_0'
fstab.@mount[1]=mount
fstab.@mount[1].uuid='d2d33b55-101b-0473-5425-cdb89caba85f'
fstab.@mount[1].enabled='1'
fstab.@mount[1].target='/nas/dysk_1000'
fstab.@mount[1].enabled_fsck='1'
fstab.@mount[2]=mount
fstab.@mount[2].uuid='1e7b6782-62fe-965d-0ab5-bd8b048c5cf6'
fstab.@mount[2].target='/nas/dysk_500'
fstab.@mount[2].enabled_fsck='1'
fstab.@mount[2].enabled='1'

niestety takie coś nic nie zmienia.
Właśnie ta partycja ubi1_0 to jest mtd9 syscfg
Jak ręcznie wpiszę
mount /dev/ubi1_0 /overlay -t ubifs
to podpina się pod /overlay ale nie pod overlayfs:/overlay
polecenie mount /dev/mtdblock9 /overlay -t ubifs
i mount /dev/mtd9 /overlay -t ubifs zwraca błąd failed: No such device

4

Odp: Czy to możliwe syscfg jako overlay?

Zobacz że właściwe syscfg pojawiło ci się o wiele później niż on chce robić extroota.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5 (edytowany przez steel_rat 2019-05-03 20:49:34)

Odp: Czy to możliwe syscfg jako overlay?

Hmm. Skrypt odpowiedzialny za tą partycje jest w "/lib/preinit/81_linksys_syscfg". Zawartość tego skryptu

#
# Copyright (C) 2014-2016 OpenWrt.org
# Copyright (C) 2016 LEDE-Project.org
#

preinit_mount_syscfg() {

<------>. /lib/functions.sh

<------>case $(board_name) in
<------>armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-rango|armada-385-linksys-shelby|armada-385-linksys-venom|armada-xp-linksys-mamba)
<------><------>needs_recovery=0
<------><------>syscfg_part=$(grep syscfg /proc/mtd |cut -c4)
<------><------>ubiattach -m $syscfg_part || needs_recovery=1
<------><------>if [ $needs_recovery -eq 1 ]
<------><------>then
<------><------><------>echo "ubifs syscfg partition is damaged, reformatting"
<------><------><------>ubidetach -m $syscfg_part
<------><------><------>ubiformat -y -O 2048 -q /dev/mtd$syscfg_part
<------><------><------>ubiattach -m $syscfg_part
<------><------><------>ubimkvol /dev/ubi1 -n 0 -N syscfg -t dynamic --maxavsize
<------><------>fi
<------><------>mkdir /tmp/syscfg
<------><------>mount -t ubifs ubi1:syscfg /tmp/syscfg
<------><------>[ -f /tmp/syscfg/sysupgrade.tgz ] && {
<------><------>echo "- config restore -"
<------><------>cd /
<------><------>mv /tmp/syscfg/sysupgrade.tgz /tmp
<------><------>tar xzf /tmp/sysupgrade.tgz
<------><------>rm -f /tmp/sysupgrade.tgz
<------><------>sync
<------><------>}
<------><------>;;
<------>esac
}

boot_hook_add preinit_main preinit_mount_syscfg

podmiana lini mount -t ubifs ubi1:syscfg /tmp/syscfg na mount -t ubifs ubi1:syscfg /overlay wywaliła system.

6

Odp: Czy to możliwe syscfg jako overlay?

A własnie, podaj ubi1:syscfg zamiast /dev/ubi1_0 w konfigu i zobacz co będzie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7

Odp: Czy to możliwe syscfg jako overlay?

Nic się nie zmienia. Dalej zostaje po staremu. Ręczne # mount ubi1:syscfg /overlay -t ubifs po starcie działa ale tylko zmienia /overlay a nie overlayfs:/overlay.

8

Odp: Czy to możliwe syscfg jako overlay?

Tak, bo extroot musi się zrobić przez skrypty systemowe. Zamontowanie nośnika w /overlay nic nie da i nie powoduje że system widzi go jako extroota.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9

Odp: Czy to możliwe syscfg jako overlay?

Wygląd na to, że bez ingerencji w pliki źródłowe się nie obejdzie. Extroot nie działa na tej partycji.

10 (edytowany przez steel_rat 2019-05-08 22:52:47)

Odp: Czy to możliwe syscfg jako overlay?

Poradziłem sobie inaczej. Jako, że miesiąc temu skończyła mi się gwarancja to przerobiłem WRT3200ACM na WRT32X. Teraz zamiast 17MB mam wolne 60MB we flashu. A sam obraz zajmuje mi 49MB. Jak ktoś chce przerobić to wsunie w godzinę może się wyrobić. Można zrobić backup konfiguracji ze starego routera. Ja po prostu kopiuje na dysk partycje overlay (tak jak do extroot'a przenosi się configi). Potem trzeba połączyć się przez port serial. U mnie był problem, że jak uruchomiłem przejściówkę usb oraz podłączyłem się do routera to router nie chciał się uruchomić. Trzeba wyłączyć router i przejściówkę potem załączyć router, szybko włożyć przejściówkę do usb i odpalić terminal. Mało czasu by przerwać proces na odliczaniu.
Piny patrząc z góry na router od lewej to masa, tx, wolny, rx.
Potem to już wg poradnika

W konsoli U-Boot wpisujemy kolejno:

setenv mtdparts 'mtdparts=armada-nand:2048K(uboot)ro,128K(u_env),256K(s_env),256K@8064K(devinfo),123m@9m(firmware1),123m@132m(firmware2)'
setenv priKernAddr 0x0900000
setenv altKernAddr 0x8400000
setenv altFwSize 0x7b00000
setenv priFwSize 0x7b00000
setenv nandboot 'setenv bootargs console=ttyS0,115200 root=/dev/mtdblock6;nand read $defaultLoadAddr $priKernAddr $priKernSize; bootz $defaultLoadAddr'
setenv altnandboot 'setenv bootargs console=ttyS0,115200 root=/dev/mtdblock8;nand read $defaultLoadAddr $altKernAddr $altKernSize; bootz $defaultLoadAddr'
save

Ustawiamy na karcie komputera 192.168.1.254 maskę na 255.255.255.0 i uruchomiamy serwer TFTP w którym ma być plik "rango.img" Jest to tak naprawdę plik od WRT32X factory, można użyć od razu pliku z nazwą factory. Potem zmienić nazwę tego pliku na "rango.img"
Potem poleceniem

run update_both_images

wgrywamy firmware i czekamy do końca.
po wgraniu się obrazu na obie partycje wpisujemy:

boot

I mamy dwie partycje po 128MB każda.
Na końcu spokojnie można przywrócić konfiguracje.