Predstavitev
Pred nekaj dnevi sem se med pisanjem diplome soočil s potrebo po ustvarjanju podobe Ubuntu za enoploščni računalnik z že nameščenim ROS-om (Robot Operating System - robotski operacijski sistem). Skratka, diploma je namenjena upravljanju skupine robotov. Roboti so opremljeni z dvema kolesoma in tremi daljinomeri. Vse skupaj je nadzorovano iz ROS-a, ki teče na plošči ODROID-C2.

Robot Pikapolonica. Oprostite za slabo kakovost fotografije
Za namestitev ROS-a na vsakega robota posebej ni bilo ne časa ne želje, zato je bila potrebna sistemska slika z že nameščenim ROS-om. Po brskanju po internetu sem našel več pristopov, kako bi to lahko naredili.
Na splošno lahko vse najdene rešitve razdelimo v naslednje skupine.
- Programi, ki ustvarijo sliko iz že pripravljenega in konfiguriranega sistema (, , , Systemback itd.)
- Projekti, ki vam omogočajo ustvarjanje lastne podobe (, )
- Samostojno sestavljanje slike ( и plus )
Uporaba rešitev iz prve skupine se je zdela najenostavnejša in najbolj privlačna možnost, vendar mi nikoli ni uspelo ustvariti žive sistemske slike za ODROID. Tudi rešitve druge skupine mi niso ustrezale zaradi dokaj visokega vstopnega praga. Tudi ročna montaža po razpoložljivih tutorialih ni bila primerna, ker... Moja slika ni imela stisnjenega datotečnega sistema.
Posledično sem naletel na video o chrootu (chroot - spremeni koren(Povezava do videa na koncu objave) in njegovih zmogljivosti sem se odločil, da ga uporabim. Spodaj bom opisal svoj konkreten primer prilagoditve. Ubuntu za razvijalce robotike.
Vir podatkov:
- Celoten postopek spreminjanja slike (razen zapisovanja na SD kartico z uporabo balenaEtcher) je bil izveden v operacijskem sistemu. Ubuntu 18.04.
- Operacijski sistem, katerega sklop je bil spremenjen, je bil – Ubuntu 18.04.3 namizna različica Mate.
- Stroj, na katerem naj bi sestavljen sistem deloval je ODROID-C2.
Priprava slike
Prenesi sliko Ubuntu za ODROID z
Razpakiranje arhiva
unxz –kv <файл архива с образом>Ustvarite imenik, v katerega bomo montirali sliko
mkdir mntDoločite particijo, na kateri se nahaja datotečni sistem
file <файл образа>Iščemo particijo z datotečnim sistemom v formatu ext2, ext3 ali ext4. Potrebujemo naslov začetka odseka (na zaslonu je označen z rdečo):

Opomba. Lokacijo datotečnega sistema si lahko ogledate tudi s pomočjo pripomočka razdeljen.Montaža slike
sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/Razdelek, ki ga potrebujemo, se začne z blokom 264192 (vaše številke se lahko razlikujejo), velikost enega bloka je 512 bajtov, pomnožite jih, da dobite zamik v bajtih.
Pojdite v mapo z nameščenim sistemom in se zadržite v njej
cd mnt/ sudo chroot ~/livecd/mnt/ bin/sh~/livecd/mnt — polna pot do imenika z nameščenim sistemom
bin/sh - lupina (lahko se nadomesti tudi z bin/bash)
Zdaj lahko začnete nameščati potrebne pakete in aplikacije.
Namestitev ROS
Nameščal sem najnovejšo različico ROS (ROS Melodic) glede na .
Posodabljanje seznama paketov
sudo apt-get updateTukaj sem dobil napako:
Err:6 http://deb.odroid.in/c2 bionic InRelease The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <mauro.ribeiro@hardkernel.com>To je posledica dejstva, da je ključ za podpisovanje paketa potekel. Če želite posodobiti ključe, vnesite:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9Priprava sistema za namestitev 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 updateNamestitev ROS
Na žalost mi ni uspelo namestiti namizne različice ROS-a, zato sem namestil samo osnovne pakete:sudo apt install ros-melodic-ros-base apt search ros-melodicOpomba 1 Med postopkom namestitve je včasih prišlo do napake:
dpkg: error: failed to write status database record about 'iputils-ping' to '/var/lib/dpkg/status': No space left on deviceTo je bilo popravljeno s čiščenjem predpomnilnika s pripomočkom apt:
sudo apt-get clean; sudo apt-get autocleanOpomba 2 Po namestitvi vir z ukazom:
source /opt/ros/melodic/setup.bashne bo šlo, saj Bash nismo zagnali, zato ga NI treba vnesti v terminal.
Namestitev potrebnih odvisnosti
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essentialsudo apt install python-rosdepsudo rosdep init rosdep updateNastavitev pravic dostopa
Ker smo prijavljeni in dejansko izvajamo vsa dejanja v imenu korena sistema, ki se sestavlja, bo ROS zagnan samo s pravicami superuporabnika.
Pri poskusu zagona roscore brez sudo se pojavi napaka: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'Da preprečimo pojav napake, rekurzivno spremenimo pravice dostopa do domačega imenika uporabnika ROS. Za to vtipkamo:
sudo rosdep fix-permissionsDodatna namestitev paketov rviz in rqt
sudo apt-get install ros-melodic-rqt ros-melodic-rviz
Zadnji dotiki
- Izhod iz chroota:
exit - Odprite sliko
cd .. sudo umount mnt/ - Zapakirajmo sistemsko sliko v arhiv
xz –ckv1 <файл образа>
Vse! Zdaj s pomočjo Sistemsko sliko lahko zapišete na SD kartico, jo vstavite v ODROID-C2 in imeli boste Ubuntu z nameščenim ROS-om!
Reference:
- Ta videoposnetek vam je zelo pomagal pri goljufanju v Linuxu in zakaj ga potrebujete:

Vir: www.habr.com

