diff options
Diffstat (limited to '2019-opencampbr/pres.tex')
-rw-r--r-- | 2019-opencampbr/pres.tex | 221 |
1 files changed, 221 insertions, 0 deletions
diff --git a/2019-opencampbr/pres.tex b/2019-opencampbr/pres.tex new file mode 100644 index 0000000..1018672 --- /dev/null +++ b/2019-opencampbr/pres.tex @@ -0,0 +1,221 @@ +\documentclass{beamer} +\usepackage{lmodern} +\usepackage[czech]{babel} +\usepackage[utf8x]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{textpos} +\usepackage{tikz,calc} +\usepackage{graphicx} +\usepackage{wrapfig} +\usepackage{color} +\usepackage{mathtools} +\usepackage{hyperref} +\usepackage{epstopdf} +\usepackage{amsmath} +\usepackage{minted} +\hypersetup{ + colorlinks, + citecolor=black, + filecolor=black, + linkcolor=black, + urlcolor=black +} +\usepackage{pdflscape} + +\input{theme/theme.tex} + +\title{Automatické aktualizace\\ A proč Turris Updater není APT} +\author{Karel Kočí} +\date{13.4.2019} + +\begin{document} + +\input{theme/title.tex} + +\begin{frame}{Turris router ve zkratce} + \begin{columns}[T] + \begin{column}[T]{5cm} + \begin{center} + \includegraphics[width=1cm]{../2018-opencampbr/turris-logo.png}\\ + \end{center} + \begin{itemize} + \item Již tři routery\\ (1.x, Omnia, Mox) + \item Výkonný hardware + \item Založené na OpenWRT + \item Sběr dat, dynamický firewall, rozhraní Foris + \item \bf Automatické aktualizace + \end{itemize} + \end{column} + \begin{column}[T]{5cm} + \center + \includegraphics[width=5cm]{../2018-opencampbr/turris_omnia.png}\\ + \includegraphics[width=3cm]{mox-board-a.jpg} + \end{column} + \end{columns} +\end{frame} + +\begin{frame}{Proč neaktualizovat?} + \center \huge Protože se to rozbije! +\end{frame} + +\begin{frame}{Proč aktualizovat? A proč automaticky?} + \begin{itemize} + \item Záplaty a bezpečnostní opravy + \item Oprava chyb + \item Nové funkce + \end{itemize} + \vspace{1cm} + \begin{itemize} + \item Včasná aplikace bezpečnostních oprav + \item Nižší nároky na administraci + \end{itemize} +\end{frame} + +\begin{frame}{Různé implementace aktualizací} + \begin{itemize} + \item System reflash (OpenWRT, většina embedded světa) + \item Offline update (MS Windows) + \item Runtime update (Většina Linux distribucí) + \item Automatic runtime update + \end{itemize} +\end{frame} + +\begin{frame}{Výzvy automatických aktualizací} + \begin{itemize} + \item Není admin kterého by jste oslovili + \item Update nesmí neprojít na problému který nezanesl uživatel + \item Update nesmí svým konáním poškodit systém + \end{itemize} +\end{frame} + +\begin{frame}{Naše řešení} + \begin{itemize} + \item Používáme OPKG balíčky + \item Máme předpis toho co má být v systému na našem serveru + \item Uživatel může do předpisu přidávat pravidla + \item V průběhu updatu je nutné občas provést reboot + \item Update se může provádět na několikrát (update updateru a zbytku + systému) + \item Je možné označit balíčky které mění ABI a způsobit reinstalaci + dalších balíčků + \item Nutná podpora obnovy update procesu po rebootu nebo pádu (journal) + \end{itemize} +\end{frame} + + +\begin{frame}{Balíčky a jejich meta informace} + \begin{itemize} + \item Soubory k nainstalování + \item Meta-informace + \begin{itemize} + \item Verze + \item Závislosti (depends, conflicts, provides) + \item \{post,pre\}-\{install,rm\} skripty + \item a další.. + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame}{OPKG pro automatické aktualizace} + \begin{itemize} + \item Nekontroluje kolize mezi soubory mezi balíčky + \item Má problém s případy jako náhrada složky souborem a obráceně + \item Sebevražedný (odstraní si svoji závislost a spadne, není transakční) + \item Nechává po sobě systém v nekonzistentním stavu po pádu + \end{itemize} + Prostě naprosto nevyhovující +\end{frame} + +\begin{frame}{APT pro automatické aktualizace} + \begin{itemize} + \item Ask first -- do later + \item Pracuje výhradně lokálně + \item Neumí řešit stavy kdy je nutný reboot + \item Není jednoduše možné oddělit preference distribuce od preferencí + uživatele + \end{itemize} + Dalo by se, ale možná stejně práce jako napsat vše od znovu +\end{frame} + +\begin{frame}{Introducing: Updater(-ng)} + \begin{itemize} + \item Lua předpis/konfigurace z více zdrojů + \item update ve formě transakce (instalace souborů naráz a pak až + spouštění skriptů) + \item Konfigurace může určovat další závislosti, reboot, replan + \item Schopnost přeinstalovat rekurzivně balíčky + \item Dynamická konfigurace rozhodující se podle stavu systému + \item Silná kontrola konfliktů + \item Až otravná kontrola minimálních závislostí + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Updater-ng konfigurace} + \begin{minted}[frame=lines]{lua} +Install('updater-ng', 'updater-supervisor', + { critical = true }) +Package('updater-ng', { replan = 'finished' }) +Package('l10n_supported', { replan = 'finished' }) +\end{minted} + + \begin{minted}[frame=lines]{lua} +if board == "mox" then + Install("mox-otp") +elseif board == "omnia" then + Install("rainbow-omnia") + Install("libatsha204") +elseif board == "turris1x" then + Install("rainbow") + Install("libatsha204", "update_mac") +end +\end{minted} +\end{frame} + +\begin{frame}[fragile]{Jak updater-ng funguje?} + \begin{enumerate} + \item Spustí konfigurační skripty (Lua program) + \item Stáhne indexy repositářů + \begin{minted}[frame=lines]{lua} +Repository("turris-core", "../packages/omnia/core") +\end{minted} + \item Z požadavků z konfigurace a balíků z repositářů sestaví požadovaný + stav systému + \begin{minted}[frame=lines]{lua} +Install("base-files", "busybox") +Unistall("htop") +\end{minted} + \item Sestaví seznam změn pro dosažení cílového stavu + \item Stáhne potřebné balíky + \item Provede změny v systému + \end{enumerate} +\end{frame} + +\begin{frame}[fragile]{Je tedy vše růžové?} + Ne, uživatel si vždy najde cestu.. + + \begin{itemize} + \item Uživatelé mají plný přístup + \item Ne všichni "konfiguruní" jak se má + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Kam dál?} + \begin{itemize} + \item Vyšší kontrola uživatele a kam sahá (healthcheck) + \item Updater může být dokonalý, ale pokud selže programátor softwaru tak + nic nenadělá (testování a testování) + \item Plná náhrada OPKG? + \end{itemize} +\end{frame} + +\begin{frame} + \includegraphics[height=0.4cm]{csnog.png}\\ + CSNOG 2019: 28.–29. května 2019, Brno + \vspace{2cm} + + \Large Děkuji za pozornost. Otázky?\\ + \vspace{0.5cm} + \small \url{git.cynerd.cz/presentations/about/} +\end{frame} + +\end{document} |