Sytuacja wygląda następująco.
Qnap z 4rema dyskami 4TB w RAID-5. Minimalna ilość usług, w zasadzie tylko sieć microsoft (Samba) i NFS.
Dzisiaj rano nie mogłem się do niego zalogować, nie PINGował. Wymusiłem restart z przycisku. Po restarcie Jedno piknięcie, dioda Status miga naprzemiennie zielono-czerowono. i nic więcej.
Qfinder nie wyszukuje NASa. Próbowałem już z wyjęciem dysków - to samo - głucha cisza.
Czy jest jakaś metoda recovery, czy mam już kupować nowego NASa (bo jednak dane są potrzebne)?
Wersja oprogramowania Firmware: 4.3.4 Build nie pamiętam - najnowszy dostępny.
Model serwera: QNAP TS-431
Ech.... znikąd pomocy
Mam więc prośbę do posiadaczy QNAPa x31 (bez P + itp.)
Czy może ktoś z Was zgrać mi zawartość pamięci flash?
Można to zrobić na dwa sposoby:
lub
Najchętniej obie metody, bo nie doszedłem jeszcze czym różni się wynik (i czy się różni). Czyli w sumie 8 plików.
Z góry dziękuję.
Jestem już bliżej niż dalej postawienia maszyny na nogi.
No cóż....
Znowu sam sobie odpowiem
Otóż udało mi się przywrócić TS-431 mimo, że jest on z jedynej (chyba) serii, która nie ma nigdzie udokumentowanej procedury Recovery Firmware.
Okazało się, że jakimś zbiegiem okoliczności uszkodziła się jedna z "partycji" wbudowanej pamięci flash. Udało mi się odtworzyć jej zawartość i uruchomić serwer.
Jako, że mam czas "z doskoku" postaram się w odcinkach opisać moją walkę dla potomności
--------
Żeby w ogóle zacząć musimy połączyć się z naszym QNAPem jakims programem terminalowym (ja użyłem oczywiście PuTTY) przez port szeregowy umieszcozny na płycie głównej NASa. Port ten jest wyprowadzony na 4ro pinowym gnieździe dość łatwo dostępnym bez rozbierania urządzenia (wystarczy wyjąć dyski, a to oczywiście i tak robimy na początku).
Jest to gniazdo w standardzie (podobno) JST PHR-4 , ja szukając odpowiedniej wtyczki znalazłem wtyczkę typu KNX-W04 i jest to dokładnie to samo. sygnały na tym złączu od strony QNAPa są w standardzie 3.3V, więc trzeba dokonać konwersji. JEśli macie w komputerze port szeregowy RS232 użyć trzeba stosownego konwertera sygnałów, ja nie miałem tego portu, więc i tak musiałem zastosować interfejs na USB. Tak się składa że dla Andurino są łatwo dostępne takie interfejsy od razu z konwersją napięć zakupiłem więc taki i wykonałem odpowiedni kabelek.
W slaepie AVT wszystko (poza przewodami) kosztowało mnie mniej niż 13 zł
To nie reklama :
Wtyk KNX-W04 w sklepie AVT
Piny do wspomnianego wtyku
Konwerter USB-rs232-TTL dla Arduino
Oczywiście TXD z NASa łączymy z RXD komputera i odwrotnie, a napięcia zasilającego z QNAPa nie podłączamy nigdzie!
Łączymy się terminalem ustawiając parametry komunikacji na: 115200 baud i 8N1 (8 bitów danych, bez parzystości, 1 bit stopu). W PuTTY wystarczyło podać nazwę portu COM (w moim przypadku port wirtualny COM3 oraz prędkość 115200.
Odpalamy terminal, podłączamy wszystko i włączamy QNAPa i naszym oczom powinny ukazać się komunikaty związane z procesem bootowania NASa.
I pierwszy etap za nami.
U mnie wyglądało to tak:
Jak widać bootloaderem jest tu (linijka 11.) Barebox. Z tego, co doczytałem najpopularniejszy bootloader dla urządzeń odpalających się z pamięci flash. Sam w sobie jest super lekkim linuxem ze specyficznym zestawem rozkazów.
Jeśli zatrzymamy bootowanie (wciskając dowolny klawisz - linijka 81.) to przejdziemy bezpośrednio do bootloadera, jeśli poczekamy chwilkę zacznie on ładowanie kernela naszego systemu. Jak widać na końcu w moim przypadku kernel się załadował - miał prawidłową sumę kontrolną. Prawdopodobnie przy złej sumie kontrolnej załadowałby się z kopii.
I teraz zaczyna się uruchamianie kernela systemu operacyjnego QNAPa:
Na samym końcu możemy zalogować się (admin/admin) i teoretycznie mamy uruchomiony system ale....
niestety rootfs się nie podmontował i niewiele możemy zrobić.
Widać to w linijkach 319-355, podjęta została próba podmontowania partycji mtd3 z pamięci flash z systemem plików UBIFS (system plików dedykowany dla zapisów blokowych w pamięciach flash właśnie) widać to w linijkach 319 i 344 a potem po wykryciu błędów (linijki 351-353) urządzenie z systemem plików UBIFS zawierające rootfs zostaję "odpięte" - linijki 354 i 355.
Tak więc mamy odpalony kernel bez rootfs.
Wiedząc już z którą partycją pamięci flash mam problem, podjąłem próbę jej odczytania, podłączyłem do QNAPa pendrive sformatowany w FAT, podmontowałem go i spróbowałem zgrać obraz tej patrycji:
Udało się obraz zgrany, teraz trzeba wypakować z niego pliki a jest on w systemie plików UBIFS
Czyli potrzebny jest pakiet ubi_reader - znalazłem, postawiłem sobie linuksa (bo nie jestem linuksowcem), skonfigurowałem i za pomocą narzędzia ubireader_extract_files z tego pakietu spróbowałem wypakować pliki... niestety, wypakowało się tylko około 20% zawartości i skończyło się na CRC Error (co było do przewidzenia).
Przy okazji partycje /dev/mtd3 i /dev/mtd5 są kopiami, ale nie miałem pojęcia jak zmusić kernel do podmontowania rootfs z mtd5 a nie mtd3. Prawdopodobnie jeśli kernel będzie musiał odpalić się z kopii, to wtedy podmontuje także kopię rootfs.
A teraz skąd wziąć rootfs?? (Taaak.... Po przeczytaniu na zimno tego tekstu oczywistą oczywistością jest dla mnie to, że najszybciej odczytać rootfs z drugiej kopii na /dev/mtd5 - ale jakoś wtedy nie pomyślałem....) Odpowiedź jest prosta - musi być przecież w pliku obrazu systemu który ściąga się na potrzeby aktualizacji. Ściągnąłem więc ze strony QNAPa firmware w wersji, którą miałem zainstalowaną i teraz jak się do niego dostać??
O tak: GitHub - mb2020/qnap-utils: Utilities to unpack QNAP firmware images and QPKG files
Oczywiście nie zadziałało
Otrzymałem komunikat: "PC1 tool not found; decrypt the image first by invoking on your NAS" ... no oczywiście zaszyfrowali, a narzędzie jest zapewne w systemie QNAPa .... super - na szczęście mam jeszcze innego - działającego QNAPa, przerzuciłem więc szybko plik firmware i odpaliłem deszyfrowanie:
I chciałem nawet użyć dalej skryptu do wypakowania plików z obrazu, ale okazało się, że ten .tgz normalnie się otwiera i wszystko widać, więc zrobiłem to standardowo z Windowsów.
W pliku tym znalazłem wszystko, co jest potrzebne do sflashowania systemu.
Dla mnie najważniejszy był oczywiście plik
W moim przypadku miałem załądowany kernel, problem był tylko z rootfs, po krótkiej analizie pliku
Oryginalny skrypt sprawdza wcześniej czy partycje mtd3 i mtd5 to rootfs, ale ja już to wiedziałem. W zasadzie wystarczyłoby zrobić to tylko z
Po reboocie QNAP wstał i był rozpoznawany przez Qfinder!
Trzeba oczywiście pamiętać żeby po zainicjowaniu wykonać jeszcze raz (już normalnie) cała procedurę update firmware, żeby system miał szansę przeflashować prawidłowo wszystkie partycje.
I w sumie to wszystko.
Niestety nie wiem jak z poziomu bootloadera sflashować kernel. Są dostępne komendy do operowania na nandflashu ale nie miałem takiej potrzeby, więc nie ryzykowałem, tym bardziej, że w przypadku uszkodzenia kernela powinien zabootować się rezerwowy, a jeśli nie to można wywołać boot rezerwowego kernela ręcznie zatrzymując bootowanie i wpisując w Bareboxie komendę
Z poziomu kernela sam kernel można przeflashować (obie kopie) wydając komendy (oczywiście plik
Uwaga! Jeśli nie zamierzasz robić
Oczywiście /dev/null nie jest konieczne - można sobie popatrzeć jak ktoś lubi.
No i to już wszystko.
Chyba problem można uznać za rozwiązany, choć był to monolog
Ale ja ikonki zmienić nie mogę.
Qnap z 4rema dyskami 4TB w RAID-5. Minimalna ilość usług, w zasadzie tylko sieć microsoft (Samba) i NFS.
Dzisiaj rano nie mogłem się do niego zalogować, nie PINGował. Wymusiłem restart z przycisku. Po restarcie Jedno piknięcie, dioda Status miga naprzemiennie zielono-czerowono. i nic więcej.
Qfinder nie wyszukuje NASa. Próbowałem już z wyjęciem dysków - to samo - głucha cisza.
Czy jest jakaś metoda recovery, czy mam już kupować nowego NASa (bo jednak dane są potrzebne)?
Wersja oprogramowania Firmware: 4.3.4 Build nie pamiętam - najnowszy dostępny.
Model serwera: QNAP TS-431
Ech.... znikąd pomocy
Mam więc prośbę do posiadaczy QNAPa x31 (bez P + itp.)
Czy może ktoś z Was zgrać mi zawartość pamięci flash?
Można to zrobić na dwa sposoby:
Kod:
nanddump -f mtd2.dump /dev/mtd2
nanddump -f mtd3.dump /dev/mtd3
nanddump -f mtd4.dump /dev/mtd4
nanddump -f mtd5.dump /dev/mtd5
lub
Kod:
cat /dev/mtd2 > mtd2.bin
cat /dev/mtd3 > mtd3.bin
cat /dev/mtd4 > mtd4.bin
cat /dev/mtd5 > mtd5.bin
Najchętniej obie metody, bo nie doszedłem jeszcze czym różni się wynik (i czy się różni). Czyli w sumie 8 plików.
Z góry dziękuję.
Jestem już bliżej niż dalej postawienia maszyny na nogi.
No cóż....
Znowu sam sobie odpowiem
Otóż udało mi się przywrócić TS-431 mimo, że jest on z jedynej (chyba) serii, która nie ma nigdzie udokumentowanej procedury Recovery Firmware.
Okazało się, że jakimś zbiegiem okoliczności uszkodziła się jedna z "partycji" wbudowanej pamięci flash. Udało mi się odtworzyć jej zawartość i uruchomić serwer.
Jako, że mam czas "z doskoku" postaram się w odcinkach opisać moją walkę dla potomności
--------
Żeby w ogóle zacząć musimy połączyć się z naszym QNAPem jakims programem terminalowym (ja użyłem oczywiście PuTTY) przez port szeregowy umieszcozny na płycie głównej NASa. Port ten jest wyprowadzony na 4ro pinowym gnieździe dość łatwo dostępnym bez rozbierania urządzenia (wystarczy wyjąć dyski, a to oczywiście i tak robimy na początku).
Jest to gniazdo w standardzie (podobno) JST PHR-4 , ja szukając odpowiedniej wtyczki znalazłem wtyczkę typu KNX-W04 i jest to dokładnie to samo. sygnały na tym złączu od strony QNAPa są w standardzie 3.3V, więc trzeba dokonać konwersji. JEśli macie w komputerze port szeregowy RS232 użyć trzeba stosownego konwertera sygnałów, ja nie miałem tego portu, więc i tak musiałem zastosować interfejs na USB. Tak się składa że dla Andurino są łatwo dostępne takie interfejsy od razu z konwersją napięć zakupiłem więc taki i wykonałem odpowiedni kabelek.
W slaepie AVT wszystko (poza przewodami) kosztowało mnie mniej niż 13 zł
To nie reklama :
Wtyk KNX-W04 w sklepie AVT
Piny do wspomnianego wtyku
Konwerter USB-rs232-TTL dla Arduino
Oczywiście TXD z NASa łączymy z RXD komputera i odwrotnie, a napięcia zasilającego z QNAPa nie podłączamy nigdzie!
Łączymy się terminalem ustawiając parametry komunikacji na: 115200 baud i 8N1 (8 bitów danych, bez parzystości, 1 bit stopu). W PuTTY wystarczyło podać nazwę portu COM (w moim przypadku port wirtualny COM3 oraz prędkość 115200.
Odpalamy terminal, podłączamy wszystko i włączamy QNAPa i naszym oczom powinny ukazać się komunikaty związane z procesem bootowania NASa.
I pierwszy etap za nami.
U mnie wyglądało to tak:
Kod:
uloader 2011.06.0 (Dec 11 2013 - 10:36:47)
Board: Mindspeed C2000
c2k_spi_probe
Copying Barebox from SPI Flash(bootopt=0)
BB Copying Done
## Starting Barebox at 0x01000000 ...
barebox 2011.06.0 (May 19 2014 - 18:14:35)
Board: Mindspeed C2000
c2k_spi_probe
c2k_otp_probe.
cbus_baseaddr: 9c000000, ddr_baseaddr: 03800000, ddr_phys_baseaddr: 03800000
class init complete
tmu init complete
bmu1 init: done
bmu2 init: done
util init complete
GPI1 init complete
GPI2 init complete
HGPI init complete
HIF rx desc: base_va: 03e80000, base_pa: 03e80000
HIF tx desc: base_va: 03e80400, base_pa: 03e80400
HIF init complete
bmu1 enabled
bmu2 enabled
pfe_hw_init: done
pfe_firmware_init
pfe_load_elf
pfe_load_elf no of sections: 10
pfe_firmware_init: class firmware loaded
pfe_load_elf
pfe_load_elf no of sections: 10
pfe_firmware_init: tmu firmware loaded
pfe_load_elf
pfe_load_elf no of sections: 14
pfe_firmware_init: util firmware loaded
Bring PHY reset
athrs17_phy_init 4
Port 4, Neg Success
phy4 link down
miidev_restart_aneg for PHY4
athrs17_phy_init 6
Port 6, Neg Success
phy6 link down
miidev_restart_aneg for PHY6
miidev_restart_aneg for PHY0
cfi_probe: cfi_flash base: 0xc0000000 size: 0x04000000
## Unknown FLASH on Bank at 0xc0000000 - Size = 0x00000000 = 0 MB
Using ENV from SPI Flash.
Boot strap = 0xf0188000
nand_probe: comcerto_nand base: 0xc8300000 size: 0x512 MB
NAND device: Manufacturer ID: 0xec, Chip ID: 0xdc (Samsung NAND 512MiB 3,3V 8-bit), page size: 2048, OOB size: 64
Using default values
Bad block table not found for chip 0
Bad block table not found for chip 0
Scanning device for bad blocks
Bad eraseblock 18 at 0x00240000
Bad eraseblock 72 at 0x00900000
Bad eraseblock 121 at 0x00f20000
Bad eraseblock 350 at 0x02bc0000
Bad eraseblock 381 at 0x02fa0000
Bad eraseblock 863 at 0x06be0000
Bad eraseblock 1249 at 0x09c20000
Bad eraseblock 1525 at 0x0bea0000
Bad eraseblock 1603 at 0x0c860000
Bad eraseblock 2740 at 0x15680000
Bad eraseblock 3083 at 0x18160000
Bad block table written to 0x1ffe0000, version 0x01
Bad block table written to 0x1ffc0000, version 0x01
Malloc space: 0x00800000 -> 0x10800000 (size 256 MB)
Stack space : 0x007f0000 -> 0x00800000 (size 64 kB)
running /env/bin/init...
Unknown command 'export' - try 'help'
Clear Phy status register
PHY 4 , Addr 0x13, Val 0x0
PHY 6 , Addr 0x13, Val 0x400
Hit any key to stop autoboot: 1
booting kernel of type uimage from /dev/nand0.boot1_kernel.bb
skipping bad block at 0x00240000
skipping bad block at 0x00900000
skipping bad block at 0x00f20000
Verifying Checksum ... OK
Image Name: Linux-3.2.26
Created: 2018-02-14 21:32:47 UTC
Image Type: <NULL> <NULL> <NULL> (<NULL>)
Data Size: 17074784 Bytes = 16.3 MB
Load Address: 0f008000
Entry Point: 0f008000
OK
Starting kernel ...
Jak widać bootloaderem jest tu (linijka 11.) Barebox. Z tego, co doczytałem najpopularniejszy bootloader dla urządzeń odpalających się z pamięci flash. Sam w sobie jest super lekkim linuxem ze specyficznym zestawem rozkazów.
Jeśli zatrzymamy bootowanie (wciskając dowolny klawisz - linijka 81.) to przejdziemy bezpośrednio do bootloadera, jeśli poczekamy chwilkę zacznie on ładowanie kernela naszego systemu. Jak widać na końcu w moim przypadku kernel się załadował - miał prawidłową sumę kontrolną. Prawdopodobnie przy złej sumie kontrolnej załadowałby się z kopii.
I teraz zaczyna się uruchamianie kernela systemu operacyjnego QNAPa:
Kod:
commandline: console=ttyS0,115200n8 root=/dev/ram usb3_internal_clk=yes pcie_external_clk=yes mtdparts=comcertonand:32M(boot1_kernel),216M(boot1_rootfs2),32M(boot2_kernel),216M(boot2_rootfs2),15M(config);spi0.0:640K(loader)ro,-(env) mac_addr=00:08:9B:00:00:00,00:08:9B:00:00:01 pcie_gen1_only=no ip=none
arch_number: 1094
Uncompressing Linux... done, booting the kernel.
[ 0.000000] Booting Linux on physical CPU 0
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Linux version 3.2.26 (root@U16BuildServer44) (gcc version 4.5.4 20120201 (prerelease) (Linaro GCC 4.5-2012.02) ) #2 SMP Thu Feb 15 05:32:43 CST 2018
[ 0.000000] CPU: ARMv7 Processor [412fc091] revision 1 (ARMv7), cr=50c53c7d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] Machine: Comcerto 2000 EVM
[ 0.000000] Memory policy: ECC disabled, Data cache writealloc
[ 0.000000] Comcerto: zone_dma mapping size=2c00000 type=b
[ 0.000000] PERCPU: Embedded 7 pages/cpu @858e8000 s5280 r8192 d15200 u32768
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 124672
[ 0.000000] Kernel command line: console=ttyS0,115200n8 root=/dev/ram usb3_internal_clk=yes pcie_external_clk=yes mtdparts=comcertonand:32M(boot1_kernel),216M(boot1_rootfs2),32M(boot2_kernel),216M(boot2_rootfs2),15M(config);spi0.0:640K(loader)ro,-(env) mac_addr=00:08:9B:00:00:00,00:08:9B:00:00:01 pcie_gen1_only=no ip=none
[ 0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[ 0.000000] Memory: 44MB 448MB = 492MB total
[ 0.000000] Memory: 477848k/477848k available, 46440k reserved, 0K highmem
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff30000 - 0xfffe0000 ( 704 kB)
[ 0.000000] vmalloc : 0xa0800000 - 0xf0000000 (1272 MB)
[ 0.000000] lowmem : 0x80000000 - 0xa0000000 ( 512 MB)
[ 0.000000] modules : 0x83600000 - 0x84000000 ( 10 MB)
[ 0.000000] .text : 0x84008000 - 0x8469ab28 (6731 kB)
[ 0.000000] .init : 0x8469b000 - 0x853364a0 (12910 kB)
[ 0.000000] .data : 0x85338000 - 0x85370dc0 ( 228 kB)
[ 0.000000] .bss : 0x85370de4 - 0x853e3540 ( 458 kB)
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] NR_IRQS:256
[ 0.000000] PLL0 running at 2400 MHz, PLL1 at 1000 MHz PLL2 running at 1500 MHz PLL3 running at 1066 MHz
[ 0.000000] sched_clock: 32 bits at 250MHz, resolution 4ns, wraps every 17179ms
[ 0.000182] Calibrating delay loop... 2387.14 BogoMIPS (lpj=11935744)
[ 0.060027] pid_max: default: 32768 minimum: 301
[ 0.060219] Mount-cache hash table entries: 512
[ 0.060715] Initializing cgroup subsys cpuacct
[ 0.060743] Initializing cgroup subsys devices
[ 0.060778] CPU: Testing write buffer coherency: ok
[ 0.060937] CPU0: thread -1, cpu 0, socket 9, mpidr 80000900
[ 0.060962] Calibrating local timer... 299.81MHz.
[ 0.120059] Creating cpu1_hotplug_thread....
[ 0.120147] cpu1_hotplug_thread Created
[ 0.120163] hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
[ 0.121571] CPU1: Booted secondary processor
[ 0.180027] CPU1: thread -1, cpu 1, socket 9, mpidr 80000901
[ 0.180076] Brought up 2 CPUs
[ 0.180089] SMP: Total of 2 processors activated (4780.85 BogoMIPS).
[ 0.180810] devtmpfs: initialized
[ 0.182218] xor: measuring software checksum speed
[ 0.229963] arm4regs : 2128.400 MB/sec
[ 0.279931] 8regs : 1438.000 MB/sec
[ 0.329899] 32regs : 1409.600 MB/sec
[ 0.329907] xor: using function: arm4regs (2128.400 MB/sec)
[ 0.330113] NET: Registered protocol family 16
[ 0.330605] L310 cache controller enabled
[ 0.330617] l2x0: 8 ways, CACHE_ID 0x410000c8, AUX_CTRL 0x00c40000, PREFETCH_CTRL 0x00000000, Cache size: 262144 B
[ 0.330696] ARMv7 AUX CTRL(1): 0x41
[ 0.330701] ARMv7 AUX CTRL(1): 0x41
[ 0.330715] ARMv7 AUX CTRL(0): 0x41
[ 0.330723] ARMv7 AUX CTRL(0): 0x41
[ 0.331234] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
[ 0.331242] hw-breakpoint: maximum watchpoint size is 4 bytes.
[ 0.331258] Power Management Mode Support For C2000:
[ 0.331568] PCIe: Detected C2K RevA1 device serdes clk devider old:new=2e:6
[ 0.347165] PCIe0: Link Up Success
[ 0.347172] PCIe0: Polarity: 0 Gen1 mode: 0 External Clk: 1
[ 0.347178] comcerto_pcie_rc_int_init
[ 0.347220] PCIe: Detected C2K RevA1 device serdes clk devider old:new=6:6
[ 0.362219] PCIe1: Link Up Success
[ 0.362225] PCIe1: Polarity: 0 Gen1 mode: 0 External Clk: 1
[ 0.362230] comcerto_pcie_rc_int_init
[ 0.362557] PCI: bus0: Fast back to back transfers disabled
[ 0.362905] PCI: bus1: Fast back to back transfers disabled
[ 0.363001] pci 0000:01:00.0: BAR 6: assigned [mem 0xb0000000-0xb000ffff pref]
[ 0.363011] pci 0000:01:00.0: BAR 5: assigned [mem 0xb0010000-0xb00101ff]
[ 0.363024] pci 0000:01:00.0: BAR 5: set to [mem 0xb0010000-0xb00101ff] (PCI address [0xb0010000-0xb00101ff])
[ 0.363037] pci 0000:00:00.0: BAR 6: assigned [mem 0xa0000000-0xa000ffff pref]
[ 0.363045] pci 0000:00:00.0: BAR 5: assigned [mem 0xa0010000-0xa00101ff]
[ 0.363056] pci 0000:00:00.0: BAR 5: set to [mem 0xa0010000-0xa00101ff] (PCI address [0xa0010000-0xa00101ff])
[ 0.374831] bio: create slab <bio-0> at 0
[ 0.541381] raid6: int32x1 25 MB/s
[ 0.709756] raid6: int32x2 48 MB/s
[ 0.879868] raid6: int32x4 82 MB/s
[ 1.049718] raid6: int32x8 113 MB/s
[ 1.049723] raid6: using algorithm int32x8 (113 MB/s)
[ 1.049916] vgaarb: loaded
[ 1.050233] SCSI subsystem initialized
[ 1.050520] usbcore: registered new interface driver usbfs
[ 1.050592] usbcore: registered new interface driver hub
[ 1.050678] usbcore: registered new device driver usb
[ 1.050902] Advanced Linux Sound Architecture Driver Version 1.0.24.
[ 1.051323] cfg80211: Calling CRDA to update world regulatory domain
[ 1.051705] Switching to clocksource timer2
[ 1.051935] FS-Cache: Loaded
[ 1.052064] CacheFiles: Loaded
[ 1.052949] NET: Registered protocol family 2
[ 1.053146] IP route cache hash table entries: 4096 (order: 2, 16384 bytes)
[ 1.053791] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
[ 1.053972] TCP bind hash table entries: 16384 (order: 5, 131072 bytes)
[ 1.054130] TCP: Hash tables configured (established 16384 bind 16384)
[ 1.054137] TCP reno registered
[ 1.054145] UDP hash table entries: 256 (order: 1, 8192 bytes)
[ 1.054176] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[ 1.054419] NET: Registered protocol family 1
[ 1.054708] RPC: Registered named UNIX socket transport module.
[ 1.054716] RPC: Registered udp transport module.
[ 1.054721] RPC: Registered tcp transport module.
[ 1.054726] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 2.055291] membuf_init: created membuf device(253, 0)
[ 2.055580] audit: initializing netlink socket (disabled)
[ 2.055603] type=2000 audit(2.050:1): initialized
[ 2.056572] VFS: Disk quotas dquot_6.5.2
[ 2.056707] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 2.057261] FS-Cache: Netfs 'nfs' registered for caching
[ 2.057526] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[ 2.058200] fuse init (API version 7.17)
[ 2.058391] msgmni has been set to 933
[ 2.060063] async_tx: api initialized (async)
[ 2.060183] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[ 2.060192] io scheduler noop registered
[ 2.060198] io scheduler deadline registered
[ 2.060266] io scheduler cfq registered (default)
[ 2.060574] comcerto_dma_probe: XOR DMA channel registered
[ 2.060923] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 2.366391] serial8250.0: ttyS0 at MMIO 0x96400000 (irq = 59) is a 16550A
[ 3.055862] console [ttyS0] enabled
[ 3.196353] serial8250.0: ttyS1 at MMIO 0x96300000 (irq = 58) is a 16550A
[ 3.293114] brd: module loaded
[ 3.382017] loop: module loaded
[ 3.386543] nbd: registered device at major 43
[ 3.396217] SCSI Media Changer driver v0.25
[ 3.400620] PCI: enabling device 0000:00:00.0 (0140 -> 0142)
[ 3.406376] ahci 0000:00:00.0: controller can't do 64bit DMA, forcing 32bit
[ 3.413409] ahci: SSS flag set, parallel bus scan disabled
[ 3.418946] ahci 0000:00:00.0: AHCI 0001.0200 32 slots 2 ports 6 Gbps 0x3 impl SATA mode
[ 3.427074] ahci 0000:00:00.0: flags: ncq sntf stag led clo pmp pio slum part ccc sxs
[ 3.436141] scsi0 : ahci
[ 3.439034] scsi1 : ahci
[ 3.441746] ata1: SATA max UDMA/133 abar m512@0xa0010000 port 0xa0010100 irq 96
[ 3.449079] ata2: SATA max UDMA/133 abar m512@0xa0010000 port 0xa0010180 irq 96
[ 3.456485] PCI: enabling device 0000:01:00.0 (0140 -> 0142)
[ 3.462236] ahci 0000:01:00.0: controller can't do 64bit DMA, forcing 32bit
[ 3.469255] ahci: SSS flag set, parallel bus scan disabled
[ 3.474800] ahci 0000:01:00.0: AHCI 0001.0200 32 slots 2 ports 6 Gbps 0x3 impl SATA mode
[ 3.482924] ahci 0000:01:00.0: flags: ncq sntf stag led clo pmp pio slum part ccc sxs
[ 3.491933] scsi2 : ahci
[ 3.494681] scsi3 : ahci
[ 3.497384] ata3: SATA max UDMA/133 abar m512@0xb0010000 port 0xb0010100 irq 128
[ 3.504825] ata4: SATA max UDMA/133 abar m512@0xb0010000 port 0xb0010180 irq 128
[ 3.512371] SATA Serdes: 48Mhz ref clk
[ 3.516619] Serdes2: Lane OK Passed
[ 3.520119] ahci ahci: forcing PORTS_IMPL to 0x3
[ 3.524815] ahci ahci: AHCI 0001.0300 32 slots 2 ports 3 Gbps 0x3 impl platform mode
[ 3.532590] ahci ahci: flags: ncq sntf pm led clo only pmp pio slum part ccc apst
[ 3.541182] scsi4 : ahci_platform
[ 3.544746] scsi5 : ahci_platform
[ 3.548225] ata5: SATA max UDMA/133 mmio [mem 0x9d000000-0x9d00ffff] port 0x100 irq 48
[ 3.556182] ata6: SATA max UDMA/133 mmio [mem 0x9d000000-0x9d00ffff] port 0x180 irq 48
[ 3.565079] designware_spi_probe:Initializing SPI Controller : Using dma=0 CLK(spi_i2c)=250000000 Hz
[ 3.574447] comcerto_spi comcerto_spi.0: at 0x90498000 mapped to 0xA0812000, irq=61
[ 3.582346] Fixed MDIO Bus: probed
[ 3.585809] dwc_otg: version 2.94a 27-OCT-2011
[ 3.789990] Core Release: 2.81a
[ 3.793157] Setting default values for core params
[ 3.841759] ata1: SATA link down (SStatus 0 SControl 330)
[ 3.861759] ata3: SATA link down (SStatus 0 SControl 330)
[ 3.911750] ata5: SATA link down (SStatus 0 SControl 330)
[ 3.917197] ata6: SATA link down (SStatus 0 SControl 330)
[ 3.997731] Using Buffer DMA mode
[ 4.001055] Periodic Transfer Interrupt Enhancement - disabled
[ 4.006909] Multiprocessor Interrupt Enhancement - disabled
[ 4.012500] OTG VER PARAM: 0, OTG VER FLAG: 0
[ 4.016900] dwc_otg dwc_otg.0: DWC OTG Controller
[ 4.021737] dwc_otg dwc_otg.0: new USB bus registered, assigned bus number 1
[ 4.028822] dwc_otg dwc_otg.0: irq 53, io mem 0x00000000
[ 4.034219] Init: Port Power? op_state=1
[ 4.038151] Init: Power Port (0)
[ 4.041443] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 4.048268] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 4.055517] usb usb1: Product: DWC OTG Controller
[ 4.060234] usb usb1: Manufacturer: Linux 3.2.26 dwc_otg
[ 4.065565] usb usb1: SerialNumber: dwc_otg.0
[ 4.070373] hub 1-0:1.0: USB hub found
[ 4.074152] hub 1-0:1.0: 1 port detected
[ 4.078505] mousedev: PS/2 mouse device common for all mice
[ 4.084294] i2c /dev entries driver
[ 4.087888] comcerto_i2c_calculate_dividers: speed=97kHz, M=1, N=7, dividers=0x0f
[ 4.095719] comcerto_wdt: support registered
[ 4.100029] md: linear personality registered for level -1
[ 4.105539] md: raid0 personality registered for level 0
[ 4.110865] md: raid1 personality registered for level 1
[ 4.116196] md: raid10 personality registered for level 10
[ 4.121696] md: raid6 personality registered for level 6
[ 4.127027] md: raid5 personality registered for level 5
[ 4.132356] md: raid4 personality registered for level 4
[ 4.137682] md: multipath personality registered for level -4
[ 4.143796] device-mapper: ioctl: 4.22.0-ioctl (2011-10-19) initialised: dm-devel@redhat.com
[ 4.152316] dm_crypt using the OCF for crypto acceleration.
[ 4.158083] device-mapper: multipath: version 1.3.0 loaded
[ 4.163599] device-mapper: multipath round-robin: version 1.0.0 loaded
[ 4.170145] device-mapper: multipath queue-length: version 0.1.0 loaded
[ 4.171756] WARN::dwc_otg_hcd_hub_control:2212: Overcurrent change detected
[ 4.171760]
[ 4.185257] device-mapper: multipath service-time: version 0.2.0 loaded
[ 4.185285] ata2: SATA link down (SStatus 0 SControl 330)
[ 4.201297] ALSA device list:
[ 4.204292] No soundcards found.
[ 4.208346] TCP cubic registered
[ 4.211587] NET: Registered protocol family 17
[ 4.216082] NET: Registered protocol family 15
[ 4.220539] Initializing NETLINK_KEY socket
[ 4.224751] NET: Registered protocol family 5
[ 4.229206] lib80211: common routines for IEEE802.11 drivers
[ 4.234898] Registering the dns_resolver key type
[ 4.239647] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 2
[ 4.247354] Clocks: disabled unused pll2
[ 4.251286] Clocks: disabled unused uart
[ 4.255223] Clocks: disabled unused gemtx
[ 4.259242] Clocks: disabled unused ipsec_spacc
[ 4.263788] Clocks: disabled unused dpi_cie
[ 4.267980] Clocks: disabled unused dpi_decomp
[ 4.272440] Clocks: disabled unused ntgref
[ 4.276546] Clocks: disabled unused usb1
[ 4.280478] Clocks: disabled unused ext_phy0
[ 4.284763] Clocks: disabled unused ext_phy1
[ 4.289043] Clocks: disabled unused ext_phy2
[ 4.293343] Clocks: disabled unused tpi
[ 4.293366] WARN::dwc_otg_hcd_hub_control:2212: Overcurrent change detected
[ 4.293370]
[ 4.305669] Clocks: disabled unused csys
[ 4.309601] Clocks: disabled unused tsuntg
[ 4.313712] Clocks: disabled unused sata_occ
[ 4.317991] Clocks: disabled unused pcie_occ
[ 4.322275] Clocks: disabled unused sgmii_occ
[ 4.520628] Registering CPUFreq(comcerto)
[ 4.524964] Please be patient, while OpenWrt loads ...
[ 4.541767] ata4: SATA link down (SStatus 0 SControl 330)
[ 4.564119] Freeing init memory: 12908K
[ 5.060681] rtc-s35390a 0-0030: rtc core: registered rtc-s35390a as rtc0
[ 5.067432] i2c i2c-0: new_device: Instantiated device s35390a at 0x30
[ 5.293719] RTC_TIME:Sun Jan 2 21:10:08 2000 0.000000 seconds
[ 5.321811] m25p80 spi0.0: en25q80 (1024 Kbytes)
[ 5.326463] 2 cmdlinepart partitions found on MTD device spi0.0
[ 5.332424] Creating 2 MTD partitions on "spi0.0":
[ 5.337232] 0x000000000000-0x0000000a0000 : "loader"
[ 5.342979] 0x0000000a0000-0x000000100000 : "env"
[ 5.353296] pdev->resource->start = c8300000, pdev->resource->end = c8301fff
[ 5.360386] nand_probe: comcertonand base: 0xa0854000
[ 5.365582] NAND device: Manufacturer ID: 0xec, Chip ID: 0xdc (Samsung NAND 512MiB 3,3V 8-bit)
[ 5.374224] Using default values for hw ecc
[ 5.381844] Bad block table not found for chip 0
[ 5.389847] Bad block table not found for chip 0
[ 5.394485] Scanning device for bad blocks
[ 5.399635] Bad eraseblock 18 at 0x000000240000
[ 5.407143] Bad eraseblock 72 at 0x000000900000
[ 5.414373] Bad eraseblock 121 at 0x000000f20000
[ 5.431543] Bad eraseblock 350 at 0x000002bc0000
[ 5.437877] Bad eraseblock 381 at 0x000002fa0000
[ 5.468909] Bad eraseblock 863 at 0x000006be0000
[ 5.494686] Bad eraseblock 1249 at 0x000009c20000
[ 5.514522] Bad eraseblock 1525 at 0x00000bea0000
[ 5.523511] Bad eraseblock 1603 at 0x00000c860000
[ 5.590505] Bad eraseblock 2740 at 0x000015680000
[ 5.614012] Bad eraseblock 3083 at 0x000018160000
[ 5.677544] Bad block table written to 0x00001ffe0000, version 0x01
[ 5.687162] Bad block table written to 0x00001ffc0000, version 0x01
[ 5.693484] 5 cmdlinepart partitions found on MTD device comcertonand
[ 5.699942] Creating 5 MTD partitions on "comcertonand":
[ 5.705282] 0x000000000000-0x000002000000 : "boot1_kernel"
[ 5.711546] 0x000002000000-0x00000f800000 : "boot1_rootfs2"
[ 5.717901] 0x00000f800000-0x000011800000 : "boot2_kernel"
[ 5.724091] 0x000011800000-0x00001f000000 : "boot2_rootfs2"
[ 5.730440] 0x00001f000000-0x00001ff00000 : "config"
[ 5.743398] usbcore: registered new interface driver usbhid
[ 5.748987] usbhid: USB HID core driver
[ 5.758504] usbcore: registered new interface driver usblp
[ 5.771079] ## xhci_plat_probe
[ 5.774186] ### comcerto_start_xhci
[ 5.777693] USB3.0 clock selected: internal
[ 5.785140] xhci-hcd xhci-hcd: xHCI Host Controller
[ 5.790072] xhci-hcd xhci-hcd: new USB bus registered, assigned bus number 2
[ 5.797299] xhci-hcd xhci-hcd: irq 54, io mem 0x9f000000
[ 5.802707] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[ 5.809515] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 5.816765] usb usb2: Product: xHCI Host Controller
[ 5.821655] usb usb2: Manufacturer: Linux 3.2.26 xhci-hcd
[ 5.827073] usb usb2: SerialNumber: xhci-hcd
[ 5.831851] hub 2-0:1.0: USB hub found
[ 5.835622] hub 2-0:1.0: 1 port detected
[ 5.839845] xhci-hcd xhci-hcd: xHCI Host Controller
[ 5.844774] xhci-hcd xhci-hcd: new USB bus registered, assigned bus number 3
[ 5.851910] usb usb3: New USB device found, idVendor=1d6b, idProduct=0003
[ 5.858718] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 5.865967] usb usb3: Product: xHCI Host Controller
[ 5.870858] usb usb3: Manufacturer: Linux 3.2.26 xhci-hcd
[ 5.876275] usb usb3: SerialNumber: xhci-hcd
[ 5.880958] hub 3-0:1.0: USB hub found
[ 5.884738] hub 3-0:1.0: 1 port detected
[ 5.896317] Initializing USB Mass Storage driver...
[ 5.901321] usbcore: registered new interface driver usb-storage
[ 5.907362] USB Mass Storage support registered.
[ 6.152282] usb 2-1: new high-speed USB device number 2 using xhci-hcd
[ 6.176819] usb 2-1: New USB device found, idVendor=05e3, idProduct=0610
[ 6.183611] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 6.190777] usb 2-1: Product: USB2.0 Hub
[ 6.194749] usb 2-1: Manufacturer: GenesysLogic
[ 6.204509] hub 2-1:1.0: USB hub found
[ 6.208720] hub 2-1:1.0: 4 ports detected
[ 6.214108] elp_register_ocf: Comcerto 2000 ELP Crypto Offload Engine
[ 6.220491] m86xxx_elp: Registering key des/3des aes rc4 md5 sha1 sha256 null
[ 6.262385] flashcache: flashcache-1.0-dummy initialized
[ 6.351945] usb 3-1: new SuperSpeed USB device number 2 using xhci-hcd
[ 6.374358] usb 3-1: New USB device found, idVendor=05e3, idProduct=0617
[ 6.381090] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 6.388273] usb 3-1: Product: USB3.0 Hub
[ 6.392226] usb 3-1: Manufacturer: GenesysLogic
[ 6.393478] UBI: attaching mtd3 to ubi0
[ 6.393485] UBI: physical eraseblock size: 131072 bytes (128 KiB)
[ 6.393490] UBI: logical eraseblock size: 126976 bytes
[ 6.393494] UBI: smallest flash I/O unit: 2048
[ 6.393499] UBI: VID header offset: 2048 (aligned 2048)
[ 6.393504] UBI: data offset: 4096
[ 6.444442] hub 3-1:1.0: USB hub found
[ 6.448473] hub 3-1:1.0: 4 ports detected
[ 7.904728] UBI: max. sequence number: 4
[ 7.921481] UBI: attached mtd3 to ubi0
[ 7.925270] UBI: MTD device name: "boot1_rootfs2"
[ 7.930944] UBI: MTD device size: 216 MiB
[ 7.935929] UBI: number of good PEBs: 1722
[ 7.940644] UBI: number of bad PEBs: 6
[ 7.945104] UBI: number of corrupted PEBs: 0
[ 7.949559] UBI: max. allowed volumes: 128
[ 7.954191] UBI: wear-leveling threshold: 4096
[ 7.958906] UBI: number of internal volumes: 1
[ 7.963365] UBI: number of user volumes: 1
[ 7.967819] UBI: available PEBs: 0
[ 7.972278] UBI: total number of reserved PEBs: 1722
[ 7.977254] UBI: number of PEBs reserved for bad PEB handling: 17
[ 7.983368] UBI: max/mean erase counter: 222/144
[ 7.987995] UBI: image sequence number: 1709872765
[ 7.992903] UBI: background thread "ubi_bgt0d" started, PID 369
[ 8.110935] UBIFS: mounted UBI device 0, volume 0, name "rootfs2"
[ 8.117069] UBIFS: mounted read-only
[ 8.120656] UBIFS: file system size: 208113664 bytes (203236 KiB, 198 MiB, 1639 LEBs)
[ 8.128688] UBIFS: journal size: 9023488 bytes (8812 KiB, 8 MiB, 72 LEBs)
[ 8.136022] UBIFS: media format: w4/r0 (latest is w4/r0)
[ 8.141874] UBIFS: default compressor: lzo
[ 8.145979] UBIFS: reserved for root: 0 bytes (0 KiB)
[ 8.285440] UBIFS error (pid 373): ubifs_read_node: bad node type (198 but expected 1)
[ 8.293401] UBIFS error (pid 373): ubifs_read_node: bad node at LEB 869:49728, LEB mapping status 1
[ 8.302481] UBIFS error (pid 373): do_readpage: cannot read page 67 of inode 112, error 0
[ 8.311945] UBIFS: un-mount UBI device 0, volume 0
[ 8.370825] UBI: mtd3 is detached from ubi0
[ 8.383454] usbcore: registered new interface driver usbserial
[ 8.389307] usbserial: USB Serial Driver core
[ 8.399136] USB Serial support registered for pl2303
[ 8.404238] usbcore: registered new interface driver pl2303
[ 8.409825] pl2303: Prolific PL2303 USB to serial adaptor driver
[ 8.649126] udevd (389): /proc/389/oom_adj is deprecated, please use /proc/389/oom_score_adj instead.
[ 8.658508] udev: starting version 140
[ 8.665290] pfe_module_init
[ 8.668148] pfe_platform_probe
[ 8.672274] ipsec: baseaddr :9a000000 --- a0c00000
[ 8.678086] pfe_probe
[ 8.680365] PFE Driver version:
[ 8.680367] pfe_ctrl_10_00_4
[ 8.680369] built with pfe sources version: pfe_10_00_3
[ 8.691645] cbus_baseaddr: a5000000, ddr_baseaddr: a4000000, ddr_phys_baseaddr: 3400000, ddr_size: c00000
[ 8.701243] pfe_hw_init
[ 8.703698] CLASS version: 20
[ 8.706672] TMU version: 1011231
[ 8.709906] BMU1 version: 21
[ 8.712796] BMU2 version: 21
[ 8.715682] EMAC1 network cfg: 80000
[ 8.719264] EMAC2 network cfg: 80000
[ 8.722851] EMAC3 network cfg: 80000
[ 8.726434] EGPI1 version: 50
[ 8.729407] EGPI2 version: 50
[ 8.732384] EGPI3 version: 50
[ 8.735358] HGPI version: 50
[ 8.738244] GPT version: 0
[ 8.740955] HIF version: 10
[ 8.743757] HIF NOPCY version: 10
[ 8.747079] UTIL version: 20
[ 8.749966] bmu_init(1) done
[ 8.752857] bmu_init(2) done
[ 8.762211] class_init() done
[ 8.765189] tmu_init: mem init
[ 8.768249] tmu_init: lmem init
[ 8.771441] tmu_init() done
[ 8.774246] util_init() done
[ 8.777135] gpi_init(1) done
[ 8.780022] gpi_init(2) done
[ 8.782915] gpi_init(3) done
[ 8.785803] gpi_init(hif) done
[ 8.788862] bmu_enable(1) done
[ 8.791925] bmu_enable(2) done
[ 8.794985] pfe_hif_lib_init
[ 8.798040] pfe_hif_init
[ 8.800579] pfe_hif_alloc_descr
[ 8.803832] pfe_hif_init_buffers
[ 8.807193] pfe_firmware_init
[ 69.121960] pfe_firmware_init: request firmware class_c2000.elf failed
[ 69.128515] pfe_hif_exit
[ 69.131066] pfe_hif_release_buffers
[ 69.134677] pfe_hif_free_descr
[ 69.137748] pfe_hif_lib_exit
[ 69.140801] pfe_hw_exit
[ 69.144050] pfe: probe of pfe.0 failed with error -110
[ 69.223377] set stripe cache size 1024
[ 69.227652] STRIPE_CACHE_SIZE is 1024
[ 70.616925] sysinfo: Module loaded.
[ 70.656851] fnotify: module license 'non-GPL' taints kernel.
[ 70.662546] Disabling lock debugging due to kernel taint
[ 70.668764] fnotify: Load file notify kernel module.
[ 72.662628] bonding: `' invalid for parameter `max_bonds'
[ 84.970275] ====== 2000-01-02 21:11:27 (.-) boot finished.
/sbin/daemon_mgr: error while loading shared libraries: libuLinux_config.so.0: cannot open shared object file: No such file or directory
Welcome to use the QNAP's products.
(none) login: admin
Password:
login[1210]: root login on `ttyS0'
-sh: id: command not found
-sh: reset: command not found
[~] #
Na samym końcu możemy zalogować się (admin/admin) i teoretycznie mamy uruchomiony system ale....
niestety rootfs się nie podmontował i niewiele możemy zrobić.
Widać to w linijkach 319-355, podjęta została próba podmontowania partycji mtd3 z pamięci flash z systemem plików UBIFS (system plików dedykowany dla zapisów blokowych w pamięciach flash właśnie) widać to w linijkach 319 i 344 a potem po wykryciu błędów (linijki 351-353) urządzenie z systemem plików UBIFS zawierające rootfs zostaję "odpięte" - linijki 354 i 355.
Tak więc mamy odpalony kernel bez rootfs.
Wiedząc już z którą partycją pamięci flash mam problem, podjąłem próbę jej odczytania, podłączyłem do QNAPa pendrive sformatowany w FAT, podmontowałem go i spróbowałem zgrać obraz tej patrycji:
Kod:
mkdir usb
mount /dev/sda1 usb
cd usb
cat /dev/mtd3 > mtd3.dump
Czyli potrzebny jest pakiet ubi_reader - znalazłem, postawiłem sobie linuksa (bo nie jestem linuksowcem), skonfigurowałem i za pomocą narzędzia ubireader_extract_files z tego pakietu spróbowałem wypakować pliki... niestety, wypakowało się tylko około 20% zawartości i skończyło się na CRC Error (co było do przewidzenia).
Przy okazji partycje /dev/mtd3 i /dev/mtd5 są kopiami, ale nie miałem pojęcia jak zmusić kernel do podmontowania rootfs z mtd5 a nie mtd3. Prawdopodobnie jeśli kernel będzie musiał odpalić się z kopii, to wtedy podmontuje także kopię rootfs.
A teraz skąd wziąć rootfs?? (Taaak.... Po przeczytaniu na zimno tego tekstu oczywistą oczywistością jest dla mnie to, że najszybciej odczytać rootfs z drugiej kopii na /dev/mtd5 - ale jakoś wtedy nie pomyślałem....) Odpowiedź jest prosta - musi być przecież w pliku obrazu systemu który ściąga się na potrzeby aktualizacji. Ściągnąłem więc ze strony QNAPa firmware w wersji, którą miałem zainstalowaną i teraz jak się do niego dostać??
O tak: GitHub - mb2020/qnap-utils: Utilities to unpack QNAP firmware images and QPKG files
Oczywiście nie zadziałało
Otrzymałem komunikat: "PC1 tool not found; decrypt the image first by invoking on your NAS" ... no oczywiście zaszyfrowali, a narzędzie jest zapewne w systemie QNAPa .... super - na szczęście mam jeszcze innego - działającego QNAPa, przerzuciłem więc szybko plik firmware i odpaliłem deszyfrowanie:
/sbin/PC1 d QNAPNASVERSION4 TS-X31_20180215-4.3.4.0486.img TS-X31_20180215-4.3.4.0486.img.tgz
I chciałem nawet użyć dalej skryptu do wypakowania plików z obrazu, ale okazało się, że ten .tgz normalnie się otwiera i wszystko widać, więc zrobiłem to standardowo z Windowsów.
W pliku tym znalazłem wszystko, co jest potrzebne do sflashowania systemu.
Kod:
# Archiwum TS-X31_20180215-4.3.4.0486.img.tgz
2018-02-14 22:33 Folder Folder boot
2018-02-14 22:33 Folder Folder config
2018-02-14 22:33 Folder Folder update
2018-02-14 22:33 33 ? fw_info
2018-02-14 22:33 87 ? fw_info.conf
2018-02-14 22:33 18050 ? gl352x_fw.bin
2018-02-14 22:33 144 ? gl352x_fw.eep
2018-02-14 22:33 233 ? gl352x_update.sh
2018-02-14 22:33 18552 ? gl352x_util
2018-02-14 22:33 0 ? IS_STORAGE_V2
2018-02-14 22:33 1454260 ? libcrypto.so.1.0.0
2018-02-14 22:33 312148 ? libssl.so.1.0.0
2018-02-14 22:33 170131456 ? rootfs2.ubi
2018-02-14 22:33 83 ? rootfs2.ubi.cksum
2018-02-14 22:33 17074848 ? uImage
2018-02-14 22:33 78 ? uImage.cksum
2018-02-14 22:33 7155 ? update_img.sh
#
# Razem Rozmiar Skompresowany Pliki
# 189017127 0 17
Dla mnie najważniejszy był oczywiście plik
rootfs2.ubi
, który okazał się być gotowym obrazem partycji rootfs z filesystemem UBIFS, czyli dokładnie tym, co u mnie się zepsuło. Plik uImage
to natomiast obraz kernela, który da się flashować nawet z poziomu bootloadera. Te dwa pliki wystarczają do reanimacji TS-x31 w każdej sytuacji poza uszkodzeniem bootloadera.W moim przypadku miałem załądowany kernel, problem był tylko z rootfs, po krótkiej analizie pliku
update_img.sh
skopiowałem na pendrive plik rootfs2.ubi
potem (będąc już zalogowany do QNAPa jako admin przez terminal szeregowy) włożyłem pendrive do portu USB QNAPa i przeflashowałem obie kopie rootfs:
Kod:
mkdir usb
mount /dev/sda1 usb
cd usb
ubiformat /dev/mtd3 -y -q -f rootfs2.ubi -s 2048 -O 2048
ubiformat /dev/mtd5 -y -q -f rootfs2.ubi -s 2048 -O 2048
Oryginalny skrypt sprawdza wcześniej czy partycje mtd3 i mtd5 to rootfs, ale ja już to wiedziałem. W zasadzie wystarczyłoby zrobić to tylko z
/dev/mtd3
ale.... co mi tam.Po reboocie QNAP wstał i był rozpoznawany przez Qfinder!
Trzeba oczywiście pamiętać żeby po zainicjowaniu wykonać jeszcze raz (już normalnie) cała procedurę update firmware, żeby system miał szansę przeflashować prawidłowo wszystkie partycje.
I w sumie to wszystko.
Niestety nie wiem jak z poziomu bootloadera sflashować kernel. Są dostępne komendy do operowania na nandflashu ale nie miałem takiej potrzeby, więc nie ryzykowałem, tym bardziej, że w przypadku uszkodzenia kernela powinien zabootować się rezerwowy, a jeśli nie to można wywołać boot rezerwowego kernela ręcznie zatrzymując bootowanie i wpisując w Bareboxie komendę
bootm /dev/nand0.boot2_kernel.bb
.Z poziomu kernela sam kernel można przeflashować (obie kopie) wydając komendy (oczywiście plik
uImage
na pendrive):
Kod:
mkdir usb
mount /dev/sda1 usb
cd usb
flash_erase /dev/mtd4 0 0 >&/dev/null
nandwrite -p /dev/mtd4 uImage >&/dev/null
flash_erase /dev/mtd2 0 0 >&/dev/null
nandwrite -p /dev/mtd2 uImage >&/dev/null
Uwaga! Jeśli nie zamierzasz robić
nandwrite
to nie rób flash_erase
- niby oczywiste, ale warto przypomnieć bo pisanie w pamięci flash z kernelem to zawsze niebezpieczeństwo uwalenia systemu.Oczywiście /dev/null nie jest konieczne - można sobie popatrzeć jak ktoś lubi.
No i to już wszystko.
Chyba problem można uznać za rozwiązany, choć był to monolog
Ale ja ikonki zmienić nie mogę.