You are not logged in.

#1 2016-02-24 15:45:15

GosuSan
Member
Registered: 2014-08-19
Posts: 32

Installing ArchLinux on USB using F2FS and GRUB

Hello everyone,

Recently I started on my own interpretation of a bootable ArchLinux installation of one of my unused USB-Sticks.
I decided to try out F2FS as a filesystem, because I've read in many places that it is the best FS for flash-drives.

My stick has 3 partitions,

/dev/sdb1   8 GiB      fat32     (as cross-platform file storage)
/dev/sdb2   265 MiB  ext4      with disabled journal as boot partition
/dev/sdb3   ~6GiB     f2fs       root filesystem

I did follow this Guide,
with three exceptions:

1. FAT32 partition first because some older Windows systems won't recognize any other partition except the first one.
2. Linux root partition is F2FS instead of ext4
3. disabled journal on /boot (/dev/sdb2)

Now the problem:
I install grub, use "grub-mkconfig -o /boot/grub/grub.cfg" everything works without errors, but the /boot/grub/grub.cfg stays completely empty. Not a single entry. When I boot the stick it stops at grub command line.

Why is that? And how do I generate a working grub.cfg?

Thanks in advance!

Edit: I did think of switching to btrfs, since its zlib compression could save quite some read/write cycles too, and it should allow me to remove the /boot partition, right?

Last edited by GosuSan (2016-02-24 15:49:47)

Offline

#2 2016-02-24 15:47:11

Scimmia
Fellow
Registered: 2012-09-01
Posts: 11,466

Re: Installing ArchLinux on USB using F2FS and GRUB

You might want to put GRUB in the title since that's where your problem is. I have a similar setup using f2fs, but don't use GRUB, so I can't be of any help here.

Online

#3 2016-02-24 15:51:00

GosuSan
Member
Registered: 2014-08-19
Posts: 32

Re: Installing ArchLinux on USB using F2FS and GRUB

Scimmia wrote:

... I have a similar setup using f2fs, but don't use GRUB, so I can't be of any help here.

What bootloader are you using? syslinux?

Offline

#4 2016-02-24 15:58:41

Scimmia
Fellow
Registered: 2012-09-01
Posts: 11,466

Re: Installing ArchLinux on USB using F2FS and GRUB

Syslinux for BIOS, systemd-boot for UEFI (32 and 64 bit).

Online

#5 2016-02-25 21:33:06

CarlD
Member
From: London
Registered: 2013-11-23
Posts: 128

Re: Installing ArchLinux on USB using F2FS and GRUB

Did you install f2fs-tools and modprobe f2fs?

Also, I think you're about to get a smacked bum for referencing an unofficial  guide. You want the official one.

Offline

#6 2016-02-27 20:34:32

GosuSan
Member
Registered: 2014-08-19
Posts: 32

Re: Installing ArchLinux on USB using F2FS and GRUB

I did read the official guide, it is pretty much the same, the other one is just much easier to follow.
I tried again and this time the install was successful and a grub.cfg was generated:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if loadfont unicode ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_input console
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=5
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-/dev/sdb3' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_msdos 
	insmod ext2
	set root='hd1,msdos2'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos2 --hint-efi=hd1,msdos2 --hint-baremetal=ahci1,msdos2  ea763a5f-5048-4e21-a6cb-ff8ae147bf01
	else
	  search --no-floppy --fs-uuid --set=root ea763a5f-5048-4e21-a6cb-ff8ae147bf01
	fi
	echo	'Loading Linux linux ...'
	linux	/vmlinuz-linux root=/dev/sdb3 rw  quiet
	echo	'Loading initial ramdisk ...'
	initrd	 /initramfs-linux.img
}
submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-/dev/sdb3' {
	menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-/dev/sdb3' {
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_msdos 
		insmod ext2
		set root='hd1,msdos2'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos2 --hint-efi=hd1,msdos2 --hint-baremetal=ahci1,msdos2  ea763a5f-5048-4e21-a6cb-ff8ae147bf01
		else
		  search --no-floppy --fs-uuid --set=root ea763a5f-5048-4e21-a6cb-ff8ae147bf01
		fi
		echo	'Loading Linux linux ...'
		linux	/vmlinuz-linux root=/dev/sdb3 rw  quiet
		echo	'Loading initial ramdisk ...'
		initrd	 /initramfs-linux.img
	}
	menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-/dev/sdb3' {
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_msdos 
		insmod ext2
		set root='hd1,msdos2'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos2 --hint-efi=hd1,msdos2 --hint-baremetal=ahci1,msdos2  ea763a5f-5048-4e21-a6cb-ff8ae147bf01
		else
		  search --no-floppy --fs-uuid --set=root ea763a5f-5048-4e21-a6cb-ff8ae147bf01
		fi
		echo	'Loading Linux linux ...'
		linux	/vmlinuz-linux root=/dev/sdb3 rw  quiet
		echo	'Loading initial ramdisk ...'
		initrd	 /initramfs-linux-fallback.img
	}
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

### BEGIN /etc/grub.d/60_memtest86+ ###
### END /etc/grub.d/60_memtest86+ ###

However, it uses the device path (/dev/sdb3) instead of the UUIDs, this results in this error on boot time:

ERROR: Unable to find root device '/dev/sda3'.
You are being dropped to a recovery shell
     Type 'exit' to try and continue booting
sh: can't access tty; job control turned off
[rootfs /]#

It should use the UUIDs for this part, why does it use the device path?

/etc/fstab

# 
# /etc/fstab: static file system information
#
# <file system>	<dir>	<type>	<options>	<dump>	<pass>
# /dev/sdb3 LABEL=archusb-root
UUID=f3db18e9-4143-4e04-8008-853a52210de0	/         	f2fs      	rw,relatime,background_gc=on,inline_data,extent_cache,active_logs=6	0 0

# /dev/sdb2 LABEL=archusb-boot
UUID=ea763a5f-5048-4e21-a6cb-ff8ae147bf01	/boot     	ext4      	rw,relatime	0 2

Can anyone tell me what went wrong? I did find this solution, but it is already part of the guide, and I did this already.

Any idea why Arch is using /dev/sdb3 instead of the UUID?

Thanks in advance smile

Last edited by GosuSan (2016-02-27 20:35:21)

Offline

#7 2016-02-28 00:00:51

clfarron4
Member
From: London, UK
Registered: 2013-06-28
Posts: 2,163
Website

Re: Installing ArchLinux on USB using F2FS and GRUB

You can switch the root=/dev/sdbX with the root=/dev/disk/by-uuid/UUID entries in GRUB manually by editing the /boot/grub/grub.cfg yourself.

I have no idea why it's using /dev/sdbX though.


Claire is fine.
Problems? I have dysgraphia, so clear and concise please.
My public GPG key for package signing
My x86_64 package repository

Offline

#8 2016-03-02 10:31:36

GosuSan
Member
Registered: 2014-08-19
Posts: 32

Re: Installing ArchLinux on USB using F2FS and GRUB

After trying several times I finally gave up and just used ext4 without journals for both partitions.
Everything works great without any problem now and that should be good enough.
Don't know where the issue is/was but I can't be bothered any more now big_smile
Thanks for all your Ideas and help anyway!

Offline

#9 2016-05-13 22:29:07

wulvyrn
Member
Registered: 2015-02-02
Posts: 19

Re: Installing ArchLinux on USB using F2FS and GRUB

The aur package grub-f2fs does work.

Offline

#10 2022-07-23 13:52:19

puzzle
Member
Registered: 2019-03-09
Posts: 10

Re: Installing ArchLinux on USB using F2FS and GRUB

CarlD wrote:

Did you install f2fs-tools and modprobe f2fs?

Also, I think you're about to get a smacked bum for referencing an unofficial  guide. You want the official one.

yea kernel need modprobe

Offline

#11 2022-07-23 15:01:47

ewaller
Administrator
From: Pasadena, CA
Registered: 2009-07-13
Posts: 19,740

Re: Installing ArchLinux on USB using F2FS and GRUB

I am going to close this old thread.  Puzzle, try to be aware of the age of threads when posting.


Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
Sometimes it is the people no one can imagine anything of who do the things no one can imagine. -- Alan Turing
---
How to Ask Questions the Smart Way

Offline

Board footer

Powered by FluxBB