Sissejuhatus
Hiljuti, töötades oma diplomiga, tekkis mul vajadus luua Ubuntu pilt üheplaadilise arvuti jaoks, kus on juba installitud ROS (Robot Operating System – robotite operatsioonisüsteem). Lühidalt öeldes, on diplom pühendatud robotigrupi juhtimisele. Robotid on varustatud kahe ratta ja kolme kaugusmõturiga. Kogu seda hallatakse ROS-i kaudu, mis töötab ODROID-C2 arendusplaadil.

Robot Ladybug. Vabandust halbade fotode kvaliteedi pärast
Ei olnud aega ega soovi installida ROS-i eraldi igale robotile, mistõttu tekkis vajadus süsteemipildi järele, kus ROS on juba installitud. Uurides internetti, leidsin mitmeid lähenemisviise, kuidas seda teha.
Leitud lahendused saab üldiselt jagada järgnevatesse gruppidesse.
- Programmid, mis loovad pildi valmis ja seadistatud süsteemist (, , , systemback jne.)
- Projektid, mis võimaldavad koostada oma pildi (, )
- Pildi käsitsi koostamine ( ja , pluss )
Esimese grupi lahenduste kasutamine tundus kõige lihtsam ja atraktiivsem variant, kuid ma ei suutnud siiski ODROIDile live-süsteemi pilti luua. Teise rühma lahendused ei sobinud mulle samuti piisavalt kõrge sisenemisbarjääri tõttu. Käsitsi koostamine olemasolevate juhendite alusel ei sobinud samuti, kuna minu pildil ei olnud kompressitud failisüsteemi.
Kokkuvõttes, sattudes chroot (chroot — change root, video link postituse lõpus) ja selle võimaluste peale, otsustasin seda kasutada. Edasi kirjeldan oma individuaalset juhtumit Ubuntu kohandamiseks robootika arendajatele.
Sisendisubmit:
- Kogu pildi modifitseerimise protsess (välja arvatud SD-kaardile kirjutamine balenaEtcheriga) toimus Ubuntu 18.04 operatsioonisüsteemis.
- Operatsioonisüsteem, mille koostasin – Ubuntu 18.04.3 mate desktop versioon.
- Masin, millel peab koostatud süsteem töötama – ODROID-C2.
Pildi ettevalmistamine
Laadige alla Ubuntu pilt ODROID jaoks
Pakkige arhiv lahti
unxz –kvLooge kaust, kuhu mountida pilt
mkdir mntMäärake partitsioon, millel failisüsteem asub
fileOtsige partitsiooni, kus failisüsteem on vormindatud ext2, ext3 või ext4. Me vajame partitsiooni algusaadressi (punasega esile tõstetud ekraanipildil):

Märkus. Failisüsteemi asukohta saab vaadata ka kasutades utiliiti parted.Mountimme pildi
sudo mount -o loop,offset=$((264192*512)) mnt/Meie vajalik partitsioon algab plokist 264192 (numbrid võivad teil erineda), ühe ploki suurus on 512 baiti, korrutame need, et saada nihke bitti.
Liigume montitud süsteemi kausta ja chrootime sinna
cd mnt/ sudo chroot ~/livecd/mnt/ bin/sh~/livecd/mnt — täielik tee montitud süsteemi kausta
bin/sh — shell (saab asendada ka bin/bash)
Nüüd saame hakata installima vajalikke pakette ja rakendusi.
ROS-i installimine
Ma installisin ROS-i viimase versiooni (ROS Melodic) järgi .
Uuendame pakettide loendi
sudo apt-get updateSiin tekkis mul tõrge:
Err:6 http://deb.odroid.in/c2 bionic InRelease Alljärgnevad allkirjad olid kehtetud: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr)See on seotud selle asjaoluga, et pakettide allkirjastamise võtme kehtivusaeg on lõppenud. Võtmete uuendamiseks sisestame:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9Valmistame süsteemi ROS-i installimiseks ette
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654sudo apt updateInstallime ROS-i
Kahjuks ei õnnestunud mul installida ROS-i desktop versiooni, seega installisin ainult põhipaketid:sudo apt install ros-melodic-ros-base apt search ros-melodicMärkus 1. Installimise käigus tekkis aeg-ajalt tõrge:
dpkg: error: failed to write status database record about 'iputils-ping' to '/var/lib/dpkg/status': No space left on deviceTõrge lahendati apt utiliidi vahemälu tühjendamise abil:
sudo apt-get clean; sudo apt-get autocleanMärkus 2. Pärast installimist käivita (source) käsuga:
source /opt/ros/melodic/setup.bashei õnnestu, kuna me ei käivitanud bash'i, seega ei pea seda terminalis sisestama.
Installime vajalikud sõltuvused
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essentialsudo apt install python-rosdepsudo rosdep init rosdep updateSeame õigused
Kuna oleme chrootinud ja teostame kõiki toiminguid põhimõtteliselt root õigustega, siis käivitatakse ROS samuti ainult superkasutaja õigustes.
Kui proovite käivitada roscore ilma sudo-ta, tekib tõrge:Traceback (most recent call last): File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 230, in main write_pid_file(options.pid_fn, options.core, options.port) File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 106, in write_pid_file with open(pid_fn, "w") as f: IOError: [Errno 13] Permission denied: '/home/user/.ros/roscore-11311.pid'Kuna tõrke vältimiseks muudame rekursiivselt ROS kasutaja kodukausta õigusi. Selleks sisestame:
sudo rosdep fix-permissionsPaigaldame paketid rviz ja rqt
sudo apt-get install ros-melodic-rqt ros-melodic-rviz
Viimased puudutused
- Väljumine chrootist:
exit - Montaazime pildi
cd .. sudo umount mnt/ - Pakime süsteemi pildi arhiivi
xz –ckv1
Kõik! Nüüd saab kasutada süsteemi pilti SD-kaardile kirjutamiseks, sisestada see ODROID-C2-sse ning teil on Ubuntu koos installitud ROS-iga!
Lingid:
- Kuidas chrootida Linuxis ja milleks see vajalik on, aitas see video:

Allikas: habr.com

