Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Successful with QNAP TS-412. Logs included. #26

Closed
fadlytabrani opened this issue Jun 14, 2022 · 1 comment
Closed

Successful with QNAP TS-412. Logs included. #26

fadlytabrani opened this issue Jun 14, 2022 · 1 comment

Comments

@fadlytabrani
Copy link

root@NASC8F1EC:/tmp# cat /proc/mtd
dev: size erasesize name
mtd0: 00080000 00040000 "U-Boot"
mtd1: 00200000 00040000 "Kernel"
mtd2: 00900000 00040000 "RootFS1"
mtd3: 00300000 00040000 "RootFS2"
mtd4: 00040000 00040000 "U-Boot Config"
mtd5: 00140000 00040000 "NAS Config"
root@NASC8F1EC:/tmp# python3 qnap_mtd_resize.py

[Check of the QNAP model and see if supported]
kirkwood-qnap: machine: QNAP TS419 family
DTB file: kirkwood-ts419-6281.dtb
Partition resize was not tested on this device yet. Do you want to continue ? (y/N)
y
In case of success, please report the DTB file indication.

Checking: flashcp -V
Checking: flash_erase --version
Using 'u-boot-tools' package

[find on which MTD device partitions are currently mounted]
spi0.0

[Dump current U-boot config']
Current U-boot bootcmd:
uart1 0x68;cp.l 0xf8200000 0x800000 0x80000;cp.l 0xf8400000 0xa00000 0x240000;bootm 0x800000
Current U-boot bootargs:
console=ttyS0,115200 root=/dev/ram initrd=0xa00000,0x900000 ramdisk=34816

[Prepare new 'bootcmd']
Old: uart1 0x68;cp.l 0xf8200000 0x800000 0x80000;cp.l 0xf8400000 0xa00000 0x240000;bootm 0x800000
New: uart1 0x68;cp.l 0xf8100000 0x800000 0xc0000;cp.l 0xf8400000 0xb00000 0x300000;bootm 0x800000;echo Kernel_legacy layout fallback;bootm 0x900000

[Prepare new 'bootargs']
Old: console=ttyS0,115200 root=/dev/ram initrd=0xa00000,0x900000 ramdisk=34816
New: console=ttyS0,115200 root=/dev/ram initrd=0xb00000,0xc00000 ramdisk=34816 cmdlinepart.mtdparts=spi0.0:512k@0(uboot)ro,3M@0x100000(Kernel),12M@0x400000(RootFS1),2M@0x200000(Kernel_legacy),256k@0x80000(U-Boot_Config),256k@0xc0000(NAS_Config) mtdparts=spi0.0:512k@0(uboot)ro,3M@0x100000(Kernel),12M@0x400000(RootFS1),2M@0x200000(Kernel_legacy),256k@0x80000(U-Boot_Config),256k@0xc0000(NAS_Config)

[Prepare fw_setenv script (/tmp/fw_setenv.script)]

[Dump current 'NAS config' and 'Kernel' images]

  • cat /dev/mtd5
    [Resize 'NAS config' dump from 1280KB to 256KB.]

  • modprobe loop

  • losetup --show -f /tmp/mtd_nas_config.dump

  • loopdev=/dev/loop0

  • e2fsck -f -p -v /dev/loop0

        18 inodes used (14.06%, out of 128)
         2 non-contiguous files (11.1%)
         0 non-contiguous directories (0.0%)
           # of inodes with ind/dind/tind blocks: 0/0/0
        55 blocks used (5.37%, out of 1024)
         0 bad blocks
         0 large files
    
         7 regular files
         2 directories
         0 character device files
         0 block device files
         0 fifos
         0 links
         0 symbolic links (0 fast symbolic links)
         0 sockets
    

       9 files
  • true

  • e2fsck -f -p -v /dev/loop0

        18 inodes used (14.06%, out of 128)
         2 non-contiguous files (11.1%)
         0 non-contiguous directories (0.0%)
           # of inodes with ind/dind/tind blocks: 0/0/0
        55 blocks used (5.37%, out of 1024)
         0 bad blocks
         0 large files
    
         7 regular files
         2 directories
         0 character device files
         0 block device files
         0 fifos
         0 links
         0 symbolic links (0 fast symbolic links)
         0 sockets
    

       9 files
  • resize2fs /dev/loop0 128
    resize2fs 1.44.5 (15-Dec-2018)
    Resizing the filesystem on /dev/loop0 to 128 (1k) blocks.
    The filesystem on /dev/loop0 is now 128 (1k) blocks long.

  • losetup -d /dev/loop0

[Concatenate first 256K of 'NAS config' with first 1MB of Kernel > /tmp/mtd_nas_config.new]

[Prepare second 1MB of kernel tail > /tmp/mtd_kernel.tail]

!!!! Warning !!!!

Everything is fine up to now.
Next steps will write the flash and may be subject to failures.

It is highly recommended to perform a MTD backup and save the files
somewhere (USB device, PC)

    cat /dev/mtd0 > /tmp/mtd0.uboot.backup
    cat /dev/mtd1 > /tmp/mtd1.kernel.backup
    cat /dev/mtd2 > /tmp/mtd2.rootfs1.backup
    cat /dev/mtd3 > /tmp/mtd3.rootfs2.backup
    cat /dev/mtd4 > /tmp/mtd4.uboot-config.backup
    cat /dev/mtd5 > /tmp/mtd5.nas-config.backup
    fw_printenv -c /tmp/fw_env.config  > /tmp/uboot_config.backup.txt
    cd /tmp
    tar cvzf mtd_backup.tgz mtd?.*.backup uboot_config.backup.txt
    
    # now use scp / sftp to push/pull mtd_backup.tgz on another PC.

Be sure you will not cut the power until the end of operations.
In case of failure, you way need to recover with a Serial Console 
to run U-boot commands

    https://www.cyrius.com/debian/kirkwood/qnap/ts-219/serial/

Continue and flash the new partitions ? (y/N)
y

[Flash 'NAS config' partition content (ie 'NAS config' + head of Kernel) (still a 'safe' op)]

  • flashcp -v /tmp/mtd_nas_config.new /dev/mtd5
    Erasing blocks: 5/5 (100%)
    Writing data: 1280k/1280k (100%)
    Verifying data: 1280k/1280k (100%)

[Change U-boot config with new values)]

  • fw_setenv -c /tmp/fw_env.config -s /tmp/fw_setenv.script

[Flash tail of the kernel in old 'Kernel' Partition]

  • flashcp -v /tmp/mtd_kernel.tail /dev/mtd1
    Erasing blocks: 4/4 (100%)
    Writing data: 1024k/1024k (100%)
    Verifying data: 1024k/1024k (100%)

[Make a copy of /tmp/fw_env.config into /etc/fw_env.config (if not already existing)]

SUCCESS. 

Now, REBOOT !

Notes: 
- DO NOT PERFORM A KERNEL OR SYSTEM UPDATE before the next reboot !... 
  so don't wait too long.
- Consider compressing initrd with 'xz' to optimize the size with:

    echo "COMPRESS=xz" > /etc/initramfs-tools/conf.d/compress

root@NASC8F1EC:/tmp# cat /proc/mtd
dev: size erasesize name
mtd0: 00080000 00040000 "U-Boot"
mtd1: 00200000 00040000 "Kernel"
mtd2: 00900000 00040000 "RootFS1"
mtd3: 00300000 00040000 "RootFS2"
mtd4: 00040000 00040000 "U-Boot Config"
mtd5: 00140000 00040000 "NAS Config"
root@NASC8F1EC:/tmp# shutdown -r now
root@NASC8F1EC:/tmp# Connection to 10.180.100.106 closed by remote host.
Connection to 10.180.100.106 closed.
Xxxx ~ % ssh root@10.180.100.106
root@10.180.100.106's password:
Linux NASC8F1EC 4.19.0-20-marvell #1 Debian 4.19.235-1 (2022-03-17) armv5tel

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Jun 14 22:33:24 2022 from 10.180.51.104
root@NASC8F1EC:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00080000 00040000 "uboot"
mtd1: 00300000 00040000 "Kernel"
mtd2: 00c00000 00040000 "RootFS1"
mtd3: 00200000 00040000 "Kernel_legacy"
mtd4: 00040000 00040000 "U-Boot_Config"
mtd5: 00040000 00040000 "NAS_Config"

@amouiche
Copy link
Owner

amouiche commented Jun 14, 2022 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants