All posts by Ralf Bergs

Geek, computer guy, licensed and certified electrical and computer engineer, husband, best daddy.

A deep-dive into UEFI Booting

[According to my own standards, this post about “UEFI booting” was only like 70% “ready” — I had it pending in “draft” state for many months, because I was lacking the time to finish it… I now decided to release it in its current state, simply because I believe it will still be very useful to many people interested in the topic…]

Before we actually dive deep into how UEFI booting works, a short and simple introduction is due.

Introduction

What is UEFI, anyway?

UEFI could be called the successor of the old BIOS concept. It is a unified version and successor of “EFI”, which was an architecture for a platform firmware used to boot operating systems (in the following abbreviated as “OS”), and the corresponding interface to interact with the firmware and the operating system.

The advantages of UEFI over the traditional BIOS are, among others, the following:

  • Boot disks with large partitions (over 2 TB), using GUID partitioning (GPT),
  • network capabilities already in pre-OS phase, and
  • modular design.

Boot Mechanism

So, how does booting with UEFI work?

When you enter your UEFI, you will find a user interface that shows all devices that have been detected, and that support booting. Usually that includes all your hard drives.

You can freely define a desired boot order (regardless of hardware paths, i.e. the way your drives are connected, be it via an SATA port, be it via an NVME slot), i. e. the primary OS that should be booted, if that fails the next OS that should be tried, etc. That’s called your “boot configuration”, and it resides in your motherboard’s NVRAM. (a concept that’s basically the successor of what used to be called “CMOS” in the old days of the BIOS). More specifically, we speak about “UEFI Variables“, which allow the OS and the firmware to interact.

When UEFI’s Firmware Boot Manager wants to boot an OS, it first needs to load something called the OS “Boot Manager.” Common OS boot managers are:

  • BOOTMGFW.EFI used to load Windows, or
  • SHIMX64.EFI used to load Linux

The OS boot manager is located on the “EFI system partition” (ESP). This is a small partition (usually only a few 100 M) at the start of your hard drive, formatted with basically a FAT filesystem. FAT is a very simple filesystem, so that the code to parse it and load files from it can be reasonably small and fit into a boot firmware.

A typical disk layout for a Windows installation may look as follows:

UEFI /EFI System Partition as seen under Windows

The first partition is the ESP, then comes the Windows boot and system drive (with a drive letter of C:), and then comes the recovery partition.

Apart from boot loaders, the ESP can contain kernel images or (device) drivers, e. g. to support hardware that must be initialized prior to the start of the OS, or to give access to a complex filesystem that holds the actual OS to be booted.

Depending on which OS you want to boot, the OS boot manager then loads

  • in the case of Linux: the OS kernel, and the kernel in turn loads the OS, or
  • in the case of Windows: the Windows Boot Loader (\Windows\system32\winload.efi)

Boot Configuration Details

Now that we got a good overview of the mechanism as a whole, let’s dive into the details. Let’s look at the boot configuration of my machine. To do so, invoke the below command (I did it under Ubuntu 23.04, but it should work the same under any reasonably current Linux distro where the tool is installed):

# efibootmgr -v
BootCurrent: 0003
Timeout: 1 seconds
BootOrder: 0000,0002,0003
Boot0000* Windows Boot Manager    HD(1,GPT,a39d5736-7aaf-4be0-b6b6-0852ba2f7803,0x800,0x32000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)WINDOWS………x…B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}…R…………….
Boot0002* ubuntu    HD(1,GPT,280ea55d-c182-5242-bb52-a2b40812190c,0x800,0x219800)/File(\EFI\UBUNTU\SHIMX64.EFI)..BO
Boot0003* ubuntu    HD(1,GPT,91b56f9f-3526-404b-b681-1c684551ec4f,0x800,0xd87be)/File(\EFI\UBUNTU\SHIMX64.EFI)..BO

So, what does the above tell us? First, we see that “(Boot)0003” is the boot entry used to start the currently running system. Secondly, the order in which boot is tried is 0000, 0002, and then 0003. So by default, Windows (by the “Windows Boot Manager”) will be booted. Then we see the three boot entries. The star/asterisk (*) after the boot entry shows that all these entries are “active.”

What about the remaining info in the above command output? Immediately after the boot entry, we see the names that are also displayed on screen by the Firmware Boot Manager (“Windows Boot Manager” and two times “ubuntu”). We then see references to the ESPs used to boot these OS.

HD obviously means “hard drive”, then we see a 1 which refers to the first partition on the respective drive, then we see GPT which refers to the partitioning table format, and then we see a UUID. To find the respective partitions, we can use the below command:

# blkid --match-token TYPE=vfat
/dev/nvme0n1p1: LABEL="UBUNTU_TEMP" UUID="EC76-8E7F" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="280ea55d-c182-5242-bb52-a2b40812190c"
/dev/nvme1n1p1: SEC_TYPE="msdos" LABEL_FATBOOT="UBUNTU_MAIN" LABEL="UBUNTU_MAIN" UUID="8140-E4C0" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI" PARTUUID="91b56f9f-3526-404b-b681-1c684551ec4f"
/dev/sda1: UUID="40AD-1127" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="a39d5736-7aaf-4be0-b6b6-0852ba2f7803"

The PARTUUID values in the above output match the UUIDs in the boot configuration as shown by efibootmgr. So, the ESPs are located by searching for the partitions’ UUIDs. That means that you can replug your drives to different ports, or even copy partitions to different drives, and the UEFI boot mechanism will still find them. That’s a nice and very stable design.

UEFI User Interface

Now, let’s enter the UEFI and look at some of the details there. My PC’s motherboard is an MSI, and to enter the UEFI I need to press “F2” after the beep when powering on the PC (from “off” state, not when suspended to RAM, i.e. “sleeping”!) or restarting it.

# lspci
[...]
21:00.0 Non-Volatile memory controller: Sandisk Corp WD Blue SN570 NVMe SSD 1TB
2b:00.0 Non-Volatile memory controller: Sandisk Corp WD Blue SN570 NVMe SSD 1TB

Wie man (physische) Netzwerkprobleme spielend leicht lokalisieren kann

Kürzlich habe ich endlich etwas “angepackt”, was ich schon seit einigen Jahren tun wollte: Ich habe das LAN in meinem Haus “logisch segmentiert” durch die Verwendung von VLANs, um unterschiedlichen Traffic auf jeweils einem einzigen Kabel transportieren zu können.

Wozu braucht man sowas? Ganz einfach, z. B. um ein Gästenetzwerk vernünftig implementieren zu können, wenn man mehr als nur einen WiFi-Access Point in seinem Netz hat. Anbieter wie Ubiquity haben sowas bestimmt so implementiert, dass auch technisch weniger bewanderte Personen es nutzen können, aber mir ist Ubiquiti einfach zu teuer in dem Ausmaß, in dem ich deren Hardware bräuchte. Außerdem macht es ja auch schlicht Spaß, sich sowas auf Open Source-Basis selbst zu bauen… 😉

Ich habe bei mir also auf OpenWrt-Basis ein (für ein Einfamilienhaus) relativ komplexes Netzwerk aufgebaut. Folgende Komponenten sind u. a. enthalten:

Jetzt hatte ich kürzlich ein Problem, an dem ich wirklich hart zu “knacken” hatte. Irgendwann kam ich zu dem Schluss, dass es nicht auf Layer 2 (Ethernet) oder höher (IP) liegen müsse, sondern eher auf Layer 1 (physikalische Ebene, also Verkabelung).

Ich habe mir also für sage und schreibe 10,99 EUR einen deleyCON Netzwerk-Kabeltester bestellt. Selbst für eine einmalige Anwendung (aber dabei bleibt’s ja nicht…) war mir der Preis akzeptabel.

Und siehe da, ich hatte tatsächlich ein Verkabelungsproblem in meinem Netzwerk. An einer Netzwerkdose war das Kabel nicht vernünftig aufgelegt.

Diesen Fehler hätte ich ohne den Kabeltester nicht gefunden. Der Tester ist wirklich auch von Personen, die keine ausgebildete Netzwerktechniker sind, sehr einfach zu nutzen. Signalgenerator ans eine Ende des Strangs hängen, “Abschluss-Stecker” ans andere, und schon werden die einzelnen Adern durchgetestet, und man kann durch LEDs sehen, wo der Fehler ist.

Ich kann dieses Gerät nur absolut weiterempfehlen. Für etwas mehr als einen Zehner kann man da nichts falsch machen…

Lasst mich gerne wissen, ob Ihr meine Meinung teilt, falls Ihr Euch auch dieses Gerät zulegen solltet…

“Excire Search 1.4” Review

This is a quick-and-dirty review of the Excire Search 1.4.1 plugin for Adobe Lightroom. I got this plugin for free in an online “advent calendar”. As it was free, I can’t expect anything, obviously. But still I can tell you what I think about the tool. 😉

Let me mention that version 1.4 is not the latest version as of today. So the more recent 2.0 version may be performing much better than the one I tested, but I have no way of verifying this.

So, what is this tool about? Excire Search is a photo organizing software that sifts thru your photos in order to organize them. The company claims Excire Search is “The best software for organizing your photo treasures”, using AI it analyzes and tags photos automatically so that “image management [is] fun again.”

Ok, let’s see how helpful the tool actually is. One category that Excire creates in your keyword hierarchy is “Image Color.” So if you are searching for images of a certain color, this should be helpful, right? Well, have a look yourself. This is the hierarchy it created for some 15K photos I have in this Lightroom catalog:

“Image Color” keywords

Let’s have a look at some of the images Excire classifies as “black”:

Continue reading “Excire Search 1.4” Review

Bedeutet neues Handy auch neue Telefonnummer?

Mein Vater benötigt ein neues Handy, da sein altes — welches prinzipiell noch sehr neuwertig ist — leider seit mehr als einem Jahr keine Sicherheitsupdates mehr erhält. Ein Weiternutzen ist daher keine Option, da er es auch u. a. für Online-Banking benutzt. Ich habe ihm also ein Google Pixel 6a bestellt — ein wirklich sehr leistungsfähiges Handy mit moderatem Preis (“Black Friday” lässt grüßen!) und fünf Jahren Updates direkt von Google.

Im Zuge des Austauschs überraschte er mich plötzlich mit einer (für mich als Experten) sehr “merkwürdigen” Frage: “Kriege ich denn dann auch eine neue Handynummer?”

Hinterher wurde mir klar, dass wahrscheinlich vielen, gerade älteren Menschen (die nicht häufig ihren Anbieter oder ihren Handytarif wechseln) nicht ganz klar ist, wo denn eigentlich die Nummer “sitzt”. Ich möchte das Ganze hier also einmal mit sehr einfachen Worten erklären, vielleicht hilft das ja dem einen oder anderen…

Jedes Handy benötigt eine SIM. “Früher” war das immer ein Chip, ein elektronisches Modul, anfangs so groß wie eine Kreditkarte, später immer kleiner, bis es “zuletzt” nicht mal mehr die Größe eines halben Daumennagels hatte. Mittlerweile gibt es die SIM auch in “virtueller” Form, man kann sie per Internet in das Handy hineinladen (“eSIM” genannt).

Was aber ist eigentlich der Zweck der SIM? “Früher” hat man dort sein Adressbuch gespeichert, auch eine gewisse Anzahl an SMS-Nachrichten konnte dort gespeichert werden. “Heutzutage” werden die Kontakte und Kurznachrichten üblicherweise direkt im Handy gespeichert. Aber wofür wird die SIM denn immer noch benötigt?

Continue reading Bedeutet neues Handy auch neue Telefonnummer?

How to manually rebuild your Windows BCD Store

I recently had a mishap where on a system that I had just upgraded from Windows 10 to Windows 11 the Windows BCD Store (Boot Configuration Data Store) was suddenly messed up, presumably by a patch update I had taken earlier:

Blue screen showing “Wiederherstellung: Der PC muss repariert werden.” (German for: “Recovery: The PC must be repaired.”), hinting to a problem with the Windows BCD Store.

Many people will recommend in that situation to boot to a Windows Recovery Environment (RE) and execute the following:

>bootrec /rebuildbcd

But what if the scan for all Windows installation turns out not to identify yours?! Like in the below photo?

Photo of a Windows RE session, failing to automatically rebuild the Windows BCD Store

Are you SOL then?

Don’t despair.

The solution is actually quite simple. Other than the above which is supposed to be fully automatic, it involves some manual tasks, but it should be quite easy if you are at least a bit tech-savvy.

Continue reading How to manually rebuild your Windows BCD Store

Braucht man 2023 wirklich einen neuen Auto-Verbandkasten?

Dieser Artikel wurde verfasst am 10. Nov. 2022, spiegelt also den Stand der Rechtslage zu diesem Datum wieder.

Es fing an mit diesem Artikel in der “tz”. Dort stand:

Schon seit dem 1. Februar 2022 gilt für Verbandkästen in Autos die neue DIN-Norm 13164:2022. Bisher genügte es, zwei FFP2-Masken in seinem alten Verbandkasten mitzuführen. Ab dem 1. Februar 2023 endet dann die Übergangsfrist für die neue Norm. Ab dann muss ein entsprechend genormter Verbandkasten mitgeführt werden.

Aber ist das wirklich so? Mir kam das ziemlich unsinnig vor. Wieso sollte man denn nicht einfach weiterhin die Masken hinzufügen können? Deshalb habe ich das Ganze einmal recherchiert.

Wo ist die Pflicht, einen Verbandkasten im Auto mit sich zu führen, überhaupt geregelt? Das war schnell rauszukriegen: in der StVZO. Und zwar in § 35h.

Wann wurde diese Verordnung denn nun das letzte Mal geändert? Art. 11 G vom 12. Juli 2021, das kann man dem obigen Wikipedia-Artikel entnehmen. Diese Änderung betrifft aber überhaupt nicht § 35h, “Erste-Hilfe-Material in Kraftfahrzeugen”. Zitat:

Continue reading Braucht man 2023 wirklich einen neuen Auto-Verbandkasten?

Mein Internet funktioniert nicht, was tun?!

Diesen Hilfeschrei hat bestimmt jeder schon oft gehört. Aber nur die wenigsten wissen, wie man heraus finden kann, wo genau das Problem liegt.

Ich versuche in diesem Blogpost einmal, eine auch für Laien verständliche bzw. leicht anwendbare Anleitung zu liefern, wie man bei Internetstörungen zu Hause dem Problem auf die Spur kommen kann…

Zunächst einmal ein paar (wenige) Grundlagen. Ohne diese geht es einfach nicht.

Egal, was Sie im Internet tun, alles passiert auf Basis sogenannter “IP-Pakete“. Jeglicher Datenverkehr wird “zerhackt” und in Form von kleinen “Häppchen”, eben dieser IP-Pakete übertragen. Alle Geräte, die am Internet teilnehmen, haben eine bestimmte Rolle. Ihr Handy, Laptop oder PC ist in der Regel ein sogenannter “Client“, also ein “Kunde”, die Dienste, die Sie in Anspruch nehmen, werden durch sogenannte “Server” (“Bediener”) erbracht. Wie findet nun Ihr Client den passenden Server? Das funktioniert über ein System namens “DNS“. Es übersetzt für den Menschen lesbare Adressen, wie z. B. “amazon.de“, in IP-Adressen, die Ihr Endgerät für die tatsächliche Kommunikation mit dem gewünschten Dienst benutzt.

Wie werden aber die IP-Pakete zwischen Ihrem Endgerät (Handy, Laptop, Tablet, PC) und den Servern im Internet übertragen? Zunächst muss Ihr Endgerät mit Ihrem eigenen lokalen Netzwerk (auch “LAN” genannt) bei sich zu Hause verbunden sein. Dies kann über WLAN (auch “WiFi” genannt) oder Netzwerkkabel (auch “Ethernet”-Kabel genannt) passieren. Von dort geht es über Ihren Router zu Ihrem Internetprovider, und dann von dort ins Internet. Welche physikalische Verbindungstechnik (Teilnehmeranschlussleitung) Sie zur Anbindung an Ihren Provider verwenden ist grundsätzlich egal: DSL, TV-Kabel, Glasfaser oder sogar Mobilfunk (z. B. über einen Vodafone GigaCube).

Continue reading Mein Internet funktioniert nicht, was tun?!

CSV-Datei mit Datumspalte in Excel öffnen bei Verwendung des ISO-Datumsformats

Im Folgenden wird ein Problem geschildert, was nur bei Benutzern auftreten sollte, die ihr Datumsformat auf “ISO” (YYYY-mm-dd, JJJJ-mm-tt) gestellt haben:

Möchte man z. B. als Bankkunde seine Umsätze als CSV exportieren und dann in Excel öffnen, dann wird man folgendes Problem haben, wenn eine aktuelle Version von Excel verwendet wird:

Wenn man einfach auf die CSV-Datei doppelklickt, um diese zu öffnen, dann werden die beiden Datums-Spalten (in “deutschem” Format) nicht als Datentyp “Datum” geöffnet, sondern als “Allgemein” (General), da diese wegen des “unpassenden” Datumsformats nicht korrekt als Datentyp “Datum” erkannt werden. Das hat natürlich Konsequenzen, weil man dann mit diesen Datumsfeldern nicht rechnen kann, diese nicht vernünftig filtern kann, sie nicht in andere Datumsformate umwandeln kann, etc.

Wie erkennen Sie, ob Sie selbst betroffen sind? Öffnen Sie ganz einfach so einen CSV-Export durch Doppelklick, und dann versuchen Sie mit einem Datumsfeld zu rechnen. Wenn Sie z. B. zu einem Datumsfeld “1” addieren, dann sollte das Ergebnis der nächste Tag sein. Wurde das Datumsfeld jedoch lediglich als Textfeld importiert, so können Sie damit nicht rechnen und erhalten lediglich einen Fehler.

Wie macht man das also richtig?

Continue reading CSV-Datei mit Datumspalte in Excel öffnen bei Verwendung des ISO-Datumsformats

Grundlagen der Android-Bedienung

Heute möchte ich einmal die Grundlagen der Android-Bedienung erläutern sowie die wichtigsten Bezeichnungen für die Bedienelemente. Ich beziehe mich hier auf ein “nacktes” Android 11, wie es von Google ausgeliefert wird, z. B. für die Pixel-Handys oder Handys von anderen Herstellern, die Teil der Android One-Reihe sind. Bei Geräten mit Android 10 sieht das aber alles sehr ähnlich aus.

Sie können diese Details auch bei Google nachlesen, dort sind diese jedoch nicht so schön illustriert wie hier.

Wenn keine App geöffnet ist, dann befindet man sich auf dem Startbildschirm (“Home Screen“). Dieser sieht in etwa so aus:

Startbildschirm

Die Icons (korrekterweise “Verknüpfungen” genannt, im Englischen “Shortcut“)), die man dort sieht, hat entweder der Benutzer selbst “von Hand” hinzugefügt (s. u.), oder sie werden (je nach Einstellung) bei Installation einer neuen App vom System automatisch hinzugefügt.

Durch horizontales Wischen nach links oder rechts kann man zwischen verschiedenen Startbildschirmen — so vorhanden — umschalten.

Continue reading Grundlagen der Android-Bedienung

Camera Raw-Dateien enthalten auch JPGs!

TL;DR: RAW-Dateien enthalten unabhängig von der Kamera-Einstellung (immer?) auch (mindestens) ein Preview-JPG

Gestern hatte ich in einem Canon-Forum mit einem anderen Mitglied eine Diskussion, ob in CR2/CR3-RAW-Dateien Preview-Bilder enthalten seien.

Ich sah das zunächst sehr skeptisch weil ich mich erinnerte, dass man die Kamera so einstellen kann, dass sie nur Raw, nur JPG oder beides speichert. Dazu gab es von Canon einen Hinweis, dass die Speicherung sowohl von RAW als auch von JPG die #Serienbildrate reduziere. Ich hatte das so interpretiert, dass die zusätzliche Zeit hauptsächlich für die Erzeugung des JPGs drauf ginge. Daher schlussfolgerte ich, dass in RAWs eigtl. keine JPGs enthalten sein dürften.
Ein anderer User bemerkte dann, dass in RAWs sehr wohl JPGs enthalten seien. Neugierig wie ich bin habe ich diese Aussage dann ein wenig hinterfragt, indem ich zu dem Thema gegoogelt und mit dem “exiftool” herum gespielt habe.
Das Ergebnis ist (wie ich finde) durchaus interessant und überraschend. Je nach Quelle können nämlich in der Tat bis zu vier verschiedene Previews in einem RAW-Bild enthalten sein, wie ich im exiftool-Forum gelesen habe.
Wer mal mit “exiftool” rumspielen möchte, kann das Tool wie folgt aufrufen:

C:\Users\rabe\Downloads\Fotos>”c:\Program Files (x86)\Tools\exiftool.exe” -a -b -W %d%f_%t%-c.%s -preview:all .

1 directories scanned

2 image files read

5 output files created

Das Tool läuft also im Verzeichnis “.” (der letzte Punkt im Aufruf oben), d. h. im aktuellen Verzeichnis. Man könnte dort auch z. B. ein absolutes Verzeichnis angeben, also z. B.

C:\Users\rabe\Downloads\Fotos>”c:\Program Files (x86)\Tools\exiftool.exe” -a -b -W %d%f_%t%-c.%s -preview:all C:\Users\rabe\Pictures

Im obigen Fall hat es zwei RAW-Files gefunden (ein CR2 von der 550D und ein CR3 von der EOS-R) und insgesamt fünf JPGs extrahiert:
2020-12-04  21:39        27.016.901 0N8A1587.CR3
2020-12-31  12:20         1.123.638 0N8A1587_JpgFromRaw.jpg
2020-12-31  12:20            97.389 0N8A1587_PreviewImage.jpg
2020-12-31  12:20             7.744 0N8A1587_ThumbnailImage.jpg
2014-01-04  10:01        24.723.846 IMG_0579.CR2
2020-12-31  12:20         2.434.097 IMG_0579_PreviewImage.jpg
2020-12-31  12:20            10.245 IMG_0579_ThumbnailImage.jpg

 

Hier die Größen in Pixels der RAW-Files:

C:\Users\rabe\Downloads\Fotos>”c:\Program Files (x86)\Tools\exiftool.exe” -s -s -ImageWidth -ImageHeight *.cr*

======== 0N8A1587.CR3

ImageWidth: 6720

ImageHeight: 4480

======== IMG_0579.CR2

ImageWidth: 5184

ImageHeight: 3456

2 image files read

Und hier die Größen der JPG-Files:

C:\Users\rabe\Downloads\Fotos>”c:\Program Files (x86)\Tools\exiftool.exe” -s -s -ImageWidth -ImageHeight *.jpg

======== 0N8A1587_JpgFromRaw.jpg

ImageWidth: 6720

ImageHeight: 4480

======== 0N8A1587_PreviewImage.jpg

ImageWidth: 1620

ImageHeight: 1080

======== 0N8A1587_ThumbnailImage.jpg

ImageWidth: 160

ImageHeight: 120

======== IMG_0579_PreviewImage.jpg

ImageWidth: 5184

ImageHeight: 3456

======== IMG_0579_ThumbnailImage.jpg

ImageWidth: 160

ImageHeight: 120

5 image files read

Wie Ihr seht, variieren die Größen der JPGs sehr stark. Im CR3 aus meiner EOS-R sind drei JPGs enthalten:
  • ein JPG in Originalgröße, das mit der in der Kamera gewählten Bilder-Stil-Einstellung “entwickelt” wurde (ggf. also z. B. in Schwarzweiß, wenn die Kamera so eingestellt ist!)
  • ein Preview-JPG in deutlich reduzierter Größe
  • ein JPG in Mini-Größe (Thumbnail)
War dieser Post für Dich interessant? Dann lass es mich gerne durch einen Kommentar unten drunter wissen. Viele Grüße!