feat(installer): add 'Install to disk' in Tools submenu

Copies the live system to a local disk via unsquashfs — no debootstrap,
no network required. Supports UEFI (GPT+EFI) and BIOS (MBR) layouts.

ISO:
- Add squashfs-tools, parted, grub-pc, grub-efi-amd64 to package list
- New overlay script bee-install: partitions, formats, unsquashfs,
  writes fstab, runs grub-install+update-grub in chroot

Go TUI:
- Settings → Tools submenu (Install to disk, Check tools)
- Disk picker screen: lists non-USB, non-boot disks via lsblk
- Confirm screen warns about data loss
- Runs with live progress tail of /tmp/bee-install.log
- platform/install.go: ListInstallDisks, InstallToDisk, findLiveBootDevice

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-26 23:35:01 +03:00
parent 5644231f9a
commit a57b037a91
12 changed files with 555 additions and 24 deletions

View File

@@ -141,7 +141,9 @@ func (m model) updateConfirm(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
)
case actionRunFanStress:
return m.startGPUStressTest()
case actionRunNCCLTests:
case actionInstallToDisk:
return m.startInstall()
case actionRunNCCLTests:
m.busy = true
m.busyTitle = "NCCL bandwidth test"
ctx, cancel := context.WithCancel(context.Background())
@@ -165,6 +167,8 @@ func (m model) confirmCancelTarget() screen {
return screenHealthCheck
case actionRunFanStress, actionRunNCCLTests:
return screenBurnInTests
case actionInstallToDisk:
return screenInstallDiskPick
default:
return screenMain
}