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'