TurtleBot
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é:
- zmenšit diskový odddíl
/dev/nvme0np2
na kterém je souborový systém ext4 s Ubuntu - posunout diskový odddíl
/dev/nvme0np3
na kterém je swap (ten bude využívat i disklessový OS) - 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
Editace grub.cfg
Pro zavádění jádra disklessového systému se využívá zavaděč předinstalovaného Ubuntu. K tomu byla nutná následující úprava souboru /mnt/grub/grub.cfg
:
...
Automatizace procesu
oddíl /dev/nvme0np4
Úprava instalace disklessu
Přejmenování
# hostnamectl set-hostname bullseye
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čí.
Aby fungovalo ověřování přes WPA2, musí mít wpa_supplicant k dispozici další dva jaderné moduly: ccm a ctr[1]. Bez nich funguje pouze anonymní připojení. |
- ↑ Trvalo téměř týden, než jsme na to díky Marku Beliškovi přišli.