Taucher schrieb:
> Das ist ja merkwürdig: der Kernel vmlinuz-4.15.0-54-generic soll ein
> DOS/Windows Image sein?
Bei x86/64 Systemen unterstützt der Kernel meistens den direkten EFI
boot. EFI Dateien verwenden das PE Format, genau wie Ausführbare Windows
Dateien auch. Der Kernel ist dann also im grunde ein Polyglot aus PE/EFI
Anwendung und legacy second stage x86/64 code. Alte Bios bootloader
nutzen letzteres beim chainloading, neuere nutzen das EFI zeug, plus EFI
PCs könnten die EFI Kernels auch direkt ohne Bootloader laden.
Die mime Datenbank kann normalerweise den Linux Kernel erkennen:
1 | $ file /boot/vmlinuz-4.19.0-10-amd64
|
2 | /boot/vmlinuz-4.19.0-10-amd64: Linux kernel x86 boot executable bzImage, version 4.19.0-10-amd64 (debian-kernel@lists.debian.org) #1 SMP Debian 4.19.132-1 (2020-07-24), RO-rootFS, swap_dev 0x5, Normal VGA
|
Aber es erkennt auch den PE Header der EFI Datei. Sieht man, wenn man es
anweist, alle Treffer anzuzeigen:
1 | $ file -k /boot/vmlinuz-4.19.0-10-amd64
|
2 | /boot/vmlinuz-4.19.0-10-amd64: Linux kernel x86 boot executable bzImage, version 4.19.0-10-amd64 (debian-kernel@lists.debian.org) #1 SMP Debian 4.19.132-1 (2020-07-24), RO-rootFS, swap_dev 0x5, Normal VGA\012- DOS/MBR boot sector DOS/MBR boot sector PE32+ executable (EFI application) x86-64 (stripped to external PDB), for MS Windows\012- data
|
"Linux kernel x86 boot executable" ist aber kein mime format. Sucht man
nach einem mime typ wird also der für PE Anwendungen gefunden
(application/x-dosexec), die historisch für DOS & Windows Anwendungen
verwendet wurden:
1 | $ file -k -i /boot/vmlinuz-4.19.0-10-amd64
|
2 | /boot/vmlinuz-4.19.0-10-amd64: application/x-dosexec\012- application/octet-stream; charset=binary
|
Der Dateibrowser wird also den mime typ nachgesehen haben, dank dem MZ
am Dateianfang wurde application/x-dosexec gefunden, und die
Beschreibung davon war dann "DOS/Windows executable".
Bleibt noch die Frage, warum das bei den anderen nicht der fall war.
Vermutlich hatte der Dateibrowser einfach keine Leserechte, konnte also
den Inhalt nicht gegen die mime Datenbank checken, und damit den mime
typ nicht ermitteln.