(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).
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.
Î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.
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ă.