From c1087428b3dc64388a54ee0271d3d21f9332e634 Mon Sep 17 00:00:00 2001 From: Dan Johansen Date: Tue, 5 Oct 2021 22:28:31 +0200 Subject: [PATCH 1/6] Add f2fs-tools as a dependency Signed-off-by: Dan Johansen --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 173bb03..005a451 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ This script is "interactive". Meaning that it asks you questions when run to cus * dosfstools * polkit * btrfs-progs (for btrfs filesystem support) +* f2fs-tools (for f2fs filesystem support) * cryptsetup (for encryption support) ## Installing and using from Manjaro (x64 and ARM) repositories: From e7e0c0034872fc39005082588d67b93a5a78fdd2 Mon Sep 17 00:00:00 2001 From: Dan Johansen Date: Tue, 5 Oct 2021 23:39:09 +0200 Subject: [PATCH 2/6] add preliminary f2fs support Signed-off-by: Dan Johansen --- manjaro-arm-installer | 82 ++++++++++++++++++++++++++++--------------- 1 file changed, 53 insertions(+), 29 deletions(-) diff --git a/manjaro-arm-installer b/manjaro-arm-installer index b328484..faa7880 100755 --- a/manjaro-arm-installer +++ b/manjaro-arm-installer @@ -48,7 +48,7 @@ if [ "$EUID" -ne 0 ]; then fi # Sanity checks for dependencies -declare -a DEPENDENCIES=("git" "parted" "systemd-nspawn" "wget" "dialog" "bsdtar" "openssl" "awk" "btrfs" "mkfs.vfat" "mkfs.btrfs" "cryptsetup") +declare -a DEPENDENCIES=("git" "parted" "systemd-nspawn" "wget" "dialog" "bsdtar" "openssl" "awk" "btrfs" "mkfs.vfat" "mkfs.btrfs" "mkfs.f2fs" "cryptsetup") for i in "${DEPENDENCIES[@]}"; do if ! [[ -f "/bin/$i" || -f "/sbin/$i" || -f "/usr/bin/$i" || -f "/usr/sbin/$i" ]] ; then @@ -219,27 +219,36 @@ create_install() { cp $TMPDIR/root/usr/share/applications/corestuff.desktop $TMPDIR/root/etc/xdg/autostart/ fi - if [[ "$FSTYPE" = "btrfs" ]]; then - info "Adding btrfs support to system..." - echo "LABEL=ROOT_MNJRO / btrfs subvol=@,compress=zstd,defaults,noatime 0 0" >> $TMPDIR/root/etc/fstab - echo "LABEL=ROOT_MNJRO /home btrfs subvol=@home,compress=zstd,defaults,noatime 0 0" >> $TMPDIR/root/etc/fstab - sed -i '/^MODULES/{s/)/ btrfs)/}' $TMPDIR/root/etc/mkinitcpio.conf - $NSPAWN $TMPDIR/root mkinitcpio -P 1> /dev/null 2>&1 - if [ -f $TMPDIR/root/boot/extlinux/extlinux.conf ]; then - sed -i 's/APPEND/& rootflags=subvol=@/' $TMPDIR/root/boot/extlinux/extlinux.conf - elif [ -f $TMPDIR/root/boot/boot.ini ]; then - sed -i 's/setenv bootargs "/&rootflags=subvol=@ /' $TMPDIR/root/boot/boot.ini - elif [ -f $TMPDIR/root/boot/uEnv.ini ]; then - sed -i 's/setenv bootargs "/&rootflags=subvol=@ /' $TMPDIR/root/boot/uEnv.ini - elif [ -f $TMPDIR/root/boot/cmdline.txt ]; then - #sed -i 's/root=LABEL=ROOT_MNJRO/& rootflags=subvol=@/' $TMPDIR/root/boot/cmdline.txt - sed -i 's/^/rootflags=subvol=@ rootfstype=btrfs /g' $TMPDIR/root/boot/cmdline.txt - #elif [ -f $TMPDIR/root/boot/boot.txt ]; then - # sed -i 's/setenv bootargs/& rootflags=subvol=@/' $TMPDIR/root/boot/boot.txt - # $NSPAWN $TMPDIR/root mkimage -A arm -O linux -T script -C none -n "U-Boot boot script" -d /boot/boot.txt /boot/boot.scr - fi - - fi + case "$FSTYPE" in + btrfs) + info "Adding btrfs support to system..." + if [ -f $TMPDIR/boot/extlinux/extlinux.conf ]; then + sed -i 's/APPEND/& rootflags=subvol=@/' $TMPDIR/boot/extlinux/extlinux.conf + elif [ -f $TMPDIR/boot/boot.ini ]; then + sed -i 's/setenv bootargs "/&rootflags=subvol=@ /' $TMPDIR/boot/boot.ini + elif [ -f $TMPDIR/boot/uEnv.ini ]; then + sed -i 's/setenv bootargs "/&rootflags=subvol=@ /' $TMPDIR/boot/uEnv.ini + elif [ -f $TMPDIR/boot/cmdline.txt ]; then + sed -i 's/^/rootflags=subvol=@ rootfstype=btrfs /' $TMPDIR/boot/cmdline.txt + elif [ -f $TMPDIR/boot/boot.txt ]; then + sed -i 's/setenv bootargs/& rootflags=subvol=@/' $TMPDIR/boot/boot.txt + $NSPAWN $TMPDIR mkimage -A arm -O linux -T script -C none -n "U-Boot boot script" -d /boot/boot.txt /boot/boot.scr + fi + echo "LABEL=ROOT_MNJRO / btrfs subvol=@,compress=zstd,defaults,noatime 0 0" >> $TMPDIR/root/etc/fstab + echo "LABEL=ROOT_MNJRO /home btrfs subvol=@home,compress=zstd,defaults,noatime 0 0" >> $TMPDIR/root/etc/fstab + sed -i '/^MODULES/{s/)/ btrfs)/}' $TMPDIR/root/etc/mkinitcpio.conf + $NSPAWN $TMPDIR mkinitcpio -P 1> /dev/null 2>&1 + ;; + f2fs) + info "Adding f2fs support to system..." + echo "LABEL=ROOT_MNJRO / f2fs compress=zstd,defaults,noatime 0 0" >> $TMPDIR/root/etc/fstab + sed -i '/^MODULES/{s/)/ f2fs)/}' $TMPDIR/root/etc/mkinitcpio.conf + $NSPAWN $TMPDIR mkinitcpio -P 1> /dev/null 2>&1 + ;; + *) + info "Adding ext4 support to system..." + ;; + esac if [[ "$CRYPT" = "yes" ]]; then @@ -308,6 +317,17 @@ prepare_card () { mount -o compress=zstd,subvol=@home "${SDCARD}${SDDEV}2" $TMPDIR/root/home mount ${SDCARD}${SDDEV}1 $TMPDIR/boot ;; + f2fs) + parted -s $SDCARD mkpart primary f2fs "${END_SECTOR}s" 100% 1> /dev/null 2>&1 + partprobe $SDCARD 1> /dev/null 2>&1 + mkfs.vfat "${SDCARD}${SDDEV}1" -n BOOT_MNJRO 1> /dev/null 2>&1 + mkfs.f2fs -l ROOT_MNJRO -O extra_attr,inode_checksum,sb_checksum,compression "${SDCARD}${SDDEV}2" 1> /dev/null 2>&1 + + mkdir -p $TMPDIR/root + mkdir -p $TMPDIR/boot + mount ${SDCARD}${SDDEV}1 $TMPDIR/boot + mount ${SDCARD}${SDDEV}2 $TMPDIR/root + ;; ext4) parted -s $SDCARD mkpart primary ext4 "${END_SECTOR}s" 100% 1> /dev/null 2>&1 partprobe $SDCARD 1> /dev/null 2>&1 @@ -392,11 +412,14 @@ cleanup () { fi sync - if [[ "$FSTYPE" = "btrfs" ]]; then - sed -i "s/LABEL=ROOT_MNJRO/PARTUUID=$ROOT_PARTUUID/g" $TMPDIR/root/etc/fstab - else - echo "PARTUUID=$ROOT_PARTUUID / $FSTYPE defaults 0 1" >> $TMPDIR/root/etc/fstab - fi + case "$FSTYPE" in + btrfs|f2fs) + sed -i "s/LABEL=ROOT_MNJRO/PARTUUID=$ROOT_PARTUUID/g" $TMPDIR/root/etc/fstab + ;; + *) + echo "PARTUUID=$ROOT_PARTUUID / $FSTYPE defaults 0 1" >> $TMPDIR/root/etc/fstab + ;; + esac #clean up if [[ "$FSTYPE" = "btrfs" ]]; then umount $TMPDIR/root/home @@ -624,8 +647,9 @@ fi if [ ! -z "$SDCARD" ]; then FSTYPE=$(dialog --clear --title "Manjaro ARM Installer v${VERSION}" \ --menu "Choose a filesystem:" 10 90 10 \ - "ext4" "Regular ext4 filesystem" \ + "ext4" "Regular ext4 filesystem for the root partition" \ "btrfs" "Uses btrfs for root partition and makes / and /home subvolumes" \ + "f2fs" "Use f2fs for the root partition" \ 3>&1 1>&2 2>&3 3>&-) else @@ -633,7 +657,7 @@ else exit 1 fi -if [[ "$DEVICE" = "pbpro" ]] || [[ "$DEVICE" = "rockpro64" ]] || [[ "$DEVICE" = "rockpi4b" ]] || [[ "$DEVICE" = "rockpi4c" ]] && [[ "$FSTYPE" != "btrfs" ]]; then +if [[ "$DEVICE" = "pbpro" ]] || [[ "$DEVICE" = "rockpro64" ]] || [[ "$DEVICE" = "rockpi4b" ]] || [[ "$DEVICE" = "rockpi4c" ]] && [[ "$FSTYPE" != "btrfs" ]] && [[ "$FSTYPE" != "f2fs" ]]; then CRYPT=$(dialog --clear --title "Manjaro ARM Installer v${VERSION}" \ --menu "[Experimental!] Do you want encryption on root partition?" 10 90 10 \ "no" "No, thanks" \ From fcefcf168f13ff8f68d44fde1ab116d31f1b5cdf Mon Sep 17 00:00:00 2001 From: Dan Johansen Date: Sat, 9 Oct 2021 15:56:14 +0200 Subject: [PATCH 3/6] force format with f2fs Signed-off-by: Dan Johansen --- manjaro-arm-installer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manjaro-arm-installer b/manjaro-arm-installer index faa7880..af35a11 100755 --- a/manjaro-arm-installer +++ b/manjaro-arm-installer @@ -321,7 +321,7 @@ prepare_card () { parted -s $SDCARD mkpart primary f2fs "${END_SECTOR}s" 100% 1> /dev/null 2>&1 partprobe $SDCARD 1> /dev/null 2>&1 mkfs.vfat "${SDCARD}${SDDEV}1" -n BOOT_MNJRO 1> /dev/null 2>&1 - mkfs.f2fs -l ROOT_MNJRO -O extra_attr,inode_checksum,sb_checksum,compression "${SDCARD}${SDDEV}2" 1> /dev/null 2>&1 + mkfs.f2fs -f -l ROOT_MNJRO -O extra_attr,inode_checksum,sb_checksum,compression "${SDCARD}${SDDEV}2" 1> /dev/null 2>&1 mkdir -p $TMPDIR/root mkdir -p $TMPDIR/boot From a8588acf56bab0a650ea335aff299bb228174a04 Mon Sep 17 00:00:00 2001 From: Dan Johansen Date: Sat, 9 Oct 2021 17:57:36 +0200 Subject: [PATCH 4/6] install f2fs-tools if f2fs is selected, so mkinitcpio runs properly Signed-off-by: Dan Johansen --- manjaro-arm-installer | 1 + 1 file changed, 1 insertion(+) diff --git a/manjaro-arm-installer b/manjaro-arm-installer index af35a11..8b7557f 100755 --- a/manjaro-arm-installer +++ b/manjaro-arm-installer @@ -241,6 +241,7 @@ create_install() { ;; f2fs) info "Adding f2fs support to system..." + $NSPAWN $TMPDIR pacman -S f2fs-tools --noconfirm 1> /dev/null 2>&1 echo "LABEL=ROOT_MNJRO / f2fs compress=zstd,defaults,noatime 0 0" >> $TMPDIR/root/etc/fstab sed -i '/^MODULES/{s/)/ f2fs)/}' $TMPDIR/root/etc/mkinitcpio.conf $NSPAWN $TMPDIR mkinitcpio -P 1> /dev/null 2>&1 From fd72b49ef5d157382abe9b82e37c6e6b799d38be Mon Sep 17 00:00:00 2001 From: Dan Johansen Date: Sat, 9 Oct 2021 20:52:41 +0200 Subject: [PATCH 5/6] change f2fs mount options as recommended by 0n0w1c Signed-off-by: Dan Johansen --- manjaro-arm-installer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manjaro-arm-installer b/manjaro-arm-installer index 8b7557f..5a2f03f 100755 --- a/manjaro-arm-installer +++ b/manjaro-arm-installer @@ -242,7 +242,7 @@ create_install() { f2fs) info "Adding f2fs support to system..." $NSPAWN $TMPDIR pacman -S f2fs-tools --noconfirm 1> /dev/null 2>&1 - echo "LABEL=ROOT_MNJRO / f2fs compress=zstd,defaults,noatime 0 0" >> $TMPDIR/root/etc/fstab + echo "LABEL=ROOT_MNJRO / f2fs defaults,noatime,compress_algorithm=zstd 0 0" >> $TMPDIR/root/etc/fstab sed -i '/^MODULES/{s/)/ f2fs)/}' $TMPDIR/root/etc/mkinitcpio.conf $NSPAWN $TMPDIR mkinitcpio -P 1> /dev/null 2>&1 ;; From 6149b5327a4709b915ef2a8d923f9d448794fc89 Mon Sep 17 00:00:00 2001 From: Dan Johansen Date: Sat, 9 Oct 2021 22:30:08 +0200 Subject: [PATCH 6/6] fix a couple of rootfs paths Signed-off-by: Dan Johansen --- manjaro-arm-installer | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/manjaro-arm-installer b/manjaro-arm-installer index 5a2f03f..7adaecc 100755 --- a/manjaro-arm-installer +++ b/manjaro-arm-installer @@ -232,19 +232,19 @@ create_install() { sed -i 's/^/rootflags=subvol=@ rootfstype=btrfs /' $TMPDIR/boot/cmdline.txt elif [ -f $TMPDIR/boot/boot.txt ]; then sed -i 's/setenv bootargs/& rootflags=subvol=@/' $TMPDIR/boot/boot.txt - $NSPAWN $TMPDIR mkimage -A arm -O linux -T script -C none -n "U-Boot boot script" -d /boot/boot.txt /boot/boot.scr + $NSPAWN $TMPDIR/root mkimage -A arm -O linux -T script -C none -n "U-Boot boot script" -d /boot/boot.txt /boot/boot.scr fi echo "LABEL=ROOT_MNJRO / btrfs subvol=@,compress=zstd,defaults,noatime 0 0" >> $TMPDIR/root/etc/fstab echo "LABEL=ROOT_MNJRO /home btrfs subvol=@home,compress=zstd,defaults,noatime 0 0" >> $TMPDIR/root/etc/fstab sed -i '/^MODULES/{s/)/ btrfs)/}' $TMPDIR/root/etc/mkinitcpio.conf - $NSPAWN $TMPDIR mkinitcpio -P 1> /dev/null 2>&1 + $NSPAWN $TMPDIR/root mkinitcpio -P 1> /dev/null 2>&1 ;; f2fs) info "Adding f2fs support to system..." - $NSPAWN $TMPDIR pacman -S f2fs-tools --noconfirm 1> /dev/null 2>&1 + $NSPAWN $TMPDIR/root pacman -S f2fs-tools --noconfirm 1> /dev/null 2>&1 echo "LABEL=ROOT_MNJRO / f2fs defaults,noatime,compress_algorithm=zstd 0 0" >> $TMPDIR/root/etc/fstab sed -i '/^MODULES/{s/)/ f2fs)/}' $TMPDIR/root/etc/mkinitcpio.conf - $NSPAWN $TMPDIR mkinitcpio -P 1> /dev/null 2>&1 + $NSPAWN $TMPDIR/root mkinitcpio -P 1> /dev/null 2>&1 ;; *) info "Adding ext4 support to system..."