73 lines
4.1 KiB
Markdown
73 lines
4.1 KiB
Markdown
# Resume Marker — 2026-08-20 (kernel build + GUI session switching)
|
|
|
|
## Context
|
|
User restarted the session. Two parallel tasks were in progress when interrupted:
|
|
1. Kernel Rust build config issue (kbuild + nightly rustc)
|
|
2. GUI session switching — install Xfce on workhorse so user can switch GNOME↔Xfce at login
|
|
|
|
---
|
|
|
|
## Task 1: Kernel Rust Build Config
|
|
|
|
**Status: unresolved — root cause found, fix not yet applied**
|
|
|
|
**What we know:**
|
|
- Kernel source: `/home/CUBELinux/CUBELinux-2/src/CUBELinux-build/` (vanilla v6.19.3 + ipu4 out-of-tree)
|
|
- `CONFIG_RUST=y` set in `.config`
|
|
- rustc 1.97.1 (stable) is default; rustc 1.100.0-nightly also installed via rustup (default host: x86_64-unknown-linux-gnu)
|
|
- `scripts/target.json` exists with `rustc-abi: x86-softfloat`, `llvm-target: x86_64-linux-gnu`
|
|
- `make rust/core.o` **fails**: `error loading target specification: custom targets are unstable and require -Zunstable-options`
|
|
- The rustc_library command in `rust/Makefile:559` does NOT pass `-Zunstable-options`
|
|
- `rust/Makefile` already uses `-Zunstable-options` in rustdoc paths (lines 136, 324, 333) but NOT in the core rustc_library invocation
|
|
- `KBUILD_RUSTFLAGS` (from `arch/x86/Makefile`) sets `--target=.../scripts/target.json` but no `-Zunstable-options`
|
|
- The `rustc_library` rule (`rust/Makefile:555-567`) builds the command as:
|
|
```
|
|
$(RUSTC) $(filter-out $(skip_flags),$(rust_flags)) $(rustc_target_flags) --emit=...
|
|
```
|
|
where `rust_flags` = `KBUILD_RUSTFLAGS` + `rust_common_flags` and `rustc_target_flags` = `core-flags` (which is `--edition=...` + cfgs). Neither carries `-Zunstable-options`.
|
|
|
|
**What needs to happen:**
|
|
- Option A: Patch `rust/Makefile` to add `-Zunstable-options` to the rustc_library command (line 559 area) — minimal change, mirrors what rustdoc already does
|
|
- Option B: Use nightly rustc as RUSTC and ensure it's invoked with `-Zunstable-options` — but kbuild doesn't add it automatically
|
|
- The real fix is Option A: add `-Zunstable-options` to the rustc invocation in the rustc_library rule, since the target.json is a custom target spec that requires it
|
|
- After that: `make rust/all` or `make rust/core.o` should succeed, then full kernel build
|
|
|
|
**Files involved:**
|
|
- `/home/CUBELinux/CUBELinux-2/src/CUBELinux-build/rust/Makefile` (line 555-567, rustc_library rule)
|
|
- `/home/CUBELinux/CUBELinux-2/src/CUBELinux-build/arch/x86/Makefile` (KBUILD_RUSTFLAGS)
|
|
- `/home/CUBELinux/CUBELinux-2/src/CUBELinux-build/scripts/target.json` (custom target spec, needs -Zunstable-options)
|
|
|
|
---
|
|
|
|
## Task 2: GUI Session Switching (Xfce on workhorse)
|
|
|
|
**Status: dpkg interrupted — lightdm stuck half-configured**
|
|
|
|
**What we know:**
|
|
- Workhorse runs GNOME (gdm3 + gnome-shell) currently
|
|
- User wants GNOME ↔ Xfce switching at the login screen (like Cinnamon is available)
|
|
- `apt-get install -y task-xfce-desktop` timed out (exit 124) and left dpkg in interrupted state
|
|
- `dpkg --configure -a` fails: lightdm is half-configured, depends on itself being configured first
|
|
- lightdm package status: `iF` (half-configured), `light-locker` and `task-xfce-desktop` also stuck
|
|
- Xfce components were likely downloaded but not configured due to the dpkg blockage
|
|
|
|
**What needs to happen:**
|
|
1. Fix dpkg: either `dpkg --remove --force-remove-reinstreq lightdm` then `dpkg --configure -a`, or manually remove the lock/status entries
|
|
2. Re-run `apt-get install -y task-xfce-desktop` (or just `xfce4` + `lightdm` if minimal)
|
|
3. Verify `xfce4-session` works: `xfce4-session --version`
|
|
4. Verify GDM shows Xfce session: check `/usr/share/xsessions/xfce.desktop` exists, `gdm3` is running
|
|
5. Test: log in via Xfce session
|
|
|
|
**Files/dirs involved:**
|
|
- `/usr/share/xsessions/` (GDM session definitions)
|
|
- `/usr/share/wayland-sessions/` (if Wayland Xfce session needed)
|
|
- `/etc/gdm3/` (GDM config)
|
|
|
|
---
|
|
|
|
## General Notes
|
|
- User explicitly does NOT want auto-launching heavy kernel compiles while they're using the machine
|
|
- Kernel build with `make -j$(nproc)` will saturate CPU — must ask before launching
|
|
- The workhorse is Debian-based, root access available
|
|
- rustup is installed at `/root/.rustup`, toolchains in `/root/.rustup/toolchains/`
|