Cercetarea rulării R pe RISC-V datorită R-Base pe Ubuntu

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe R | Dr. Tom Palmerși a contribuit cu drag la R-Bloggers). (Puteți raporta problema despre conținutul de pe această pagină aici)


Doriți să vă împărtășiți conținutul pe R-Bloggers? Faceți clic aici dacă aveți un blog sau aici dacă nu.

Introducere

Am fost interesat să văd dacă și cât de bine va rula R pe noua arhitectură RISC-V.

Cu ceva timp în urmă, am citit că RISC-V este acum o arhitectură de primă clasă pentru Ubuntu.

Asta m -a determinat să mă gândesc, în loc să fiu nevoit să construiesc R de la sursă poate r-base Pachetul ar putea fi disponibil pentru RISC-V. Se dovedește că acesta este într -adevăr cazul, arhitectura de care ne interesează este riscv64. Pagina lansabil pentru pentru r-base este aici. Făcând clic pe subpagini pentru fiecare versiune a Ubuntu, pot vedea că R este disponibil pentru RISC-V de la Ubuntu Focal Fossa înainte (pentru care versiunea R este 3.6.3;, iar cea mai recentă versiune a Ubuntu are versiunea actuală a R de 4.5.0).

Screenshot of the Architectures Pachetul R-Base este construit pentru Quokka Quokka Ubuntu.

De ce faci asta? Nu am nevoie imediată de acest lucru. Cu toate acestea, acum există destul de multe computere de bord RISC-V la prețuri accesibile, și astfel un argument similar se menține față de cel făcut de R4PI (R pentru proiectul Raspberry Pi), care rularea R pe astfel de mașini accesibile este un beneficiu mare, deoarece se deschide R până la o bază de utilizator cu totul nouă și un set complet nou de cazuri reduse de utilizare a energiei electrice.

Emularea RISC-V pe un Mac Apple Silicon Mac

Nu am un computer RISC-V, prin urmare, a trebuit să folosesc emularea.

Configurarea mea este că sunt pe un Apple Silicon M4 MacBook Air. M-am gândit că acest lucru ar putea fi promițător, deoarece acesta are un procesor ARM care este o arhitectură de set de instrucțiuni redusă, așa cum este RISC-V.

M -am întrebat dacă să încerc UTM sau QEMU. Am încercat mai întâi UTM, dar nu am putut face progrese. Așa că am găsit un sfat online spunând că RISC-V Ubuntu ar putea fi lansat sub QEMU pe Ubuntu Linux folosind următoarea comandă.

qemu-system-riscv64 
  -machine virt 
  -nographic 
  -m 12288 -smp 4 
  -bios /usr/lib/riscv64-linux-gnu/opensbi/generic/fw_jump.elf 
  -kernel /usr/lib/u-boot/qemu-riscv64_smode/uboot.elf 
  -device virtio-net-pci,netdev=eth0 
  -netdev user,id=eth0,hostfwd=tcp::2222-:22 
  -drive file=ubuntu-24.10-preinstalled-server-riscv64.img,format=raw,if=virtio

În primul rând, trebuie să obțineți Ubuntu IMG. Urmând acest ghid incredibil de Canonical, putem alege una dintre cele trei versiuni ale Ubuntu enumerate (nobil, oracular și plin de viață).

Imaginea se descarcă ca an .img.xz arhivă, pe care o puteți extrage prin instalarea xz (Folosesc homebrew pentru pachete de sistem pe macOS)

brew install xz

și decomprimarea cu

xz --decompress ubuntu-24.10-preinstalled-server-riscv64.img.xz

Fișierul extras este de aproximativ 4 GB, dar mai târziu mi -am dat seama că am nevoie de un harddisk ceva mai mare pentru mașina virtuală, așa că l -am mărit la 8 GB cu următoarea comandă.

qemu-img resize ubuntu-24.10-preinstalled-server-riscv64.img 8G

Mi -am dat seama apoi că am nevoie de qemu pe Mac -ul meu. Din nou Homebrew la salvare cu următoarea comandă.

brew install qemu u-boot-tools

(Cu siguranță, nu cred că am sfârșit folosind Tururi U-Boot.) În continuare, aveam nevoie de cele două fișiere; fw_jump.elf şi uboot.elf. Am aruncat o privire /opt/homebrew/cellar/qemu/10.0.2/ Dar nu aș putea să mă descurc dacă sunt acolo sau nu (există câteva arhive cu zip în unele subdirectorii). Există câteva pagini oficiale de documentare aici și aici, dar nu le -am putut urma. Am găsit apoi un comentariu care a spus că le puteți copia dintr -o instalație Ubuntu, pe care am implementat -o în Docker.

docker run -it --rm --platform linux/arm64 
  -v $PWD:/home ubuntu:24.04 bash /home/copy-files.sh

unde copiere-files.sh conține

apt update
apt upgrade -y 
apt install -y opensbi qemu-system-misc u-boot-qemu
cp /usr/lib/u-boot/qemu-riscv64_smode/uboot.elf /home/uboot.elf
cp /usr/lib/riscv64-linux-gnu/opensbi/generic/fw_jump.elf /home/fw_jump.elf

Acest lucru salvează cele două fișiere în directorul de lucru curent, așa că aș putea modifica apelul meu la qemu-system-riscv64 a fi după cum urmează.

qemu-system-riscv64 
  -machine virt 
  -nographic 
  -m 12288 -smp 4 
  -bios fw_jump.elf 
  -kernel uboot.elf 
  -device virtio-net-pci,netdev=eth0 
  -netdev user,id=eth0,hostfwd=tcp::2222-:22 
  -drive file=ubuntu-24.10-preinstalled-server-riscv64.img,format=raw,if=virtio

După câteva secunde obțineți un ecran GRUB în care selectați implicit Ubuntu. Apoi după o altă aprox. 20 de secunde de ieșire a ecranului, un pic spre surprinderea mea, acest lucru a funcționat și mi s -a prezentat ecranul de conectare la serverul Ubuntu. Numele de utilizator implicit este Ubuntu iar parola implicită este Ubuntu. La autentificare vi se solicită imediat să schimbați parola, dar apoi sunteți intrat.

Captura de ecran a mesajului de pornire a serverului Ubuntu care rulează pe o mașină virtuală RISC-V emulată.Captura de ecran a mesajului de pornire a serverului Ubuntu care rulează pe o mașină virtuală RISC-V emulată.

În continuare, este esențial comenzi ubuntu standard pentru a actualiza sistemul și a instala r-base. De asemenea, instalez r-base-dev Pentru a obține compilatorii necesare pentru a construi orice pachete sursă care conțin cod care trebuie compilat.

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y r-base r-base-dev

Apoi lansăm R.

Captura de ecran a mesajului de pornire R care rulează pe o mașină virtuală RISC-V emulată.Captura de ecran a mesajului de pornire R care rulează pe o mașină virtuală RISC-V emulată.

Din acest moment despre tot ce am încercat pur și simplu am funcționat. Am instalat date.Table din sursă. Apoi, puțin mai obscur, am încercat un truc de la Jeroen Ooms, care a spus că, dacă un pachet R conține doar codul R, atunci versiunea sa binară se va instala sub orice arhitectură. Am câteva pachete R în R-Universe care conțin doar codul R, exemplul meu instalat așa cum era de așteptat (rețineți că acesta a fost construit pe x86_64 Ubuntu Linux, dar nu conține niciun cod sursă care trebuie compilat).

install.packages('tmsens', repos="https://remlapmot.r-universe.dev/bin/linux/noble-x86_64/4.5/")
#> * installing *binary* package ‘tmsens’ ...
#> * DONE (tmsens)
#> 
#> The downloaded source packages are in
#> 	‘/tmp/RtmpYqwF8W/downloaded_packages’
#> > library(tmsens)
#> Warning message:
#> package ‘tmsens’ was built under R version 4.5.0
#> > help(package="tmsens")
#> 
#>                 Information on package ‘tmsens’

Recunosc că nu am încercat multe funcții aici, dar sunt foarte impresionat de pachetele Ubuntu disponibile pentru RISC-V.

După ce ați terminat de utilizat R, ieșiți R ca de obicei și pentru a opri problema serverului Ubuntu următoarele.

sudo poweroff

Rezumat

Am arătat cum să instalați și să rulați R pe serverul Ubuntu pentru RISC-V în emularea QEMU. Datorită sprijinului Canonical pentru RISC-V și întreținătorilor r-base și pachetele conexe Experiența rulării R pe RISC-V este deja excelentă.

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.