Making TL MR3420 extroot - vanaware/openwrt GitHub Wiki

Making TL-MR3420 extroot

link : https://openwrt.org/docs/guide-user/additional-software/extroot_configuration
On an Debian Machine execute the following commands to prepare an usb pendrive with f2fs filesystem

sudo apt install f2fs-tools

Make pendrive at /dev/sdg an f2fs filesystem

# erase partition table
sudo dd if=/dev/zero of=/dev/sdh bs=1M count=1
sudo wipefs /dev/sdh

# sdh1 is 'swap'
# sdh2 is 'root' 
sudo fdisk /dev/sdh <<EOF
o
n
p
1

+128M
n
p
2

+4096M
n
p
3


t
1
82
w
EOF

sudo mkswap -L swap /dev/sdh1
sudo mkfs.f2fs -l f2fs /dev/sdh2

sudo mkfs.btrfs -f -d dup -m dup -L btrfs /dev/sdh3
sudo mkdir -p /mnt/usb/
sudo mount -t btrfs /dev/sdh3 /mnt/usb/
sudo btrfs subvolume create /mnt/usb/data
sudo umount /mnt/usb

sudo blkid /dev/sdh*
/dev/sdh: PTUUID="4d635f9f" PTTYPE="dos"
/dev/sdh1: LABEL="swap" UUID="ac9e487e-a7c8-4f0e-8c50-3966862d9f52" TYPE="swap" PARTUUID="4d635f9f-01"
/dev/sdh2: LABEL="f2fs" UUID="fddafe01-a4b4-4dd7-ab6c-4503f11eef5f" TYPE="f2fs" PARTUUID="4d635f9f-02"
/dev/sdh3: LABEL="btrfs" UUID="fd2a134e-59fc-4f57-af19-1f0fe634eb7d" UUID_SUB="37760c04-1eef-4be7-8008-7a3fa50468ed" TYPE="btrfs" PARTUUID="4d635f9f-03"

sudo cp /var/lib/lxc/openwrt/rootfs/root/openwrt/lede-17.01.4-ar71xx-generic-tl-mr3420-v1-usbmount* ~/openwrt/
sudo chmod 777 ~/openwrt/lede-17.01.4-ar71xx-generic-tl-mr3420-v1-usbmount*.bin

Transfer files to upgrade openwrt for f2fs filesystem


cd ~/openwrt    
python -m SimpleHTTPServer    
cd /tmp/
wget http://192.168.1.35:8000/lede-17.01.4-ar71xx-generic-tl-mr3420-v1-usbmount-sysupgrade.bin -O sysupgrade.bin
wget http://192.168.1.35:8000/lede-17.01.4-ar71xx-generic-tl-mr3420-v1-usbmount-factory.bin -O factory.bin


scp ~/openwrt/lede-17.01.4-ar71xx-generic-tl-mr3420-v1-usbmount-sysupgrade.bin [email protected]:/tmp/sysupgrade.bin
ssh [email protected]
ls /tmp
sysupgrade -d 5 -v /tmp/sysupgrade.bin  

# or with factory.bin
sudo scp /var/lib/lxc/openwrt/rootfs/root/openwrt/bin/targets/ar71xx/generic/lede-17.01.4-ar71xx-generic-tl-mr3420-v1-squashfs-factory.bin [email protected]:/tmp/factory.bin
scp ~/openwrt/lede-17.01.4-ar71xx-generic-tl-mr3420-v1-usbmount-factory.bin [email protected]:/tmp/factory.bin
ssh [email protected]
ls /tmp
mtd -r write /tmp/factory.bin firmware

Enter into openwrt and force extroot with f2fs filesystem


uci set fstab.@global[0].delay_root='15'
uci set fstab.@global[0].anon_swap='0'
uci set fstab.@global[0].anon_mount='0'
uci set fstab.@global[0].auto_swap='0'
uci set fstab.@global[0].auto_mount='0'
uci set fstab.@global[0].check_fs='0'
# Make swap
uci get fstab.diskswap && uci delete fstab.diskswap
uci set fstab.diskswap=swap
uci set fstab.diskswap.device="/dev/sda1"
uci set fstab.diskswap.enabled='1'
# Make jffs2 boot acessible
mkdir /overlay-boot
uci get fstab.jffs2 && uci delete fstab.jffs2
uci set fstab.jffs2=mount
uci set fstab.jffs2.target='/overlay-boot'
uci set fstab.jffs2.fstype='jffs2'
uci set fstab.jffs2.device='/dev/mtdblock3'
uci set fstab.jffs2.options='rw,sync'
uci set fstab.jffs2.enabled='1'
# Make usb rootfs
uci get fstab.rootfs && uci delete fstab.rootfs
uci set fstab.rootfs=mount
uci set fstab.rootfs.target='/'
uci set fstab.rootfs.fstype='f2fs'
uci set fstab.rootfs.device="/dev/sda2"
uci set fstab.rootfs.options='rw,noatime,sync,background_gc=sync,nouser_xattr,fastboot'
uci set fstab.rootfs.enabled='1'
uci get fstab.overlay && uci set fstab.overlay.enabled='0'
uci commit fstab

mkdir -p /tmp/extroot/
mount -t f2fs /dev/sda2 /tmp/extroot
mkdir -p /tmp/introot
mount --bind / /tmp/introot
sudo rm -fr /tmp/extroot/*
tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf -
umount /tmp/introot
umount /tmp/extroot

sync
reboot

Using rootfs.tar.gz

sudo mount -t f2fs /dev/sdh2 /mnt/usb
sudo rm -fr /mnt/usb/*
sudo tar -xvf ~/openwrt/lede-17.01.4-ar71xx-generic-tl-mr3420-v1-rootfs.tar.gz -C /mnt/usb/    
sudo umount /mnt/usb

FSTAB EXAMPLE

file located at: /etc/config/fstab

mkdir /overlay-boot mkdir -p /mnt/data scp ~/openwrt/fstab/fstab [email protected]:/etc/config/

cat /etc/config/fstab

config global
	option anon_swap '0'
	option anon_mount '0'
	option check_fs '0'
	option delay_root '15'
	option auto_swap '0'
	option auto_mount '0'

config swap 'diskswap'
	option device '/dev/sda1'
	option enabled '1'

config mount 'jffs2'
	option target '/overlay-boot'
	option fstype 'jffs2'
	option device '/dev/mtdblock3'
	option options 'rw,sync'
	option enabled '1'

config mount 'f2fs'
	option target '/'
	option fstype 'f2fs'
	option device '/dev/sda2'
	option options 'rw,noatime,nodiratime,noacl,sync,background_gc=sync,nouser_xattr,fastboot,discard'
	option enabled '0'

config mount 'btrfs'
	option target '/'
	option fstype 'btrfs'
	option device '/dev/sda3'
	option options 'subvol=/rootfs,noatime,nodiratime,ssd_spread,noacl,space_cache,degraded,discard'
	option enabled '0'

config mount 'ext4'
	option target '/'
	option fstype 'ext4'
	option device '/dev/sda2'
	option options 'rw,noatime,nodiratime,noacl,data=ordered,errors=continue,discard'
	option enabled '0'

config mount 'overlay'
	option target '/overlay'
	option fstype 'btrfs'
	option device '/dev/sda3'
	option options 'subvol=/overlay,noatime,nodiratime,ssd_spread,noacl,space_cache,degraded,discard'
	option enabled '0'

config mount 'data'
	option target '/mnt/data'
	option fstype 'btrfs'
	option device '/dev/sda3'
	option options 'subvol=/data,noatime,nodiratime,ssd_spread,noacl,space_cache,degraded,discard'
	option enabled '1'