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

507
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 usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.