epicjourney.dev

Coreboot on MacBook Air: A Possibility to Remember

by Pitfall

My MacBook Air is one of the models capable of running Coreboot, thanks to a software-based internal flashing method. This process exploits a security oversight in Apple's stock firmware that leaves the Flash Descriptor (FD) and Management Engine (ME) regions writable after a cold boot.

The general procedure involves two main stages[citation:2]:

A detailed, step-by-step guide for this advanced procedure is available on ch1p.io.

Important Note: This is a complex and risky process. The original developer of an automated script for this method (mmga) has archived the project and strongly advises against its use, recommending a manual, well-researched approach instead.

Automating Snapshots with timeshift-autosnap-apt

by Pitfall

To enhance my BTRFS snapshot strategy, I've implemented timeshift-autosnap-apt which automatically creates snapshots before APT operations.

Installation Process

Installed it from source because it's not official, I did an enhancement request on the mint repo.


git clone https://github.com/wmutschl/timeshift-autosnap-apt.git /home/$USER/Applications/timeshift-autosnap-apt
cd /home/$USER/Applications/timeshift-autosnap-apt
sudo make install
		

How It Works

Benefits

This tool combined with your existing BTRFS and grub-btrfs setup creates a robust, self-healing system similar to the one implemented in OpenSUSE Tumbleweed, made with zypper and snapper.

Enable Booting from Snapshots in Linux Mint with BTRFS

by Pitfall

One of the most powerful features of BTRFS is the ability to boot directly from snapshots, providing an excellent disaster recovery solution. After setting up BTRFS with proper subvolume structure, here's how to enable snapshot booting in Linux Mint.

Installing grub-btrfs

The grub-btrfs utility automatically detects BTRFS snapshots and adds them to your GRUB menu:

git clone https://github.com/Antynea/grub-btrfs.git
cd grub-btrfs/
sudo make install

Configuring the Service

Configure the grub-btrfs daemon to work with Timeshift snapshots:

sudo systemctl edit --full grub-btrfsd

Modify the ExecStart line to:

ExecStart=/usr/bin/grub-btrfsd --syslog --timeshift-auto

This configuration automatically detects Timeshift snapshots without needing to specify a custom path.

Enabling the Service

Start and enable the service:

sudo systemctl restart grub-btrfsd
sudo systemctl enable grub-btrfsd

Updating GRUB Configuration

Finally, update your GRUB configuration to include the snapshots:

sudo grub-mkconfig -o /boot/grub/grub.cfg

How It Works

Important Notes

This setup transforms your Linux Mint installation into a resilient system where any problematic change can be instantly reverted by simply rebooting into a previous snapshot.

Debian on BTRFS

by Pitfall

Linux Mint is awesome, nontheless some adjustments are needed. I restored my system to integrate btrfs and automatic snapshot. Just remember some pitfalls:

My MacBook Air Wireless driver

by Pitfall

My MacBook Air Mid 2011 has a Broadcom BCM4322 chip, supported by broadcom-wl driver. This driver isn't mantained anymore, so remember to manually download and install it by some mantained repo. Just search for bcm4322 tumbleweed next time you wipe your system.

Maybe this site should be generated by a SSG

by Pitfall

Writing a devlog by hand in HTML is of course a lot of fun, but not very scalable, and that's gonna be an issue sooner than later. Granted I'll never be able to enjoy using a generator made by someone other than me, what are the steps I should take to fake my commitment in doing this?

while preparing for this, this site should be more standard. Like every post is an article.

About containerization

by Pitfall

Of course I cannot keep commit-push every time I want to see an update on my blog.

Then I'll run a container, granted I do not wish to run a server on my personal computer.

The choice is for Podman on OpenSuse and container on macOS.

On macOS, start the container system with container system start.

Let's try to do that with similar command, I'll just swap podman with container in the Terminal:


container|podman run --rm \
-v "$PWD":/usr/local/apache2/htdocs/ \
httpd:latest

then visit the ip address in the container output. It's working while I write this.

HTML5 boilerplate

by Pitfall

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
		<title>HTML5 Blank Template</title>
		<meta name="description" content="Basic HTML boilerplate" />
		<link href="styles.css" rel="stylesheet" />
	</head>
	<script src="scripts.js"></script>
	<body>

	</body>
</html>
		

some Podman useful tips

by Pitfall

a blog with a grain of salt, and a personal self-reminder.

by Pitfall

This is me, in an epic journey. That started with a learning journey about computer science, and now is more about learning what to do, not how to.

This is a pre tag
and it's block scope. print("this is a code tag") and it's inlinable.
print("this is a pre+code tag")

Math can be inline like \(2^{2x}=4\), or displayed like:

\[2^{3x}=8\]

Reminder: use the wiki in the repo also.