Увод
Пре неки дан, док сам радио на дипломи, суочио сам се са потребом да створим слику Ubuntu за једноплочни рачунар са већ инсталираним ROS-ом (Робот Оператинг Систем - оперативни систем робота). Укратко, диплома је посвећена управљању групом робота. Роботи су опремљени са два точка и три даљиномера. Цела ствар се контролише из РОС-а, који ради на ОДРОИД-Ц2 плочи.

Робот Ладибуг. Извините због лошег квалитета фотографије
Није било ни времена ни жеље да се РОС инсталира на сваког робота појединачно, па је стога постојала потреба за имиџом система са већ инсталираним РОС-ом. Након што сам прегледао Интернет, пронашао сам неколико приступа како се то може урадити.
Генерално, сва пронађена решења могу се поделити у следеће групе.
- Програми који креирају слику из готовог и конфигурисаног система (, , , систем назад, итд.)
- Пројекти који вам омогућавају да креирате сопствену слику (, )
- Сами саставите слику ( и , плус )
Коришћење решења из прве групе је изгледало као најједноставнија и најатрактивнија опција, али никада нисам успео да направим слику система уживо за ОДРОИД. Решења друге групе такође ми нису одговарала због прилично високог улазног прага. Ручно склапање према доступним туторијалима такође није било прикладно, јер... Моја слика није имала компримовани систем датотека.
Као резултат тога, наишао сам на видео о цхроот-у (цхроот - промени корен(Видео линк на крају поста) и његових могућности, одлучио сам да га користим. У наставку ћу описати мој конкретан случај прилагођавања. Ubuntu за програмере роботике.
Почетни подаци:
- Читав процес модификације слике (осим писања на SD картицу помоћу balenaEtcher-а) је извршен у оперативном систему. Ubuntu 18.04.
- Оперативни систем чији је склоп модификован био је – Ubuntu 18.04.3 верзија за десктоп рачунаре за Мате.
- Машина на којој би склопљени систем требало да ради је ОДРОИД-Ц2.
Припрема слике
Преузмите слику Ubuntu за ODROID са
Распакивање архиве
unxz –kv <файл архива с образом>Направите директоријум у који ћемо монтирати слику
mkdir mntОдредите партицију на којој се налази систем датотека
file <файл образа>Тражимо партицију са системом датотека у формату ект2, ект3 или ект4. Потребна нам је адреса почетка одељка (означена црвеном бојом на екрану):

Напомена. Локација система датотека се такође може видети помоћу услужног програма подељен.Монтирање слике
sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/Одељак који нам је потребан почиње блоком 264192 (ваши бројеви се могу разликовати), величина једног блока је 512 бајтова, помножите их да бисте добили увлачење у бајтовима.
Идите у фасциклу са монтираним системом и дружите се у њему
cd mnt/ sudo chroot ~/livecd/mnt/ bin/sh~/ливецд/мнт — пуна путања до директоријума са монтираним системом
бин/сх - шкољка (може се заменити и са бин/басх)
Сада можете почети да инсталирате потребне пакете и апликације.
Инсталирање РОС-а
Инсталирао сам најновију верзију РОС-а (РОС Мелодиц) према .
Ажурирајте листу пакета
sudo apt-get updateОвде сам добио грешку:
Err:6 http://deb.odroid.in/c2 bionic InRelease The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <mauro.ribeiro@hardkernel.com>То је због чињенице да је кључ за потписивање пакета истекао. Да бисте ажурирали кључеве, откуцајте:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9Припрема система за уградњу РОС-а
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 updateИнсталирање РОС-а
Нажалост, нисам могао да инсталирам десктоп верзију РОС-а, па сам инсталирао само основне пакете:sudo apt install ros-melodic-ros-base apt search ros-melodicНапомена 1. Током процеса инсталације понекад је дошло до грешке:
dpkg: error: failed to write status database record about 'iputils-ping' to '/var/lib/dpkg/status': No space left on deviceПоправљено је брисањем кеша помоћу услужног програма апт:
sudo apt-get clean; sudo apt-get autocleanНапомена 2. Након инсталације, извор користећи команду:
source /opt/ros/melodic/setup.bashнеће радити, јер Нисмо покренули басх, тако да НИЈЕ потребно да се укуца у терминал.
Инсталирање потребних зависности
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essentialsudo apt install python-rosdepsudo rosdep init rosdep updateПодешавање права приступа
Пошто смо пријављени и, у ствари, обављамо све радње у име корена система који се склапа, РОС ће бити покренут само са правима суперкорисника.
Када покушате да покренете росцоре без судо, појављује се грешка: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'Да бисмо спречили да дође до грешке, хајде да рекурзивно променимо права приступа кућном директоријуму РОС корисника. Да бисмо то урадили, куцамо:
sudo rosdep fix-permissionsДодатна инсталација пакета рвиз и ркт
sudo apt-get install ros-melodic-rqt ros-melodic-rviz
Финал тоуцхс
- Изађи из цхроот-а:
exit - Демонтирајте слику
cd .. sudo umount mnt/ - Спакујмо слику система у архиву
xz –ckv1 <файл образа>
Све! Сада уз помоћ Можете да запишете слику система на SD картицу, уметнете је у ODROID-C2 и имаћете Ubuntu са инсталираним ROS-ом!
Референце:
- Овај видео је много помогао у томе како варати у Линуку и зашто вам је потребан:

Извор: ввв.хабр.цом

