I had this wrong. The claim that accelerated graphics works on the firmware Fedora ships does not survive contact with the device tree. Fedora does package an sdm845/a630_zap.mbn, which is what led me astray, but that is the generic Snapdragon 845 zap shader. The C630's node in sdm850-lenovo-yoga-c630.dts names qcom/sdm850/LENOVO/81JL/qcdxkmsuc850.mbn specifically — model-signed, present only in the machine's Windows partition. Until it is supplied the display is unaccelerated. Also add qcslpi850.mbn and qcvss850.mbn, which were missing entirely, and attribute the sensor hub to slpi_pas rather than cdsp_pas. The list is now every firmware-name property in the mainline device tree rather than a recollection of forum posts, so it should be complete: eight files, not five. WiFi and Bluetooth are unaffected — ath10k WCN3990 including wlanmdsp.mbn is genuinely redistributable and genuinely shipped. Add a section on locating the blobs on an old backup, for the case where Windows is long gone from the machine. Only comments changed in config/packages/base.pkgs, so the package set hashes identically and the staged base stays valid. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XWRjNJMistCy6ngXH5aJLS
99 lines
3.9 KiB
Markdown
99 lines
3.9 KiB
Markdown
# Installing on the Yoga C630
|
|
|
|
## Before you start
|
|
|
|
Leave Windows in place. Lenovo ships firmware updates only through Windows, and
|
|
the per-model Qualcomm blobs Linux needs live in that partition — wiping it
|
|
means losing accelerated graphics, audio and the sensor hub permanently.
|
|
Update everything through Lenovo Vantage first.
|
|
|
|
Disable Secure Boot. The image is not signed for it:
|
|
|
|
- Press **Fn+F2** during startup, go to **Security → Secure Boot → Disabled**, or
|
|
- **Settings → Update & Security → Recovery → Advanced startup → UEFI Firmware Settings**
|
|
|
|
## Write the image
|
|
|
|
```sh
|
|
zstd -d fedora-44-minimal-lenovo-yoga-c630-*.img.zst
|
|
sudo dd if=fedora-44-minimal-lenovo-yoga-c630-*.img of=/dev/sdX bs=4M status=progress oflag=direct conv=fsync
|
|
```
|
|
|
|
Check `/dev/sdX` twice. An 8 GiB stick is enough for `minimal`, 16 GiB for
|
|
`workstation`; the root filesystem expands to fill whatever you use.
|
|
|
|
## First boot
|
|
|
|
Insert the stick and power on holding **Fn+F12** for the boot menu, or enter
|
|
setup with **Fn+F2** and put USB ahead of the internal drive.
|
|
|
|
GRUB should appear with one entry. It has already been told which device tree to
|
|
load — the C630's UEFI does not supply one, which is the whole reason the
|
|
`devicetree` line exists in the boot loader entry.
|
|
|
|
First boot does two slow things: it relabels the filesystem for SELinux and
|
|
grows the root partition. Several minutes on a USB stick is normal. Log in as
|
|
`fedora` / `fedora` and set a new password when prompted.
|
|
|
|
## Extract the Qualcomm firmware
|
|
|
|
Accelerated graphics, audio, the sensor hub and video decode do not work
|
|
until you do this:
|
|
|
|
```sh
|
|
sudo c630-firmware
|
|
sudo reboot
|
|
```
|
|
|
|
See [firmware.md](firmware.md) if it cannot find the Windows partition.
|
|
|
|
## Installing to internal storage
|
|
|
|
Once the USB image is behaving, copy it onto the internal UFS.
|
|
|
|
Shrink the Windows partition from within Windows (**Disk Management → Shrink
|
|
Volume**) rather than from Linux — Windows is fussy about its own filesystem
|
|
being moved underneath it.
|
|
|
|
Then, booted from USB, write the image to the free space. The simplest approach
|
|
that keeps Windows intact is to create the partitions by hand and copy the
|
|
filesystems across rather than `dd`-ing the whole image, since `dd` would
|
|
overwrite the existing GPT and the Windows ESP:
|
|
|
|
1. `sudo gdisk /dev/sda` — add a `/boot` partition (1 GiB, type 8300) and a root
|
|
partition (type 8300) in the free space. Keep the existing Windows ESP.
|
|
2. `mkfs.ext4 -O ^orphan_file,^metadata_csum_seed /dev/sdaN` for both.
|
|
3. Copy the running system across with `rsync -aHAX --exclude=/dev --exclude=/proc
|
|
--exclude=/sys --exclude=/run --exclude=/boot`, then `/boot` separately.
|
|
4. Copy `EFI/fedora` from the USB stick's ESP onto the Windows ESP, and edit
|
|
`EFI/fedora/grub.cfg` so the `--fs-uuid` matches the new `/boot`.
|
|
5. Update `/etc/fstab` and the `root=UUID=` in
|
|
`/boot/loader/entries/c630-*.conf` to the new UUIDs.
|
|
|
|
Finally, point the firmware at GRUB from an Administrator command prompt in
|
|
Windows:
|
|
|
|
```
|
|
bcdedit /set {bootmgr} path \EFI\fedora\grubaa64.efi
|
|
```
|
|
|
|
Windows resets this on some updates. To get back, boot the USB stick and run it
|
|
again, or use `efibootmgr` from Linux.
|
|
|
|
## If it does not boot
|
|
|
|
The kernel command line is the first thing to change. It lives in
|
|
`options` in `/boot/loader/entries/c630-*.conf`, and GRUB lets you edit it for
|
|
one boot by pressing **e**.
|
|
|
|
| Symptom | Try |
|
|
|---|---|
|
|
| Hangs immediately after GRUB, no kernel output | Wrong or missing device tree — check the `devicetree` line points at a file that exists in `/boot/dtb-*/qcom/` |
|
|
| Boots then freezes partway | Drop `efi=noruntime`, or add `pd_ignore_unused` if it is missing |
|
|
| USB dies during boot | Add `modprobe.blacklist=qcom_q6v5_pas` |
|
|
| Cannot find root filesystem | The initramfs is missing the UFS drivers — see `overlay/etc/dracut.conf.d/10-c630.conf` |
|
|
| 90-second stall early in boot | Add `systemd.tpm2_wait=0` |
|
|
|
|
Adding `earlycon` and `ignore_loglevel` will tell you a great deal more about
|
|
which of these it is.
|