Home News Pubblicato il codice sorgente di Arch Linux per la console ibrida...

[Scena Switch] Pubblicato il codice sorgente di Arch Linux per la console ibrida Nintendo Switch

530
0

Il developer  Shiny Quagsire ha mantenuto la parola data, pubblicando per intero il codice sorgente di Linux per la console ibrida Nintendo Switch.

Il progetto è ancora altamente Work in Progress, mancano i driver per l’utilizzo e la comunicazione della porta USB, il supporto WiFi/Bluetooth, il supporto audio e quant’altro. In sostanza ci troviamo di fronte ad un sistema operativo nudo e crudo.

Requisiti

  • Boot Loader u-boot in esecuzione da takeover TrustZone o bootrom hax. Al momento non è disponibile, tuttavia è possibile trovare una versione di u-boot compatibile con Switch qui.
  • Una scheda SD correttamente formattata. Le istruzioni sono disponibili in Compilazione, installazione e configurazione poco sotto.

Note su PSCI

  • Il componente TrustZone di Horizon OS di Nintendo può fornire chiamate PSCI che funzionano per Linux (fornite le patch fornite nel repository). Per impostazione predefinita, la struttura del dispositivo è configurata per Linux in esecuzione da u-boot pacchettizzato nel package2 di Nintendo, con tutte le chiamate PSCI inviate a SMC #1 anziché SMC #0.
  • L’utilizzo di altri firmware fidati con PSCI su SMC #0 dovrebbe essere in grado di rimuovere la necessità di queste patch, tuttavia non è attualmente testato.

Note sul debug

  • Per impostazione predefinita, la guida Joy-Con destra viene utilizzata per l’uscita di registrazione UART, con il pin 5 come TX della console e il pin 8 come RX della console. Vedi qui per i dettagli.

Compilazione, installazione e configurazione

L’installazione di u-boot dipenderà dai metodi di caricamento utilizzati. Tuttavia, una volta installato u-boot, è possibile utilizzare le seguenti istruzioni:

  • Assicuratevi che la scheda SD sia formattata con partizionamento MBR, con una prima partizione FAT32/exFAT e una seconda per ext3/ext4. Se ext4 presenta problemi di avvio, provate ext3.
  • Scaricate da questo link l’immagine generica ALARM e seguite le istruzioni fornite per installare il filesystem sul filesystem ext3/ext4 sulla scheda SD. Potrebbe essere necessario un box Linux per fare questi passaggi.
  • Clonate linux-next digitando: git clone git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
  • cd linux-next && git checkout v4.15
  • Applicate le patch fornite nella repository digitando: git am -3 -k <patch file>
  • NVIDIA richiede microcodice per i loro sottosistemi host1x/DRM. Questo dovrebbe essere compilato nel kernel o in initramfs per la schermata iniziale init.
    • Scaricate il pacchetto linux-firmware da qui.
    • mkdir extra_firmware
    • Copiate i file nvidia/tegra210/vic04_ucode.bin e nvidia/tegra210/xusb.bin dal pacchetto in linux-next/extra_firmware/nvidia/tegra210/vic04_ucode.bin e linux-next/extra_firmware/nvidia/tegra210/xusb.bin
    • Va notato che sebbene ciò possa essere utile per un facile debug, le immagini del kernel generate saranno sporche e non strettamente conformi a GPL. Si consiglia, per le versioni basate su immagini, che questi file vengano installati su initramfs.
    • Prossimamente: Potrebbe essere meglio non avere un initramfs e averli estratti dalla partizione root effettiva, con Linux-firmware installato su di esso.
  • Assicurarsi di avere un cross-compiler AArch64 installato.
  • export ARCH=arm64
  • export CROSS_COMPILE=aarch64-linux-gnu-
  • mkdir -p build/hac-001/
  • make O=build/hac-001/ hac_defconfig
  • make O=build/hac-001/ -j4 Image
  • Copiare il file immagine da: build/hac-001/arch/arm64/boot/Image nella cartella di boot/ FAT sulla partizione FAT della scheda SD.
  • In questa repository, mkimage -A arm -T script -O linux -d u-boot/boot.txt u-boot/boot.scr e copiare boot.scr nella directory boot/ sulla partizione FAT della scheda SD.
  • make O=build/hac-001/ -j4 modules
  • make O=build/hac-001/ modules_install INSTALL_MOD_PATH=/path/to/ALARM/rootfs/ , potrebbe essere necessario eseguire come root (con le variabili di ambiente nuovamente impostate).
  • ALARM ha un initramfs predefinito che deve essere avvolto per u-boot. mkimage -T ramdisk -C gzip -d /path/to/initramfs-linux.img /path/to/FAT/boot/initramfs.uImage
  • All’interno della repository, cd device-tree && sh build.sh && cp tegra210-hac-001.dtb /path/to/FAT/boot/
  • La tua directory boot/ FAT dovrebbe avere Image , initramfs.uImage e tegra210-hac-001.dtb
  • Avviare da u-boot. Se si verifica un errore, verrà aperto un dispositivo di archiviazione di massa USB per la scheda SD.

Prossimamente

  • Supporto USB.
  • Supporto WiFi/BT (?).
  • Ottenere nuovo lavoro
  • Supporto audio.
  • Supporto touchscreen.
  • DVFS funziona?
  • DisplayPort? Cambia i driver del dock?
  • Probabilmente molte più cose.

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.