Automatizace bootování s novabootem Michal Sojka sojkam1@fel.cvut.cz ČVUT v Praze Fakulta elektrotechnická Katedra řídicí techniky InstallFest 2014 Michal Sojka Novaboot InstallFest 2014 1 / 14
K čemu je to dobré? Vývoj softwaru Běžný SW (zkompiluji), spustím Low-level SW (drivery, kernel,... ) Může způsobit pád OS Nechci testovat na počítači, kde dělám vývoj Zkompiluji, nabootuji Michal Sojka Novaboot InstallFest 2014 2 / 14
K čemu je to dobré? Vývoj softwaru Běžný SW (zkompiluji), spustím Low-level SW (drivery, kernel,... ) Může způsobit pád OS Nechci testovat na počítači, kde dělám vývoj Zkompiluji, nabootuji Průběžná integrace Zkompilovat aktuální (git HEAD) verzi jádra Nabootovat a spustit na ní testy a benchmarky Michal Sojka Novaboot InstallFest 2014 2 / 14
Manuální bootování Zkompilovat Nakopírovat na cílový počítač/boot server Nakonfigurovat bootloader Vyresetovat Uložení výstupu (výsledky testů, crash dump) Michal Sojka Novaboot InstallFest 2014 3 / 14
Novaboot https://github.com/wentasah/novaboot Skript pro automatizaci výše uvedeného Bootování vzdáleného počítače = spuštění lokálního programu Příkazová řádka Univerzální formát pro konfiguraci bootloaderu Podporuje: GRUB, GRUB2, Pulsar, U-Boot Podpora více cílových počítačů Široké možnosti konfigurace Michal Sojka Novaboot InstallFest 2014 4 / 14
Začínáme s novabootem Bootování Linuxu Vytvoříme novaboot script s názvem boot: #!/usr/bin/env novaboot load bzimage console=ttys0,115200 load rootfs.cpio.gz chmod +x boot./boot./boot --target pc1 # Spusti se v qemu Michal Sojka Novaboot InstallFest 2014 5 / 14
Složitější konfigurace Soubor nova-demo: #!/usr/bin/env novaboot HYPERVISOR_PARAMS=serial spinner iommu load bin/apps/sigma0.nul S0_DEFAULT \ verbose hostserial hostvga hostvesa script_start:1,1 \ hostkeyb:0,0x60,1,12,2 load bin/apps/rocknshine.nul load rocknshine.nulconfig <<EOF sigma0::mem:16 name::/s0/log name::/s0/timer name::/s0/fs/rom name::/s rom://bin/apps/rocknshine.nul rom://eurosys.slides EOF load eurosys.slides Tvorba CD:./nova-demo --iso Michal Sojka Novaboot InstallFest 2014 6 / 14
Možnosti ovládání cílových počítačů Qemu Michal Sojka Novaboot InstallFest 2014 7 / 14
Možnosti ovládání cílových počítačů Qemu Intel AMT Michal Sojka Novaboot InstallFest 2014 7 / 14
Možnosti ovládání cílových počítačů Qemu Intel AMT IP relay Michal Sojka Novaboot InstallFest 2014 7 / 14
Možnosti ovládání cílových počítačů Qemu Intel AMT IP relay Libovolné příkazy (reset, přesměrování výstupu) Michal Sojka Novaboot InstallFest 2014 7 / 14
Možnosti ovládání cílových počítačů Qemu Intel AMT IP relay Libovolné příkazy (reset, přesměrování výstupu) Ukázka PowerPC Michal Sojka Novaboot InstallFest 2014 7 / 14
Možnosti ovládání cílových počítačů Qemu Intel AMT IP relay Libovolné příkazy (reset, přesměrování výstupu) Ukázka PowerPC Lokální boot (spustí dhcpd a tftpd lokálně)./script --dhcp-tftp Michal Sojka Novaboot InstallFest 2014 7 / 14
Možnosti ovládání cílových počítačů Qemu Intel AMT IP relay Libovolné příkazy (reset, přesměrování výstupu) Ukázka PowerPC Lokální boot (spustí dhcpd a tftpd lokálně)./script --dhcp-tftp Více uživatelů si neleze do zelí Michal Sojka Novaboot InstallFest 2014 7 / 14
Ukázky použití Bisekce Linuxu #!/usr/bin/env novaboot EXITON=Starting GNOME Display Manager run make -j$(nproc) load arch/x86/boot/bzimage root=/dev/sda1 git bisect run../boot --target pc1 Michal Sojka Novaboot InstallFest 2014 8 / 14
Ukázky použití Průběžná integrace (CAN) User space gateway (non-blocking read-write) gw_latency [µs] Zoom 1m 3m 6m YTD 1y All From Jan 5, 2010 To Mar 1, 2014 110 100 90 Sat, 07 Apr 2012 23:30:41 v3.4-rc2 gw_latency [µs]: 111.894 µs 80 70 60 50 Jul '10 Jan '11 Jul '11 Jan '12 Jul '12 Jan '13 Jul '13 Jan '14 2011 2012 2013 2014 Highcharts.com Více na https://rtime.felk.cvut.cz/can/perf/. Michal Sojka Novaboot InstallFest 2014 9 / 14
Ukázky použití Testování instalátoru Debianu wget http://d-i.debian.org/daily-images/amd64/daily/\ hd-media/{vmlinuz,initrd.gz} (echo load vmlinuz console=ttys1; echo load initrd.gz) novaboot --target pc1 Michal Sojka Novaboot InstallFest 2014 10 / 14
Konfigurační soubory novabootu Může jich být víc např. ~/.novaboot a ~/project/.novaboot Definice cílových počítačů: $targets{pc1} = "--server=tftp.me.org:/srv/tftp/nbdir --grub2 --grub-prefix=nbdir"; Výchozí cílový počítač... Michal Sojka Novaboot InstallFest 2014 11 / 14
Příprava initramfs Projekt buildroot Ukázka modifikace startup skriptů Funguje i bez sítě benchmarkování Michal Sojka Novaboot InstallFest 2014 12 / 14
Plány do budoucna Podpora Intel AMT IDE-R Tvorba CD image s isolinux bootloaderem Podpora IPMI Michal Sojka Novaboot InstallFest 2014 13 / 14
Děkuji za pozornost! https://github.com/wentasah/novaboot Michal Sojka Novaboot InstallFest 2014 14 / 14
Děkuji za pozornost! https://github.com/wentasah/novaboot Otázky? Michal Sojka Novaboot InstallFest 2014 14 / 14