TurtleBot

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání


TurtleBot, je robotické zařízení, používané při výuce na Katedře kybernetiky. Jeho "mozkem" je Intel NUC, který sice může komunikovat přes ethernet, ale primárně komunikuje přes Wi-Fi.

Zařízení se dodává s předinstalovaným Ubuntu, ale v rámci sjednocení vývojového prostředí je potřeba na něm rozběhat stejnou diskless instalaci, jako v laboratořích.

Jelikož klasické PXE funguje pouze v rámci na ethernetu, jsou TurtleBoty vytvořené podobným způsobem, je virtuální stroje typu Half-Diskless. Rozdíl je pouze v tom, že se při spouštění nepoužívá virtuální disk publikovaný přes NFS, nýbrž lokální NVME disk.

Co to obnáší?

Příprava na diskless

Parametry NUC7i7DNKE Intel(R) Client Systems verze J85069-205

8 jader CPU Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz
8 GB RAM (1x 8GB modul Kingston + volný slot)
Ethernet Connection I219-LM
01:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)
~# lsmod | grep iw
iwlwifi               151552  0
cfg80211              598016  1 iwlwifi
~# cat /proc/partitions 
major minor  #blocks  name

 259        0  234431064 nvme0n1
 259        1     524288 nvme0n1p1 EFI flags boot, esp (zachovat)
 259        2  225643520 nvme0n1p2 ext4 Ubuntu (zmenšit) orig 220355, nově 200000
 259        3    8261632 nvme0n1p3 linux-swap (posunout)

NUC pro TurtleBoty je dodáván s předinstalovaným Ubuntu, proto bylo nutné:

  1. zmenšit diskový odddíl /dev/nvme0np2 na kterém je souborový systém ext4 s Ubuntu
  2. posunout diskový odddíl /dev/nvme0np3 na kterém je swap (ten bude využívat i disklessový OS)
  3. vytvořit nový diskový odddíl /dev/nvme0np4

Tento nově vytvořený diskový oddíl /dev/nvme0np4 byl naformátován na souborový systém Btrfs, aby bylo možné subvolume pro systém nainstalovaný přes debootstrap snapshotovat.

Instalace

Formátování fs, vytvoření subvolume,…

/mnt# debootstrap --verbose --include=firmware-iwlwifi,isc-dhcp-common,openssh-server,wpasupplicant,nfs-common --variant=minbase --components main,contrib,non-free --arch=amd64 unstable ./

…snapshot, bind {/dev,/proc,/sys}, chroot

Vytvoření ramdisku s podporou Wi-Fi

Při vytvoření ramdisku s podporou Wi-Fi jsem postupoval podle webové stránky Marka Fargase

Bohužel se ukázalo, že uvedený postup pro připojení přes WPA2 nestačí.

Editace grub.cfg

Automatizace procesu

oddíl /dev/nvme0np4

Úprava instalace disklessu

Export adresáře přes NFS

Zkopírování stávajícího obsahu fyzického stroje

Vytvoření zaváděcího disku

1, Zkopírování zaváděcího disku stroje k333-dhcp (soubor k333dhcp.img) do souboru k333stu1.img

k333-lab (NFS) :/srv/boot# cp k333dhcp.img k333stu1.img

2, Připojení souboru k333stu1.img přes losetup na loop0

losetup /dev/loop0 /srv/boot/k333stu1.img

3, Mount diskového oddílu s jádrem a soubory zavaděče

k333-lab (NFS) :~# mount /dev/loop0 /mnt -o offset=$((2048*512))
Poznámka Při namountování musí být použit offset!

4, Zkopírování stávajícího ramdisku a jádra. A úprava souboru /mnt/grub/grub.cfg