HowTos Journal Linux

Replace Snap Firefox with .deb on Ubuntu 22.04

Ubuntu 22.04 LTS (Jammy Jellyfish) ships Firefox as a snap, but some people (like me) may prefer installing it from .deb packages to retain control over upgrades or to keep extensions working.

Luckily there is still a PPA serving firefox (and thunderbird) debs at maintained by the Mozilla Team. (Thank you! 🙏)

Block Ubuntu’s Snap Version of Firefox

Block the Ubuntu archive’s version that just pulls in the snap by pinning it

$ cat /etc/apt/preferences.d/firefox-no-snap 
Package: firefox*
Pin: release o=Ubuntu*
Pin-Priority: -1

Remove Firefox Snap

Remove the transitional package and the Firefox snap itself

sudo apt purge firefox
sudo snap remove firefox

Install Firefox DEB

Install the DEB packaged Firefox from the Mozilla PPA

sudo add-apt-repository ppa:mozillateam/ppa
sudo apt update
sudo apt install firefox

⚠️ Optional: Enable Unattended Upgrades

Since the package comes from a PPA unattended-upgrades will not upgrade it automatically, unless you enable this origin:

echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox
HowTos Journal Linux

USB Boot Ubuntu 20.4.3 LTS on Raspberry Pi 4 FROM SSD


I have been using my raspberry pi 4 to monitor my network and my Synology NAS. So far, I’ve been using a SanDisk MicroSD card for storing all the data which died (remember: MicroSD cards have a limited number of writes)

After doing some research I learned that the Raspberry Pi 4 gained direct boot capabilities from USB Mass Storage (aka SSDs) with a bootloader (eeprom) update in 2020.

I struggled for about 2 nights to make it work despite following various how-tos/tutorials. The method outlined here is what worked for me as of 2021-10-23. It could change in the future. With new updates to the ubuntu image those steps might not be necessary anymore.

Preparation – Upgrade bootloader

The easiest way to upgrade the bootloader on the raspberry pi is to use the raspi-config tool built into the raspian os image. Therefore first write the Raspian OS image to an MicroSD Card to make use of raspi-config. Afterwards, write the Ubuntu Image to the MicroSD card You can use the raspberry image writer. Flash the image to a MicroSD card

Raspberry Image Writer: Choose Raspberry PI OS Lite (32-bit)

Boot the raspberry pi with raspian os, login with the default credentials and run

sudo raspi-config

raspi-config main screen

Choose Advanced Options –> Bootloader Version –> Latest

Select No when asked to restore Default Settings

Exit and Select Yes when asked to reboot

On Reboot the bootloader should be upgraded.

Check in the Terminal that the upgrade was applied

pi@raspberrypi:~ $ sudo rpi-eeprom-update
BOOTLOADER: up to date
   CURRENT: Tue Jul  6 10:44:53 UTC 2021 (1625568293)
    LATEST: Tue Jul  6 10:44:53 UTC 2021 (1625568293)
   RELEASE: stable (/lib/firmware/raspberrypi/bootloader/stable)
            Use raspi-config to change the release.

  VL805_FW: Dedicated VL805 EEPROM
     VL805: up to date
   CURRENT: 000138a1
    LATEST: 000138a1

Use raspi-config to set the boot-order to USB-Boot by default

Choose: 6 Advanced Options

raspi-config, go to Advanced Options

Next choose: A6: Boot Order

Choose A6 Boot Order to set boot priority

Choose B2 USB Boot

B2 USB Boot

Check in the in the terminal that bootloader order has been modified. Confirm BOOT_ORDER statement is there.

pi@raspberrypi:~ $ sudo vcgencmd bootloader_config

pi@raspberrypi:~ $ 

Write Ubuntu to MicroSD Card


Clone MicroSD card to USB-SSD

To Clone the content of the MicroSD card to the USB-SSD I used rpi-clone script

Install rpi-clone

$ git clone 
$ cd rpi-clone
$ sudo cp rpi-clone rpi-clone-setup /usr/local/sbin

Check with fdisk -l or lsblk SDD device name (e.g. sda or sdb etc.)

Clone the content of the MicroSD card to USB-SSD

pi@rpi0: $ sudo rpi-clone sdb

Booted disk: mmcblk0 16.0GB                Destination disk: sdb 8.0GB
Part      Size    FS     Label           Part   Size    FS     Label
1 /boot   58.4MB  fat16  --              1       8.0GB  fat32  --
2 root    16.0GB  ext4   SD-RPI-s1                               
== Initialize: IMAGE mmcblk0 partition table to sdb - FS types mismatch ==
1 /boot     (22.5MB used)    : IMAGE     to sdb1  FSCK
2 root      (6.0GB used)     : RESIZE(8.0GB) MKFS SYNC to sdb2
Run setup script       : no
Verbose mode           : no
** WARNING **          : All destination disk sdb data will be overwritten!
                       : The partition structure will be imaged from mmcblk0.

Initialize and clone to the destination disk sdb?  (yes/no): yes
Optional destination rootfs /dev/sdb2 label (16 chars max): SD-RPI-8a

Update config.txt to enable booting from USB SSD

Mount the system-boot partition on the SSD drive in order to change config.txt

sudo mkdir /mnt/ssdboot
sudo mount /dev/sdb1 /mnt/ssdboot
cd /mnt/ssdboot

Add kernel=vmlinux & initramfs initrd.img followkernel in the [all] section. Leave the rest the way it was before.

initramfs initrd.img followkernel

Boot From USB-SSD

Shutdown the Raspberry PI, unplug the MicroSD Card and plug-in the power again to boot from USB SSD.

If it can’t find the bootloader the raspberry pi will default to PXE boot. In case the raspberry pi is unable to boot from the USB SSD try another USB – Port (e.g. USB 2 instead of 3 etc.)

A list of compatible / tested SSDs can be found here.



Interim Update

It has been quite a while since my last post here due to a number of reasons which I don’t want to go into detail (we all have a personal life as well).

Nevertheless I have a few articles which I have been eager to write about for some time. Most of them are still in “Draft” state and not yet ready. As soon as they are ready they will be published.

Android Journal

How To Disable Ads in MIUI 11 on Xiaomi Devices

Next to my daily driver I also have an Xiaomi Redmi 7 running MIUI 11. The preloaded Xiaomi Applications such as the File Manager contain built-in Ads. It is known that Xiaomi has low-margins to hit certain price points while keeping the components relatively high.

Fortunately, there is a fairly easy work-around to disable the ads by revoking the system permissions that allows the MIUI System Ads daemon (msa) to collect data and push ads to you.

The ads first started appearing with MIUI 9 and with version 10 and now 11 available for the newest handsets the place in the settings menu has shifted multiple times. The following steps apply for MIUI 11 as of December 2019.

Go to Settings –> Password and Security

Select Authorization & revocation and toggle the switch of mda to revoke the authorization. A count-down will appear warning you that this operation might break the application which in this case is actually what we want in order to disable the ads.

The toggle should be disabled after the revocation. Enjoy the ad-free experience.