Úvod
Minule som pri práci na svojej diplomovej práci čelil potrebe vytvoriť obraz Ubuntu pre platformu s jednou doskou s už nainštalovaným ROS (Robot Operating System - operačný systém robotov). Stručne povedané, diplom je venovaný riadeniu skupiny robotov. Roboty sú vybavené dvoma kolesami a tromi diaľkomermi. Celé je to riadené z ROS, ktorý beží na doske ODROID-C2.

Robot Lienka. Ospravedlňujeme sa za zlú kvalitu fotografie
Nebol čas ani chuť inštalovať ROS na každého robota jednotlivo, a preto bol potrebný obraz systému s už nainštalovaným ROS. Po prehliadaní internetu som našiel niekoľko prístupov, ako by sa to dalo urobiť.
Vo všeobecnosti možno všetky nájdené riešenia rozdeliť do nasledujúcich skupín.
- Programy, ktoré vytvárajú obraz z hotového a nakonfigurovaného systému (, , , systémový back atď.)
- Projekty, ktoré vám umožňujú vytvoriť si vlastný obrázok (, )
- Zostavenie obrazu sami ( и , plus )
Použitie riešení z prvej skupiny sa zdalo byť najjednoduchšou a najatraktívnejšou možnosťou, ale nikdy sa mi nepodarilo vytvoriť živý obraz systému pre ODROID. Riešenia druhej skupiny mi tiež nevyhovovali vzhľadom na dosť vysoký vstupný prah. Ručná montáž podľa dostupných návodov tiež nebola vhodná, pretože... Môj obrázok nemal komprimovaný súborový systém.
V dôsledku toho som narazil na video o chroot (chroot - zmena koreňa, odkaz na video na konci príspevku) a jeho schopnosti, bolo rozhodnuté ho použiť. Ďalej opíšem môj konkrétny prípad prispôsobenia Ubuntu pre vývojárov robotiky.
Počiatočné údaje:
- Celý proces úpravy obrazu (okrem zápisu na SD kartu pomocou balenaEtcher) prebiehal na operačnom systéme Ubuntu 18.04.
- Operačný systém, ktorého zostavu som upravil, je Ubuntu 18.04.3 mate desktop verzia.
- Stroj, na ktorom by mal zostavený systém fungovať, je ODROID-C2.
Príprava obrazu
Stiahnite si obrázok Ubuntu pre ODROID z
Rozbaľovanie archívu
unxz –kv <файл архива с образом>Vytvorte si adresár, do ktorého pripojíme obraz
mkdir mntUrčite oblasť, na ktorej sa nachádza súborový systém
file <файл образа>Hľadáme partíciu so súborovým systémom vo formáte ext2, ext3 alebo ext4. Potrebujeme adresu začiatku sekcie (zvýraznená červenou farbou na obrazovke):

Poznámka. Umiestnenie súborového systému je možné zobraziť aj pomocou pomôcky rozlúčili.Montáž obrazu
sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/Časť, ktorú potrebujeme, začína blokom 264192 (vaše čísla sa môžu líšiť), veľkosť jedného bloku je 512 bajtov, vynásobte ich, aby ste získali odsadenie v bajtoch.
Prejdite do priečinka s namontovaným systémom a zaveste sa v ňom
cd mnt/ sudo chroot ~/livecd/mnt/ bin/sh~/livecd/mnt — úplná cesta k adresáru s pripojeným systémom
bin/sh - škrupina (možno nahradiť aj za bin/bash)
Teraz môžete začať inštalovať potrebné balíky a aplikácie.
Inštalácia ROS
Nainštaloval som najnovšiu verziu ROS (ROS Melodic) podľa .
Aktualizácia zoznamu balíkov
sudo apt-get updateTu som dostal chybu:
Err:6 http://deb.odroid.in/c2 bionic InRelease The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <mauro.ribeiro@hardkernel.com>Dôvodom je skutočnosť, že platnosť podpisového kľúča balíka vypršala. Ak chcete aktualizovať kľúče, zadajte:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9Príprava systému na inštaláciu ROS
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 updateInštalácia ROS
Bohužiaľ sa mi nepodarilo nainštalovať desktopovú verziu ROS, takže som nainštaloval iba základné balíčky:sudo apt install ros-melodic-ros-base apt search ros-melodicPoznámka 1. Počas procesu inštalácie sa niekedy vyskytla chyba:
dpkg: error: failed to write status database record about 'iputils-ping' to '/var/lib/dpkg/status': No space left on deviceBolo to opravené vymazaním vyrovnávacej pamäte pomocou nástroja apt:
sudo apt-get clean; sudo apt-get autocleanPoznámka 2. Po inštalácii vytvorte zdroj pomocou príkazu:
source /opt/ros/melodic/setup.bashnebude to fungovať, pretože Nespustili sme bash, takže ho NEMUSÍTE zadávať do terminálu.
Inštalácia potrebných závislostí
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essentialsudo apt install python-rosdepsudo rosdep init rosdep updateNastavenie prístupových práv
Keďže sme prihlásení a v skutočnosti vykonávame všetky akcie v mene koreňového adresára zostavovaného systému, ROS sa spustí iba s právami superužívateľa.
Pri pokuse o spustenie roscore bez sudo sa vyskytne chyba: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'Aby sa chyba nevyskytla, zmeňme rekurzívne prístupové práva do domovského adresára používateľa ROS. Za týmto účelom napíšeme:
sudo rosdep fix-permissionsDodatočná inštalácia balíkov rviz a rqt
sudo apt-get install ros-melodic-rqt ros-melodic-rviz
Záverečné úpravy
- Ukončiť chroot:
exit - Odpojte obrázok
cd .. sudo umount mnt/ - Zabalíme obraz systému do archívu
xz –ckv1 <файл образа>
Všetky! Teraz s pomocou môžete napáliť obraz systému na SD kartu, vložiť do ODROID-C2 a budete mať nainštalované Ubuntu s ROS!
odkazy:
- Toto video veľmi pomohlo s tým, ako podvádzať v Linuxe a prečo to potrebujete:

Zdroj: hab.com

