This commit is contained in:
Christian Kauer 2026-03-22 18:06:47 +01:00
commit e80f3bc323
5 changed files with 323 additions and 0 deletions

26
CLAUDE.md Executable file
View File

@ -0,0 +1,26 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Purpose
Personal knowledge base documenting the hardware and OS configuration of device `kr-nb-1003`. No source code — only Markdown documentation.
## Structure
- `system.md` — Hardware specs, disk layout (UUIDs, partitions), CachyOS VM config (BTRFS subvolumes, kernel, desktop)
- `ventoy-setup.md` — Ventoy VtoyBoot setup: pacman hook, mkinitcpio config, known boot issues and solutions
- `todos.md` — Open system administration tasks
## Key Context
- Dual-boot: Windows (nvme1n1) + CachyOS VM via Ventoy (nvme0n1)
- CachyOS runs as VirtualBox VM booted from Ventoy virtual disk (not a standard install)
- Critical constraint: mkinitcpio must use `udev` hooks (not `systemd`) for Ventoy compatibility
- Windows fast startup must be disabled before mounting NTFS read-write from Linux
## Conventions
- Documentation language: German
- When editing, preserve UUID references and partition labels exactly
- Keep `todos.md` as actionable checklist format

111
sslvpn-fixed.ovpn Normal file
View File

@ -0,0 +1,111 @@
client
dev tun
proto udp
verify-x509-name "C=DE, ST=NW, L=Olpe, O=Landata It-Solutions, OU=OU, CN=SophosApplianceCertificate_C330ACYPTCKJ3CA, emailAddress=n.wollek@landata.de"
script-security 2
#route remote_host 255.255.255.255 net_gateway
nobind
<ca>
-----BEGIN CERTIFICATE-----
MIIExzCCA6+gAwIBAgIJAM8CgbSBZbmAMA0GCSqGSIb3DQEBCwUAMIGdMQswCQYD
VQQGEwJERTELMAkGA1UECAwCTlcxDTALBgNVBAcMBE9scGUxHTAbBgNVBAoMFExh
bmRhdGEgSXQtU29sdXRpb25zMQswCQYDVQQLDAJPVTEiMCAGA1UEAwwZU29waG9z
X0NBX0MzMzBBQ1lQVENLSjNDQTEiMCAGCSqGSIb3DQEJARYTbi53b2xsZWtAbGFu
ZGF0YS5kZTAeFw0xOTAxMTUxNjM2MDBaFw0zNjEyMzExNjM2MDBaMIGdMQswCQYD
VQQGEwJERTELMAkGA1UECAwCTlcxDTALBgNVBAcMBE9scGUxHTAbBgNVBAoMFExh
bmRhdGEgSXQtU29sdXRpb25zMQswCQYDVQQLDAJPVTEiMCAGA1UEAwwZU29waG9z
X0NBX0MzMzBBQ1lQVENLSjNDQTEiMCAGCSqGSIb3DQEJARYTbi53b2xsZWtAbGFu
ZGF0YS5kZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMZ/hUbCvaCb
xv8/J+nd+4hJDhZbYikjEg1yQOtwtz6b2q/nzw6jDk6qobHM2cL3uSbUZporGhY4
rHjwZ2V33AJQGiTF0FCcIbxuozQgLahOzqI8TN5mGDCkxtRI+YedTmV0wuOCjWdU
iq0S0txkOJe+VR5wT1Y3e8WOkN6C2WV53IVNhkL6FXhXcd7UBRWl801mLPMTh8So
+KFd+LIpB251532FsXoy36WiPXY5zGoSrAGDoGsLebeoChEuaGP64x+h3WwiyQRN
k2AtZvZVKKcoWDl7qT0xhn0gWIHyTNoaP+r3/ncfMt7fUblKk+quZZf+n9CnU5P+
c/mRVxOpl8cCAwEAAaOCAQYwggECMB0GA1UdDgQWBBSK08Usn3buH1d0H1ARwGjJ
5dBh/jCB0gYDVR0jBIHKMIHHgBSK08Usn3buH1d0H1ARwGjJ5dBh/qGBo6SBoDCB
nTELMAkGA1UEBhMCREUxCzAJBgNVBAgMAk5XMQ0wCwYDVQQHDARPbHBlMR0wGwYD
VQQKDBRMYW5kYXRhIEl0LVNvbHV0aW9uczELMAkGA1UECwwCT1UxIjAgBgNVBAMM
GVNvcGhvc19DQV9DMzMwQUNZUFRDS0ozQ0ExIjAgBgkqhkiG9w0BCQEWE24ud29s
bGVrQGxhbmRhdGEuZGWCCQDPAoG0gWW5gDAMBgNVHRMEBTADAQH/MA0GCSqGSIb3
DQEBCwUAA4IBAQAV+sEXtS9rkVLMdqUozxWjB06L4ddRYCbbiulJPD+9/cTeVGJm
Iib4gMhZ6lU8reMs3dgAMOa8UcJRFR8zRMB4xJ7R9xIE7m/cWvqLOBGybysScXlc
JbRGenRQ4+2fRXrKaWXsXHrPIqjkSez20tqM+KeSklOJYdQogcEc2dLx4pjgW4d/
Pbvhx3NgbdEK2vtDgc/MUt+xNWFxX66ohQr/tYAx+PmXmEu800Or1Q8pJfS0yv85
Pl9aF6hwEigDUUtrIpq5WYyrLhKuk7sHZToaDvIvbdL35LaRhzd7huYzskImZETh
ka4gVZpOZHuvJU+bbozjllNQbz1wsDTgscS5
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
MIIFETCCA/mgAwIBAgIUceJNS9SJn+yA9Sm6aot3iGMsppkwDQYJKoZIhvcNAQEL
BQAwgZ0xCzAJBgNVBAYTAkRFMQswCQYDVQQIDAJOVzENMAsGA1UEBwwET2xwZTEd
MBsGA1UECgwUTGFuZGF0YSBJdC1Tb2x1dGlvbnMxCzAJBgNVBAsMAk9VMSIwIAYD
VQQDDBlTb3Bob3NfQ0FfQzMzMEFDWVBUQ0tKM0NBMSIwIAYJKoZIhvcNAQkBFhNu
LndvbGxla0BsYW5kYXRhLmRlMB4XDTI1MDExNjAwMDAwMFoXDTM2MTIzMTEyMDAw
MFowgY4xCzAJBgNVBAYTAk5BMQswCQYDVQQIDAJOQTELMAkGA1UEBwwCTkExCzAJ
BgNVBAoMAk5BMQswCQYDVQQLDAJOQTEsMCoGA1UEAwwjZC1jaHJrYSU0MGludGVy
bmFsLmxhbl84QUUyNjA2NTdGNzcxHTAbBgkqhkiG9w0BCQEWDm5hQGV4YW1wbGUu
Y29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6jtZCL+lxuOdNHGz
/UKnCJjLLsM8/7dv1imPhUK4rQnF263S0Ulbn25j+mBLS2WFyR4sure+un5Q46fJ
zyRE2N8S7vmWkrULoUpIq2LVH0RKFK9OL8UuPV0fmKv6WMqVUrPfajI1XMlFha+V
co/wX2gOhjLF6SaNOU/Y0BEiOZNr81w8srDc9qRJkJ34EFmwUc/zF7mayBxdIVV4
AGBXs6GmYv97teQ8DMuijBmVC7EW26u4mnB+M/h9H5G+ALZj12ioBcUSJRzBGDjJ
k/cZYWxx3XZUDn63OgkYLuxZSUAgXTvfbyE4b8gk9utNcalEEAkE1hIuGgYQu//8
lNfrbwIDAQABo4IBVDCCAVAwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3Bl
blNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFLg8PPmBHQv6kiuA
yyS+Cg/zY9k2MIHSBgNVHSMEgcowgceAFIrTxSyfdu4fV3QfUBHAaMnl0GH+oYGj
pIGgMIGdMQswCQYDVQQGEwJERTELMAkGA1UECAwCTlcxDTALBgNVBAcMBE9scGUx
HTAbBgNVBAoMFExhbmRhdGEgSXQtU29sdXRpb25zMQswCQYDVQQLDAJPVTEiMCAG
A1UEAwwZU29waG9zX0NBX0MzMzBBQ1lQVENLSjNDQTEiMCAGCSqGSIb3DQEJARYT
bi53b2xsZWtAbGFuZGF0YS5kZYIJAM8CgbSBZbmAMCEGA1UdEQQaMBiBFmMua2F1
ZXJAa3JhaC1ncnVwcGUuZGUwDQYJKoZIhvcNAQELBQADggEBAHMEgRcNfY4vjh6N
K3tRedtpF0FrHI/PL4eVoZxnMi8x+sjgeeWriQIs3vssJKVFCPpHHYt6VAyALG+N
MPyJ96ivVOQnYpioSTbY+qjIK6nOA/zqrXDad2YlKiRE2cMryx5KIGDTqin+5//D
wIRBmTljjWPHeNYxn+yX+iz5pOnz9EV37wfK4tF3AVjCNJGimFPb1v13WWsmmbOW
Hu5dsfEvzm4JA9iEe67054WQbyIvLwQaNtPs8++M5O2u+E53cDSL82s5MVovVGKV
QWar6wm3/ryEiHX+85RfKRV1EXNRh02PTAV015AT/ul8ZeOuOcVcrAxIVBtiVltk
c4ZQ96M=
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDqO1kIv6XG4500
cbP9QqcImMsuwzz/t2/WKY+FQritCcXbrdLRSVufbmP6YEtLZYXJHiy6t766flDj
p8nPJETY3xLu+ZaStQuhSkirYtUfREoUr04vxS49XR+Yq/pYypVSs99qMjVcyUWF
r5Vyj/BfaA6GMsXpJo05T9jQESI5k2vzXDyysNz2pEmQnfgQWbBRz/MXuZrIHF0h
VXgAYFezoaZi/3u15DwMy6KMGZULsRbbq7iacH4z+H0fkb4AtmPXaKgFxRIlHMEY
OMmT9xlhbHHddlQOfrc6CRgu7FlJQCBdO99vIThvyCT2601xqUQQCQTWEi4aBhC7
//yU1+tvAgMBAAECggEAAyzvzZMPk801LedWudnD+vVbV9R0yMC7ZutkUzmu2EW4
JXzLTWQRtm0gNN5GVwzWzf23PIbOMqgQv61gKotC1a/ciVnf5ThIIpUnvA8YdZaO
7I3d4P7q3BEdowu91qNUd+0RW9a3a30dEK1rOMTjzN9TxxT8IuePZZYECfoZfS9Q
U/oIHP/T9i4+8512H/JgXncbcyL7SDxmTGR85ATDTuz9FXtr5/uY8GEQ1N+wpCB4
vkIaTKLO/kVCoXa5GdEqlizzR9DHntlVRWvB+7L8cO1/NfAPZkvHP0S7tNl/DNt0
Mi5gaqd3RBsz4bsseYmzLesNbTquzK/n2RBgSb8qIQKBgQD921ucsEOIdr+AEm2O
nuHPdRIBldSS/aK4Clxsyoiyar7kAPXi9Cu6SGbhs+px75sfILkJyLvBSUwNNW35
lUFDpuuz7YzndPUDL6Du8PQD0OQ6ILPlT1FEWra3zwCX/I8xqun/9I6N1WQbwDg5
24t99Uu8b7UFfaFCUscpsg+MTwKBgQDsNZNmOzRvuZpplkXO49qdV6Jzq4x0fu8L
3ddlP3NImQsYG+CSKErlwO9H/jXnYFbVYIVSjNASnIS0R63C0tFalJnsPRUIpvLW
Cbgm28gfPduXIDqgxzGdNqEvqFOCYuArc8aJLRnSDjn5GQGs89nbiSs/YwTW9vNG
R7wbmjBG4QKBgQC+FHIUcScgF0ps6199WxpZ7J7+8OGq7p/YjmmGTGDut18X+mAj
ABF9+piOh9kUVwUf2bCz0spDgE6h1U/zgf7MWUBECatn4/tR12f5ghI0iUVbAQGy
wiFnvUTzfNxE8aeG2SM9tDDJou7CmLuBFxLrzbBX+Izi/56vuqvGXL2noQKBgQCb
EylsSp5IY1/+xguaonjaJ7idnBigOt2Rutk4vYlgNinUcCjli9JwOFRfvYOCHfuk
JrQg2BWawmtVOGHZsDKF911+fTOb9I8k+kiOKmieKixKcXxMJbpq7nywHyCET4nA
vUews41qHLDu2v4AoC99M/bSrJ12y7Y3g8z5iib7wQKBgD/OZPNKLskj2e/llmxy
eyw9YNdKuZYFvMQIWbiyXRMeMAxnoUNbt78/hWpEpzEAedYZlbzrWo24HkqRiq+V
Nf8+HPP4fAmv9/OfVoCU14ZYFfrvfX3/k92bsT1rlI0TK48fHGm90UC1b57mVG1z
3FN0gzgei1NCaGgshgh6Ua9+
-----END PRIVATE KEY-----
</key>
auth-user-pass
cipher AES-128-CBC
auth SHA256
;can_save no
;otp no
;run_logon_script no
;auto_connect
verb 3
reneg-sec 0
remote rcdro1.krah-gruppe.de 8443
;sso_api_domain rcdro1.krah-gruppe.de
;sso_api_port 4445

128
system.md Normal file
View File

@ -0,0 +1,128 @@
# System-Konfiguration
## Host-Hardware
- **CPU:** Intel Core i9-14900HX
- **Hostname:** kr-nb-1003
## Festplatten
### nvme0n1 (2 TB) — Ventoy
- `nvme0n1p1` — Ventoy NTFS-Partition (VMs), UUID: `98FA5A9DFA5A7808`, Label: "Ventoy"
- `nvme0n1p2` — VTOYEFI (FAT16), UUID: `3105-B091`
- Unter Windows als `D:\` verfügbar, unter Linux als `/run/media/chk/Ventoy/`
### nvme1n1 (1 TB) — Windows
- `nvme1n1p1` — BOOT/EFI (FAT32), UUID: `9EAB-CAFA`
- `nvme1n1p2` — MSR (reserviert)
- `nvme1n1p3` — Windows (NTFS), UUID: `D086AC4D86AC363E`, Label: "Windows" — Schnellstart deaktiviert
- `nvme1n1p4` — Recovery (NTFS)
- Mountpoint unter Linux: `/mnt/windows`
## CachyOS VM (über Ventoy gebootet)
- **OS:** CachyOS (Arch-basiert, rolling release)
- **Kernel:** linux-cachyos (PREEMPT_DYNAMIC) + linux-cachyos-lts
- **Virtualisierung:** VirtualBox VM
- 14 vCPUs, 12 GB RAM
- 250 GB Disk (sda), BTRFS mit Subvolumes
- zram-Swap (11,6 GB)
- **Desktop:** KDE auf Wayland
- **Shell:** fish (Login-Shell ist zsh)
- **Init:** systemd (mit plymouth)
- **Sprache:** Deutsch
### SSH-Keys (gemeinsam mit Windows)
- Quelle: `C:\Users\d-chrka\.ssh\` (unter Linux: `/run/media/chk/Windows/Users/d-chrka/.ssh/`)
- Kopiert nach: `~/.ssh/` (CachyOS)
- **Keys:** `id_ed25519`, `chrka_ed25519`, `id_rsa` (jeweils mit `.pub`)
- Bei Änderungen auf einer Seite müssen die Keys manuell synchronisiert werden
- **known_hosts fehlt nach Ersteinrichtung** — Die Keys werden von Windows kopiert, aber `known_hosts` nicht. SSH-Verbindungen schlagen mit "Host key verification failed" fehl, bis die Host-Keys manuell hinzugefügt werden (z.B. `ssh-keyscan -p 2211 gitssh.straso.com >> ~/.ssh/known_hosts`)
### Git-Konfiguration
- **user.name:** Christian Kauer
- **user.email:** c.kauer@krah-gruppe.de
- Übernommen aus der Windows-Konfiguration (`/run/media/chk/Windows/Users/d-chrka/.gitconfig`)
### OneDrive (rclone bisync)
- **Paket:** `rclone` (über pacman)
- **Remote:** `onedrive:` (Typ: OneDrive Business, Drive: "Dokumente")
- **SharePoint-URL:** `https://krahgruppe-my.sharepoint.com/personal/c_kauer_krah-gruppe_de1/Documents`
- **Synchronisierter Ordner:** `onedrive:cachyos_windows_share``~/OneDrive/cachyos_windows_share`
- **Modus:** `bisync` (bidirektional) — Änderungen werden in beide Richtungen synchronisiert
- **Automatisierung:** systemd-User-Timer (`rclone-onedrive.timer`), alle 10 Minuten
- Service: `~/.config/systemd/user/rclone-onedrive.service`
- Timer: `~/.config/systemd/user/rclone-onedrive.timer`
- **Ersteinrichtung:** `rclone bisync ... --resync` nötig um Baseline zu erstellen
- **Hinweis:** `onedrive-abraunegg` (nativer Client) wurde ebenfalls installiert, aber nicht konfiguriert — OAuth-Redirect wurde vom Browser als Phishing blockiert
### Sophos SSL VPN
- **Server:** `rcdro1.krah-gruppe.de:8443` (UDP)
- **Benutzer:** `d-chrka@internal.lan` (AD-User, nicht `c.kauer@krah-gruppe.de`)
- **Verschlüsselung:** AES-128-CBC, Auth SHA256
- **Authentifizierung:** Zertifikat + Benutzername/Passwort + 2FA (OTP wird ans Passwort angehängt)
- **CA:** Landata It-Solutions, Olpe (Sophos_CA_C330ACYPTCKJ3CA, gültig bis 2036-12-31)
- **Client-Zertifikat:** muss auf `d-chrka@internal.lan` ausgestellt sein (gültig bis 2036-12-31)
- **Funktionierendes Profil:** `sslvpn-fixed.ovpn` (vom Testgerät DR-NB-0142 übernommen)
- **Paket:** `networkmanager-openvpn`
#### Einrichtung unter Linux (NetworkManager)
1. Profil importieren: `nmcli connection import type openvpn file sslvpn-fixed.ovpn`
2. **Wichtig — Split-Tunneling aktivieren:** IPv4 → Routes → "Use this connection only for resources on its network" (Häkchen setzen), sonst geht aller Traffic durch den Tunnel und Internet fällt aus
3. Verbinden: `nmcli connection up sslvpn-fixed`
#### Hinweise zum .ovpn-Profil (Sophos-Download vs. funktionierende Version)
Das vom Sophos-Portal heruntergeladene Profil (`sslvpn-c.kauer@krah-gruppe.de-client-config_V2-clients.ovpn`) funktioniert **nicht** unter Linux. Entscheidende Unterschiede zur funktionierenden `sslvpn-fixed.ovpn`:
| Problem | Original-Download | Fixed |
|---|---|---|
| **Client-Zertifikat** (Hauptursache) | Ausgestellt auf `c.kauer@krah-gruppe.de` | Ausgestellt auf `d-chrka@internal.lan` |
| `route remote_host ...` | Aktiv → NM-Import schlägt fehl | Auskommentiert |
| `script-security 2` | Fehlt | Vorhanden |
Die Firewall authentifiziert über AD als `d-chrka@internal.lan`. Ein Zertifikat für `c.kauer@krah-gruppe.de` wird mit `AUTH_FAILED` abgelehnt (sichtbar im Firewall Log Viewer unter "SSL VPN Authentication"). Die Original-Downloads (V2/V3) vom Sophos-Portal liegen weiterhin unter `~/OneDrive/cachyos_windows_share/`, werden aber nicht verwendet.
### Sophos Endpoint (Protection for Linux)
- **Paket:** Sophos Protection for Linux (SPL), installiert unter `/opt/sophos-spl`
- **Service:** `sophos-spl.service` (systemd)
- **Sophos Central:** Gerät registriert als `kr-nb-1003`, Online
- **Kernel-Einschränkung:** RuntimeDetections-Plugin unterstützt max Kernel 6.18.x — erfordert `linux-cachyos-lts` (6.18.19). Der reguläre Kernel (6.19.x) ist zu neu und führt zu `FATAL Kernel version check failed`.
- **Default-Kernel:** LTS in GRUB als Default setzen: `GRUB_DEFAULT="gnulinux-advanced-...-lts-advanced-..."` in `/etc/default/grub`
- **SafeStore:** Verzeichnis `/opt/sophos-spl/plugins/av/var/safestore/` fehlte nach Installation, manuell angelegt
### Installierte Pakete (manuell)
- `teams-for-linux` — MS Teams Client (CachyOS-Repo)
- `rclone` — Cloud-Sync (pacman)
- `onedrive-abraunegg` — OneDrive-Client (nicht in Verwendung)
- `networkmanager-openvpn` — OpenVPN-Plugin für NetworkManager
- Sophos Protection for Linux (SPL) — `/opt/sophos-spl`, via `SophosSetup.sh` aus Sophos Central
### Polkit: Laufwerke ohne Passwort mounten
- **Regel:** `/etc/polkit-1/rules.d/10-udisks2-mount.rules`
- Erlaubt Mitgliedern der Gruppe `storage` das Mounten über den Dateimanager ohne Passwortabfrage
- Abgedeckte Actions: `filesystem-mount`, `filesystem-mount-other-seat`, `filesystem-mount-system`
- **Einrichtung:**
```bash
printf 'polkit.addRule(function(action, subject) {
if ((action.id == "org.freedesktop.udisks2.filesystem-mount" ||
action.id == "org.freedesktop.udisks2.filesystem-mount-other-seat" ||
action.id == "org.freedesktop.udisks2.filesystem-mount-system") &&
subject.isInGroup("storage")) {
return polkit.Result.YES;
}
});
' | sudo tee /etc/polkit-1/rules.d/10-udisks2-mount.rules
```
- **Hinweis:** fish-Shell unterstützt kein `<< 'EOF'` Heredoc — `printf ... | sudo tee` verwenden
### BTRFS Subvolumes
- `/@``/`
- `/@home``/home`
- `/@root``/root`
- `/@srv``/srv`
- `/@cache``/var/cache`
- `/@tmp``/var/tmp`
- `/@log``/var/log`

13
todos.md Normal file
View File

@ -0,0 +1,13 @@
# Offene TODOs
## Windows-Partition
- [x] **Windows Schnellstart deaktivieren** — In Windows: Systemsteuerung → Energieoptionen → "Auswählen, was beim Drücken von Netzschaltern geschehen soll" → "Schnellstart aktivieren" deaktivieren. Danach Windows einmal neu starten. *(erledigt 2026-03-22)*
- [ ] **fstab-Eintrag für Windows-Partition** — Nach Deaktivierung von Schnellstart: `UUID=D086AC4D86AC363E /mnt/windows ntfs3 defaults,nofail,uid=1000,gid=1000 0 0` in `/etc/fstab` eintragen
**Hintergrund:** Solange Schnellstart aktiv ist, markiert Windows die NTFS-Partition als "in Benutzung" (hiberfil.sys). Schreibzugriff unter Linux kann dann zu Datenverlust führen.
## Software
- [ ] **Remote Desktop Manager installieren**
- [ ] **GRUB Default auf LTS-Kernel setzen** — Nötig für Sophos RuntimeDetections (max Kernel 6.18.x). `GRUB_DEFAULT` in `/etc/default/grub` anpassen, dann `sudo grub-mkconfig -o /boot/grub/grub.cfg`

45
ventoy-setup.md Normal file
View File

@ -0,0 +1,45 @@
# Ventoy VtoyBoot Setup
CachyOS wird als virtuelle Disk-Installation über Ventoy gebootet.
## Setup
- Ventoy mit VtoyBoot-Plugin
- vtoyboot.sh Pfad: `/home/chk/vtoyboot-1.0.36/vtoyboot.sh`
- BTRFS mit Subvolumes als Root-Dateisystem
- zram-Swap (kein physisches Swap-Device)
- EFI-Eintrag in `/etc/fstab` ist auskommentiert (existiert nicht in der virtuellen Disk)
## Pacman-Hook
- Pfad: `/etc/pacman.d/hooks/vtoyboot.hook`
- Führt vtoyboot.sh automatisch nach Kernel-Updates aus (linux-cachyos, linux-cachyos-lts + headers)
- Exec: `/bin/bash -c 'cd /home/chk/vtoyboot-1.0.36 && ./vtoyboot.sh'`
## mkinitcpio-Konfiguration
- HOOKS müssen `udev` statt `systemd` verwenden (sonst wird der ventoy-Hook nicht ausgeführt)
- `sd-vconsole` durch `consolefont` ersetzt
- `bash` in BINARIES (für ventoy-Hook Shebang)
- Aktuelle HOOKS: `(base udev autodetect microcode kms modconf block keyboard consolefont plymouth filesystems lvm2 ventoy)`
## Bekannte Probleme und Lösungen
### Boot hängt bei "A start job is running for /dev/disk/by-uuid/..."
**Ursache:** systemd-basiertes initramfs führt den ventoy `run_hook()` nicht aus → Root-Partition wird nicht gefunden.
**Lösung:** `systemd``udev` und `sd-vconsole``consolefont` in mkinitcpio HOOKS.
### vtoyboot.sh zeigt "Please run the script in the right directory"
**Ursache:** Script muss aus seinem eigenen Verzeichnis ausgeführt werden.
**Lösung:** `cd /home/chk/vtoyboot-1.0.36 && ./vtoyboot.sh`
### Boot hängt bei "Ventoy scanning files, please wait..."
**Ursache:** Ohne `VTOY_DEFAULT_SEARCH_ROOT` durchsucht Ventoy die gesamte Partition nach bootbaren Images — inkl. `projects/`, `$RECYCLE.BIN/` etc.
**Lösung:** In `ventoy/ventoy.json` den Scan-Pfad einschränken:
```json
{ "control": [{ "VTOY_DEFAULT_SEARCH_ROOT": "/ventoy/" }] }
```
## Checkliste bei Problemen
1. fstab: EFI-Mount auskommentiert?
2. mkinitcpio: `udev` statt `systemd`?
3. resume-Konfiguration: kein `resume=` in Kernel-Cmdline?
4. vtoyboot.sh nach letztem Kernel-Update ausgeführt?
5. initramfs enthält ventoy-Binaries? (`lsinitcpio | grep ventoy`)