Grub Dependencies and rEFInd switch

Hey there,
considering the grub problems which are currently present, I decided to switch to rEFInd.
It's been going well, even though the boot process is several seconds slower due to how long rEFInd takes to load, but overall I am much more fond of this as it's also easier to customise and such without having to use the banned grub-customiser.
Grub reinstalls itself every update, so I decided to uninstall grub alltogether and was pleased to see that not too many packages would fall away:

paru -Rnsuc grub:
Packages (19) btrfsmaintenance-0.5-2  garuda-bash-config-1.0.1-1  garuda-boot-options-1.0.2-1  garuda-common-settings-2.6.6-1  garuda-hooks-2.8.2-1
              garuda-migrations-1.5.0-1  grub-btrfs-4.11-2  grub-garuda-2.06-1  grub-theme-garuda-dr460nized-r2.49d1e5e-1  kernel-modules-hook-0.1.7-2
              noto-color-emoji-fontconfig-1.0.0-1  profile-sync-daemon-1:6.45-1  snap-pac-3.0.1-1  snap-pac-grub-2.0.2-1  snapper-support-1.1.1-1
              systemd-oomd-defaults-249.7-1  update-grub-0.0.1-7  zram-generator-1.1.2-1  grub-2:2.06.r322.gd9b4638c5-1

Total Removed Size:  37,37 MiB

Now to the packages: Most of them have been installed as deps, so zram just poofs because it's "no longer required", but one thing annoys me; Consider this deps graph (a -(required by)> b)
grub -> garuda-hooks -> garuda-common-settings -> basically half of the garuda programs

Why is grub not an optional dependency for garuda-hooks? That would make much more sense and would be much more modular. (Who knows, maybe grub will die sometimes.)

Please change this!

I find that rEFInd is easier to fix (refind-install), easier to maintain (it detects pretty much everything automatically), has more useful features (memtest, uefi shell integration and allows for usb boot) and looks much better than grub (google the themes). It even has snapper backup boot support. On top of that it's much harder to break, as it only fails to boot specific entries if they are wrong, and doesn't need rebuilding the config like grub does (update-grub). The config file has thorough documentation and explains every setting in reasonable detail.

What about providing an official way to install this into garuda? I think this is more beginner friendly than grub.

Thanks!

inxi -Fart
System:
  Host: lolcat Kernel: 5.19.4-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc
    v: 12.2.0 parameters: root=PARTUUID=4f58220f-2b24-374a-96c3-7d9c60290781 rw
    add_efi_memmap rootflags=subvol=@ initrd=@\boot\amd-ucode.img
    rd.udev.log_priority=3 vt.global_cursor_default=0
    systemd.unified_cgroup_hierarchy=1 loglevel=3 sysrq_always_enabled=1
    iommu=soft initrd=\@\boot\initramfs-linux-zen.img
  Desktop: wayfire v: 0.8.0-da7a929c info: waybar vt: 1 dm: greetd
    Distro: Garuda Linux base: Arch Linux
Machine:
  Type: Desktop System: Gigabyte product: AX370-Gaming 3 v: N/A
    serial: <superuser required>
  Mobo: Gigabyte model: AX370-Gaming 3-CF v: x.x
    serial: <superuser required> UEFI: American Megatrends v: F50a
    date: 11/27/2019
CPU:
  Info: model: AMD Ryzen 5 2600X bits: 64 type: MT MCP arch: Zen+ gen: 2
    built: 2018-21 process: GF 12nm family: 0x17 (23) model-id: 8 stepping: 2
    microcode: 0x800820D
  Topology: cpus: 1x cores: 6 tpc: 2 threads: 12 smt: enabled cache:
    L1: 576 KiB desc: d-6x32 KiB; i-6x64 KiB L2: 3 MiB desc: 6x512 KiB
    L3: 16 MiB desc: 2x8 MiB
  Speed (MHz): avg: 3873 high: 4120 min/max: 2200/3600 boost: enabled
    scaling: driver: acpi-cpufreq governor: performance cores: 1: 3600 2: 4120
    3: 4114 4: 3600 5: 4117 6: 3600 7: 3793 8: 4116 9: 4116 10: 4102 11: 3600
    12: 3600 bogomips: 86229
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
  Vulnerabilities:
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: mmio_stale_data status: Not affected
  Type: retbleed mitigation: untrained return thunk; SMT vulnerable
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: Retpolines, IBPB: conditional, STIBP:
    disabled, RSB filling, PBRSB-eIBRS: Not affected
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: AMD Baffin [Radeon RX 550 640SP / 560/560X] vendor: ASUSTeK
    driver: amdgpu v: kernel arch: GCN-4 code: Arctic Islands process: GF 14nm
    built: 2016-20 pcie: gen: 3 speed: 8 GT/s lanes: 8 ports:
    active: DVI-D-1,HDMI-A-1 empty: DP-1 bus-ID: 08:00.0 chip-ID: 1002:67ff
    class-ID: 0300
  Device-2: Logitech Webcam C270 type: USB driver: snd-usb-audio,uvcvideo
    bus-ID: 1-2:3 chip-ID: 046d:0825 class-ID: 0102 serial: 248009E0
  Display: wayland server: X.org v: 1.21.1.4 with: Xwayland v: 22.1.3
    compositor: wayfire v: 0.8.0-da7a929c driver: X: loaded: amdgpu
    unloaded: modesetting alternate: fbdev,vesa gpu: amdgpu d-rect: 3600x1200
    display-ID: 1
  Monitor-1: DVI-D-1 pos: right res: 1920x1200 size: N/A modes: N/A
  Monitor-2: HDMI-A-1 pos: primary,left res: 1680x1050 size: N/A modes: N/A
  OpenGL: renderer: AMD Radeon RX 560 Series (polaris11 LLVM 14.0.6 DRM
    3.47 5.19.4-zen1-1-zen) v: 4.6 Mesa 22.1.7 direct render: Yes
Audio:
  Device-1: AMD Baffin HDMI/DP Audio [Radeon RX 550 640SP / 560/560X]
    vendor: ASUSTeK driver: snd_hda_intel v: kernel bus-ID: 1-2:3
    chip-ID: 046d:0825 pcie: gen: 3 class-ID: 0102 speed: 8 GT/s
    serial: 248009E0 lanes: 8 bus-ID: 08:00.1 chip-ID: 1002:aae0
    class-ID: 0403
  Device-2: AMD Family 17h HD Audio vendor: Gigabyte driver: snd_hda_intel
    v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 16 bus-ID: 0a:00.3
    chip-ID: 1022:1457 class-ID: 0403
  Device-3: Logitech Webcam C270 type: USB driver: snd-usb-audio,uvcvideo
  Device-4: C-Media USB Microphone type: USB
    driver: hid-generic,snd-usb-audio,usbhid bus-ID: 3-3:4 chip-ID: 0d8c:9700
    class-ID: 0300 serial: 201605
  Sound Server-1: ALSA v: k5.19.4-zen1-1-zen running: yes
  Sound Server-2: sndio v: N/A running: no
  Sound Server-3: PulseAudio v: 16.1 running: no
  Sound Server-4: PipeWire v: 0.3.56 running: yes
Network:
  Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
    vendor: Gigabyte driver: r8169 v: kernel pcie: gen: 1 speed: 2.5 GT/s
    lanes: 1 port: f000 bus-ID: 03:00.0 chip-ID: 10ec:8168 class-ID: 0200
  IF: eno1 state: up speed: 1000 Mbps duplex: full mac: e0:d5:5e:4f:57:57
Bluetooth:
  Device-1: Broadcom BCM20702A0 Bluetooth 4.0 type: USB driver: btusb v: 0.8
    bus-ID: 1-3:4 chip-ID: 0a5c:21e8 class-ID: fe01 serial: 5CF3708E8F4F
  Report: bt-adapter ID: hci0 rfk-id: 0 state: up
    address: 5C:F3:70:8E:8F:4F
Drives:
  Local Storage: total: 2.97 TiB used: 1.73 TiB (58.1%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/sda maj-min: 8:0 vendor: Samsung model: SSD 860 EVO 1TB
    size: 931.51 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
    type: SSD serial: S4CSNX0N713306T rev: 4B6Q scheme: GPT
  ID-2: /dev/sdb maj-min: 8:16 vendor: Samsung model: SSD 860 EVO 250GB
    size: 232.89 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
    type: SSD serial: S3YJNX0K332437P rev: 1B6Q scheme: GPT
  ID-3: /dev/sdc maj-min: 8:32 vendor: Western Digital
    model: WD20EFRX-68EUZN0 size: 1.82 TiB block-size: physical: 4096 B
    logical: 512 B speed: 6.0 Gb/s type: HDD rpm: 5400
    serial: WD-WCC4M1ZHTZTK rev: 0A82 scheme: GPT
  ID-4: /dev/sdd maj-min: 8:48 type: USB vendor: Intenso
    model: Rainbow Line size: 14.77 GiB block-size: physical: 512 B
    logical: 512 B type: N/A serial: B61AF235168E rev: 8.07 scheme: MBR
  SMART Message: Unknown USB bridge. Flash drive/Unsupported enclosure?
Partition:
  ID-1: / raw-size: 195.03 GiB size: 195.03 GiB (100.00%) used: 142.28 GiB
    (73.0%) fs: btrfs dev: /dev/sda1 maj-min: 8:1
  ID-2: /boot/efi raw-size: 301 MiB size: 300.4 MiB (99.79%) used: 16.2 MiB
    (5.4%) fs: vfat dev: /dev/sda2 maj-min: 8:2
  ID-3: /home raw-size: 736.18 GiB size: 736.18 GiB (100.00%) used: 216.38
    GiB (29.4%) fs: btrfs dev: /dev/sda3 maj-min: 8:3
  ID-4: /var/log raw-size: 195.03 GiB size: 195.03 GiB (100.00%) used: 142.28
    GiB (73.0%) fs: btrfs dev: /dev/sda1 maj-min: 8:1
  ID-5: /var/tmp raw-size: 195.03 GiB size: 195.03 GiB (100.00%) used: 142.28
    GiB (73.0%) fs: btrfs dev: /dev/sda1 maj-min: 8:1
Swap:
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default)
  ID-1: swap-1 type: zram size: 31.3 GiB used: 0 KiB (0.0%) priority: 100
    dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 47.5 C mobo: N/A gpu: amdgpu temp: 43.0 C
  Fan Speeds (RPM): N/A gpu: amdgpu fan: 1512
Repos:
  Packages: apt: 0 pacman: 2153 lib: 509 flatpak: 0
  Active pacman repo servers in: /etc/pacman.d/arcolinux-mirrorlist
    1: https://gitlab.com/arcolinux/$repo/-/raw/main/$arch
    2: https://ftp.belnet.be/arcolinux/$repo/$arch
    3: https://mirror.aarnet.edu.au/pub/arcolinux/$repo/$arch
    4: https://mirror.funami.tech/arcolinux/$repo/$arch
    5: https://mirror.jingk.ai/arcolinux/$repo/$arch
    6: https://arcolinux.github.io/$repo/$arch
  Active pacman repo servers in: /etc/pacman.d/chaotic-mirrorlist
    1: https://geo-mirror.chaotic.cx/$repo/$arch
    2: https://cdn-mirror.chaotic.cx/$repo/$arch
    3: https://au-mirror.chaotic.cx/$repo/$arch
    4: https://au-2-mirror.chaotic.cx/$repo/$arch
    5: https://br-mirror.chaotic.cx/$repo/$arch
    6: https://br-2-mirror.chaotic.cx/$repo/$arch
    7: https://br-3-mirror.chaotic.cx/$repo/$arch
    8: https://bg-mirror.chaotic.cx/$repo/$arch
    9: https://ca-mirror.chaotic.cx/$repo/$arch
    10: https://ca-2-mirror.chaotic.cx/$repo/$arch
    11: https://ca-3-mirror.chaotic.cx/$repo/$arch
    12: https://cl-1-mirror.chaotic.cx/$repo/$arch
    13: https://cl-2-mirror.chaotic.cx/$repo/$arch
    14: https://de-mirror.chaotic.cx/$repo/$arch
    15: https://de-2-mirror.chaotic.cx/$repo/$arch
    16: https://de-3-mirror.chaotic.cx/$repo/$arch
    17: https://de-4-mirror.chaotic.cx/$repo/$arch
    18: https://de-5-mirror.chaotic.cx/$repo/$arch
    19: https://de-6-mirror.chaotic.cx/$repo/$arch
    20: https://in-mirror.chaotic.cx/$repo/$arch
    21: https://in-2-mirror.chaotic.cx/$repo/$arch
    22: https://in-3-mirror.chaotic.cx/$repo/$arch
    23: https://in-4-mirror.chaotic.cx/$repo/$arch
    24: https://in-5-mirror.chaotic.cx/$repo/$arch
    25: https://in-6-mirror.chaotic.cx/$repo/$arch
    26: https://jp-mirror.chaotic.cx/$repo/$arch
    27: https://jp-1-mirror.chaotic.cx/$repo/$arch
    28: https://jp-2-mirror.chaotic.cx/$repo/$arch
    29: https://jp-3-mirror.chaotic.cx/$repo/$arch
    30: https://kr-mirror.chaotic.cx/$repo/$arch
    31: https://kr-2-mirror.chaotic.cx/$repo/$arch
    32: https://kr-3-mirror.chaotic.cx/$repo/$arch
    33: https://es-mirror.chaotic.cx/$repo/$arch
    34: https://es-2-mirror.chaotic.cx/$repo/$arch
    35: https://ae-mirror.chaotic.cx/$repo/$arch
    36: https://ae-2-mirror.chaotic.cx/$repo/$arch
    37: https://uk-mirror.chaotic.cx/$repo/$arch
    38: https://uk-1-mirror.chaotic.cx/$repo/$arch
    39: https://uk-2-mirror.chaotic.cx/$repo/$arch
    40: https://uk-3-mirror.chaotic.cx/$repo/$arch
    41: https://us-az-mirror.chaotic.cx/$repo/$arch
    42: https://us-az-1-mirror.chaotic.cx/$repo/$arch
    43: https://us-az-2-mirror.chaotic.cx/$repo/$arch
    44: https://us-fl-mirror.chaotic.cx/$repo/$arch
    45: https://us-mi-mirror.chaotic.cx/$repo/$arch
    46: https://us-ny-mirror.chaotic.cx/$repo/$arch
    47: https://us-tx-mirror.chaotic.cx/$repo/$arch
    48: https://us-ut-mirror.chaotic.cx/$repo/$arch
    49: https://us-va-mirror.chaotic.cx/$repo/$arch
    50: https://us-va-2-mirror.chaotic.cx/$repo/$arch
    51: https://us-va-3-mirror.chaotic.cx/$repo/$arch
    52: https://us-va-4-mirror.chaotic.cx/$repo/$arch
  Active pacman repo servers in: /etc/pacman.d/mirrorlist
    1: https://mirror.ubrco.de/archlinux/$repo/os/$arch
    2: https://arch.jensgutermuth.de/$repo/os/$arch
    3: https://mirror.chaoticum.net/arch/$repo/os/$arch
    4: https://mirror.pseudoform.org/$repo/os/$arch
    5: https://mirrors.niyawe.de/archlinux/$repo/os/$arch
    6: https://archlinux.mirror.luzea.de/$repo/os/$arch
    7: https://ftp.halifax.rwth-aachen.de/archlinux/$repo/os/$arch
    8: https://packages.oth-regensburg.de/archlinux/$repo/os/$arch
    9: https://mirror.f4st.host/archlinux/$repo/os/$arch
    10: https://phinau.de/arch/$repo/os/$arch
    11: https://geo.mirror.pkgbuild.com/$repo/os/$arch
    12: https://mirror.rackspace.com/archlinux/$repo/os/$arch
Processes:
  CPU top: 5 of 355
  1: cpu: 9.0% command: kitty pid: 637685 mem: 125.1 MiB (0.3%)
  2: cpu: 6.7% command: preload pid: 581 mem: 43.5 MiB (0.1%)
  3: cpu: 6.5% command: librewolf pid: 7780 mem: 671.9 MiB (2.0%)
  4: cpu: 4.5% command: faked pid: 637835 mem: 0.16 MiB (0.0%)
  5: cpu: 4.4% command: librewolf pid: 283413 mem: 250.2 MiB (0.7%)
  System RAM: total: 31.3 GiB used: 3.79 GiB (12.1%)
  Memory top: 5 of 355
  1: mem: 671.9 MiB (2.0%) command: librewolf pid: 7780 cpu: 6.5%
  2: mem: 369.2 MiB (1.1%) command: librewolf pid: 274532 cpu: 1.6%
  3: mem: 368.0 MiB (1.1%) command: electron pid: 8250 cpu: 4.0%
  4: mem: 250.2 MiB (0.7%) command: librewolf pid: 283413 cpu: 4.4%
  5: mem: 224.9 MiB (0.7%) command: librewolf pid: 8468 cpu: 0.7%
Info:
  Processes: 355 Uptime: 49m wakeups: 0 Init: systemd v: 251
  default: graphical tool: systemctl Compilers: gcc: 12.2.0 clang: 14.0.6
  Shell: Zsh v: 5.9 running-in: kitty inxi: 3.3.20

Ahh…what are you doing here: paru -Rnsuc. That is a crazy way to uninstall packages. Either use -Rnc or -Rnus. Never combine -Rs and -Rc, the risk of removing packages that you don’t need to remove is too high.

That looks like half of garuda. You probably shouldn’t uninstall all those.

You don’t need to uninstall grub. You can stop the hooks from running so grub won’t get installed and grub-mkconfig won’t run automatically.

3 Likes

paru -Rnsuc :heart:

all just because of one dependency which should be optional :confused:

I hope this gets changed some day.

Thanks for the info with the hook.

It shouldn’t be optional. The garuda-hooks package modifies grub. Making that optional would install broken hooks.

the update hooks won't get executed if the grub package is not installed :wink:

They will get executed. They will just fail every time.

[Trigger]
Operation = Install
Operation = Upgrade
Type = Package
Target = grub

If you mean fail = does not match package, then yes, but otherwise, look above

That isn't the only hook related to grub.

2 Likes

same thing

[Trigger]
Operation = Install
Operation = Upgrade
Type = Package
Target = grub

What are you trying to tell me? I don't think I understand

There is more than one trigger on that hook:

[Trigger]
Operation = Install
Operation = Remove
Type = Path
Target = usr/lib/modules/*/vmlinuz

It runs on kernel changes.

2 Likes

Overlooked that, right.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.