commit e80f3bc3236e7f948af838677f96b2177e4718e0 Author: Christian Kauer Date: Sun Mar 22 18:06:47 2026 +0100 init diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100755 index 0000000..7226491 --- /dev/null +++ b/CLAUDE.md @@ -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 diff --git a/sslvpn-fixed.ovpn b/sslvpn-fixed.ovpn new file mode 100644 index 0000000..0159300 --- /dev/null +++ b/sslvpn-fixed.ovpn @@ -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 + +-----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----- + + +-----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----- + + +-----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----- + +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 diff --git a/system.md b/system.md new file mode 100644 index 0000000..f310759 --- /dev/null +++ b/system.md @@ -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` diff --git a/todos.md b/todos.md new file mode 100644 index 0000000..075e9c3 --- /dev/null +++ b/todos.md @@ -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` diff --git a/ventoy-setup.md b/ventoy-setup.md new file mode 100644 index 0000000..bf1baec --- /dev/null +++ b/ventoy-setup.md @@ -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`)