Skip to content

Commit 80a7898

Browse files
committed
spl.bin uboot.ltb
1 parent 222a076 commit 80a7898

File tree

7 files changed

+228
-111
lines changed

7 files changed

+228
-111
lines changed

.oclif.manifest.json

Lines changed: 52 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,58 +1057,6 @@
10571057
"tarballs.js"
10581058
]
10591059
},
1060-
"setup:install": {
1061-
"aliases": [],
1062-
"args": {},
1063-
"description": "Automatically check and install system prerequisites",
1064-
"examples": [
1065-
"eggs setup # this help",
1066-
"sudo eggs setup install # install native dependencies, autocomplete, man, etc",
1067-
"sudo eggs setup purge # purge all configurations, autocomplete, man, etc installed from penguins-eggs AppImage"
1068-
],
1069-
"flags": {},
1070-
"hasDynamicHelp": false,
1071-
"hiddenAliases": [],
1072-
"id": "setup:install",
1073-
"pluginAlias": "penguins-eggs",
1074-
"pluginName": "penguins-eggs",
1075-
"pluginType": "core",
1076-
"strict": true,
1077-
"enableJsonFlag": false,
1078-
"isESM": true,
1079-
"relativePath": [
1080-
"dist",
1081-
"commands",
1082-
"setup",
1083-
"install.js"
1084-
]
1085-
},
1086-
"setup:purge": {
1087-
"aliases": [],
1088-
"args": {},
1089-
"description": "Automatically check and install system prerequisites",
1090-
"examples": [
1091-
"eggs setup # this help",
1092-
"sudo eggs setup install # install native dependencies, autocomplete, man, etc",
1093-
"sudo eggs setup purge # purge all configurations, autocomplete, man, etc installed from penguins-eggs AppImage"
1094-
],
1095-
"flags": {},
1096-
"hasDynamicHelp": false,
1097-
"hiddenAliases": [],
1098-
"id": "setup:purge",
1099-
"pluginAlias": "penguins-eggs",
1100-
"pluginName": "penguins-eggs",
1101-
"pluginType": "core",
1102-
"strict": true,
1103-
"enableJsonFlag": false,
1104-
"isESM": true,
1105-
"relativePath": [
1106-
"dist",
1107-
"commands",
1108-
"setup",
1109-
"purge.js"
1110-
]
1111-
},
11121060
"tools:clean": {
11131061
"aliases": [],
11141062
"args": {},
@@ -1350,6 +1298,58 @@
13501298
"yolk.js"
13511299
]
13521300
},
1301+
"setup:install": {
1302+
"aliases": [],
1303+
"args": {},
1304+
"description": "Automatically check and install system prerequisites",
1305+
"examples": [
1306+
"eggs setup # this help",
1307+
"sudo eggs setup install # install native dependencies, autocomplete, man, etc",
1308+
"sudo eggs setup purge # purge all configurations, autocomplete, man, etc installed from penguins-eggs AppImage"
1309+
],
1310+
"flags": {},
1311+
"hasDynamicHelp": false,
1312+
"hiddenAliases": [],
1313+
"id": "setup:install",
1314+
"pluginAlias": "penguins-eggs",
1315+
"pluginName": "penguins-eggs",
1316+
"pluginType": "core",
1317+
"strict": true,
1318+
"enableJsonFlag": false,
1319+
"isESM": true,
1320+
"relativePath": [
1321+
"dist",
1322+
"commands",
1323+
"setup",
1324+
"install.js"
1325+
]
1326+
},
1327+
"setup:purge": {
1328+
"aliases": [],
1329+
"args": {},
1330+
"description": "Automatically check and install system prerequisites",
1331+
"examples": [
1332+
"eggs setup # this help",
1333+
"sudo eggs setup install # install native dependencies, autocomplete, man, etc",
1334+
"sudo eggs setup purge # purge all configurations, autocomplete, man, etc installed from penguins-eggs AppImage"
1335+
],
1336+
"flags": {},
1337+
"hasDynamicHelp": false,
1338+
"hiddenAliases": [],
1339+
"id": "setup:purge",
1340+
"pluginAlias": "penguins-eggs",
1341+
"pluginName": "penguins-eggs",
1342+
"pluginType": "core",
1343+
"strict": true,
1344+
"enableJsonFlag": false,
1345+
"isESM": true,
1346+
"relativePath": [
1347+
"dist",
1348+
"commands",
1349+
"setup",
1350+
"purge.js"
1351+
]
1352+
},
13531353
"wardrobe:get": {
13541354
"aliases": [],
13551355
"args": {

musebook/0.sh

Lines changed: 0 additions & 11 deletions
This file was deleted.

musebook/1.sh

Lines changed: 0 additions & 29 deletions
This file was deleted.

musebook/2.sh

Lines changed: 0 additions & 19 deletions
This file was deleted.

musebook/README.md

Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
# Guida Tecnica: Forzare il Boot da USB su Spacemit Muse Book (K1 SoC)
2+
3+
Questa guida riassume i passaggi per configurare un laptop basato su SoC Spacemit K1 (RISC-V) per avviarsi da USB, superando le limitazioni del firmware di fabbrica che ignora i tasti di boot standard e le ISO generiche.
4+
5+
## Il Problema
6+
* Nessun Menu di Boot: I tasti standard (ESC, F7, F11, Spazio) spesso non interrompono il boot automatico.
7+
8+
* U-Boot Bloccato: La configurazione di avvio è cablata nel codice e la partizione delle variabili d'ambiente (env) è spesso non inizializzata, rendendo inefficace `fw_setenv`.
9+
10+
* ISO Incompatibili: Le immagini ISO standard (UEFI/Grub) non contengono il Device Tree (DTB) specifico per il laptop, quindi il bootloader le ignora o mostra schermo nero.
11+
12+
## Parte 1: Abilitare la modifica dell'ordine di avvio (Host Side)
13+
L'obiettivo è scrivere fisicamente nella memoria flash le istruzioni per dare priorità alla USB (usb0) rispetto al disco interno (nvme0/mmc).
14+
15+
1. Individuare la partizione ENV Su questi dispositivi, le variabili U-Boot risiedono solitamente in /dev/mtd3.
16+
17+
```
18+
cat /proc/mtd
19+
```
20+
Cerca la riga: mtd3: ... "env"
21+
22+
2. Configurare gli strumenti U-Boot Creare il file /etc/fw_env.config per dire al sistema dove leggere/scrivere:
23+
24+
```
25+
echo "/dev/mtd3 0x0 0x10000 0x1000" | sudo tee /etc/fw_env.config
26+
```
27+
3. Creare e Flashare la nuova configurazione
28+
Poiché fw_setenv fallisce su partizioni vuote, bisogna creare un'immagine binaria e scriverla con dd.
29+
30+
Crea un file my_boot.txt con il contenuto:
31+
32+
```
33+
boot_targets=usb0 nvme0 mmc0 pxe
34+
bootdelay=5
35+
```
36+
Converti in binario (richiede u-boot-tools):
37+
```
38+
mkenvimage -s 65536 -o env.bin my_boot.txt
39+
```
40+
41+
Passaggio Critico: Cancella la partizione e scrivi (richiede mtd-utils):
42+
```
43+
sudo flash_erase /dev/mtd3 0 0
44+
sudo dd if=env.bin of=/dev/mtd3
45+
```
46+
47+
Verifica: ```sudo strings /dev/mtd3 | grep boot_targets```
48+
49+
Parte 2: Preparazione della USB (La "Chirurgia")
50+
51+
Le ISO standard non partono? (verificare) Bisogna creare una chiavetta "manualmente" che usi Extlinux e contenga il Device Tree corretto.
52+
53+
1. Partizionamento La chiavetta deve avere una partizione che occupi tutto lo spazio (attenzione a lsblk, a volte le partizioni ISO sono minuscole).
54+
55+
Filesystem consigliato: FAT32 (massima compatibilità con U-Boot) o EXT4 (se U-Boot lo supporta, meglio per i permessi).
56+
57+
2. Copia dei File
58+
59+
Montare la ISO originale e copiare tutto il contenuto (vmlinuz, initrd, cartella live) nella root della USB.
60+
61+
3. Il "Trapianto" del Device Tree (DTB) Per far funzionare schermo e periferiche, copiare il file .dtb dal sistema funzionante alla USB.
62+
63+
Sorgente (esempio): /boot/spacemit/6.6.63/k1-x_MUSE-Book.dtb
64+
65+
Destinazione: / (root della USB).
66+
67+
4. Creazione menu Extlinux Creare il file /extlinux/extlinux.conf sulla USB:
68+
69+
```
70+
label custom-live
71+
kernel /live/vmlinuz-6.6.63
72+
initrd /live/initrd.img-6.6.63
73+
fdt /k1-x_MUSE-Book.dtb
74+
append boot=live components quiet splash console=ttyS0,115200n8 console=tty0
75+
```
76+
(Nota: fdt è il comando fondamentale che manca nelle installazioni standard).
77+
78+
Diagnostica: Perché potrebbe non partire?
79+
Se dopo tutto questo riparte il disco interno:
80+
81+
Filesystem: U-Boot potrebbe saper leggere solo FAT32 per il file extlinux.conf iniziale, anche se il kernel Linux supporta EXT4.
82+
83+
Porta USB: Spesso su questi SoC solo una porta è scansionata all'avvio (solitamente la USB 3.0 Type-A, oppure la OTG).
84+
85+
Bootcmd: In alcune versioni di U-Boot, la variabile bootcmd è hardcodata e ignora boot_targets. In quel caso serve un cavo seriale per il debug.
86+
87+
88+
# Creazione img al posto di ISO
89+
Per risv64 dovrei creare una img al posto di una iso, in pratica si tratta di sostituire xorriso con uno script adatto che copi la struttura, aggiunga DTB_FILE ed extlinux.
90+
91+
```
92+
Bash
93+
#!/bin/bash
94+
95+
# 1. Configurazione
96+
IMG_NAME="eggs-musebook-riscv64.img"
97+
IMG_SIZE="4096" # Dimensione in MB (4GB)
98+
SRC_DIR="./output_eggs" # La cartella dove eggs ha messo vmlinuz, initrd, filesystem.squashfs, etc.
99+
DTB_FILE="./k1-x_MUSE-Book.dtb" # Il file DTB che hai estratto dal notebook
100+
101+
echo "--- 1. Creazione contenitore vuoto ($IMG_SIZE MB) ---"
102+
dd if=/dev/zero of=$IMG_NAME bs=1M count=$IMG_SIZE status=progress
103+
104+
echo "--- 2. Partizionamento (Creiamo una partizione EXT4 che occupa tutto) ---"
105+
# Usiamo sfdisk per automatizzare fdisk. Crea una partizione Linux standard.
106+
echo "type=83" | sfdisk $IMG_NAME
107+
108+
echo "--- 3. Setup del dispositivo di Loopback ---"
109+
# Collega il file .img a un dispositivo virtuale /dev/loopX
110+
LOOP_DEV=$(sudo losetup -fP --show $IMG_NAME)
111+
echo "Immagine montata su: $LOOP_DEV"
112+
113+
echo "--- 4. Formattazione in EXT4 ---"
114+
# Formattiamo la prima partizione del loop device (es. /dev/loop0p1)
115+
sudo mkfs.ext4 -L "MUSEBOOT" -m 0 "${LOOP_DEV}p1"
116+
117+
echo "--- 5. Montaggio e Copia dei File ---"
118+
sudo mkdir -p /mnt/tmpeggs
119+
sudo mount "${LOOP_DEV}p1" /mnt/tmpeggs
120+
121+
# A. Copia la cartella 'live' generata da eggs
122+
echo "Copia del sistema live..."
123+
sudo cp -r $SRC_DIR/live /mnt/tmpeggs/
124+
125+
# B. Copia il DTB (Fondamentale!)
126+
echo "Copia del Device Tree..."
127+
sudo cp $DTB_FILE /mnt/tmpeggs/
128+
129+
# C. Creazione Extlinux
130+
echo "Creazione configurazione di boot..."
131+
sudo mkdir -p /mnt/tmpeggs/extlinux
132+
cat <<EOF | sudo tee /mnt/tmpeggs/extlinux/extlinux.conf
133+
label eggs-live
134+
kernel /live/vmlinuz-6.6.63
135+
initrd /live/initrd.img-6.6.63
136+
fdt /k1-x_MUSE-Book.dtb
137+
append boot=live components quiet splash console=ttyS0,115200n8 console=tty0
138+
EOF
139+
140+
echo "--- 6. Chiusura e Pulizia ---"
141+
sudo umount /mnt/tmpeggs
142+
sudo losetup -d $LOOP_DEV
143+
rmdir /mnt/tmpeggs
144+
145+
echo "FATTO! L'immagine $IMG_NAME è pronta per essere flashata."
146+
```
147+
148+
## Modifiche ad eggs
149+
150+
produce --dtb path-file-dtb
151+
152+
se path-file-dtb esiste, allora continua e formato img.
153+
154+
Si interviene solo su produce e xorriso, la cartella ISO viene smembrata:
155+
* ISO/isolinux
156+
* ISO/boot/grub/efi.img
157+
158+
# Partizione 1 BOOT (FAT32)
159+
* ISO/EFI -> BOOT/EFI
160+
* ISO/live/vmlinu? -> BOOT/live/vmlinu?
161+
162+
## File da aggiungere (Generati/Copiati da Eggs durante la build):
163+
* k1-x_MUSE-Book.dtb (o altri DTB) → Root della partizione.
164+
* extlinux/extlinux.conf → Generato al volo (per Spacemit/U-Boot).
165+
```
166+
label eggs
167+
kernel /vmlinuz-6.12...
168+
initrd /initrd.img-6.12...
169+
fdt /k1-x_MUSE-Book.dtb
170+
append boot=live components splash ...
171+
```
172+
* config.txt + Firmware → (Solo se stai facendo la build per Raspberry Pi).
173+
174+
175+
# Partizione 2 (ext4)
176+
ISO/live/filesystem.squashfs -> ROOT/live/filesystem.squashfs

musebook/spl.bin

0 Bytes
Binary file not shown.

musebook/uboot.itb

-1 MB
Binary file not shown.

0 commit comments

Comments
 (0)