From 5a8f9ab77eb365fb9e3d98dde9bfa30f5e061896 Mon Sep 17 00:00:00 2001
From: Jan Altenberg <jan@bender.lan>
Date: Wed, 28 Apr 2010 12:44:27 +0200
Subject: - Added some stuff to cross development chapter - Bugfixes for sh
 programming handout

---
 .../cross-devel/pres_cross-devel_de.tex            | 158 ++++++++++++++++++++-
 1 file changed, 156 insertions(+), 2 deletions(-)

(limited to 'application-devel/cross-devel/pres_cross-devel_de.tex')

diff --git a/application-devel/cross-devel/pres_cross-devel_de.tex b/application-devel/cross-devel/pres_cross-devel_de.tex
index 39c59a3..844642a 100644
--- a/application-devel/cross-devel/pres_cross-devel_de.tex
+++ b/application-devel/cross-devel/pres_cross-devel_de.tex
@@ -77,6 +77,22 @@ Hello cross compiling world
 
 \section{Rootfilesystem}
 \subsection{Filesystem from scratch}
+\begin{frame}
+\frametitle{Komponenten des Zielsystems}
+\begin{overprint}
+\onslide <1>
+\begin{figure}[h]
+\centering
+\includegraphics[width=6cm]{images/target.png}
+\end{figure}
+\onslide <2>
+\begin{figure}[h]
+\centering
+\includegraphics[width=6cm]{images/target_highlight_rfs.png}
+\end{figure}
+\end{overprint}
+\end{frame}
+
 \begin{frame}[containsverbatim]
 \frametitle{Erstellen eines Rootfilesystems für die Zielarchitektur}
 1) Busybox
@@ -114,7 +130,7 @@ mknod dev/tty4 c 4 4
 3) Startscript(e) erstellen
 \begin{lstlisting}[language=bash]
 cd /tftpboot/nfsroot
-mkdir etc/rc.d
+mkdir etc/init.d
 vim etc/init.d/rcS
 \end{lstlisting}
 /etc/rc.d/rcS:
@@ -217,7 +233,145 @@ Freeing unused kernel memory: 208k init
 Please press Enter to activate this console.
 \end{verbatim}
 \end{frame}
-\subsubsection{Filesystem auf dem Target testen}
+
+\begin{frame}
+\frametitle{Congrats!!!}
+Ihr erstes eigenes Linux System!! :)
+\end{frame}
+
+\subsection{RFS um SSH erweitern}
+\begin{frame}
+\frametitle{dropbear}
+Dropbear ist eine schlanke SSH Server und Client Implementierung
+und wird daher recht häufig in Embedded Systemen verwendet.
+\begin{alertblock}{Vorteile}
+\begin{itemize}
+\item Einfach zu übersetzen
+\item Schlank / Wenig Footprint
+\item Einfach Konfiguration
+\end{itemize}
+\end{alertblock}
+\begin{alertblock}{Nachteile}
+\begin{itemize}
+\item Keine eigene SFTP Implementierung
+\end{itemize}
+\end{alertblock}
+\end{frame}
+
+\begin{frame}[containsverbatim]
+\frametitle{Dropbear übersetzen}
+\begin{lstlisting}[language=bash]
+$ ./configure --host=powerpc-linux-gnu \
+   --disable-zlib --prefix=/usr
+make
+# Als root
+make DESTDIR=/tftpboot/nfsroot install
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[containsverbatim]
+\frametitle{Dropbear: Benötigte Bibliotheken}
+\begin{lstlisting}[language=bash]
+# Schritt 1: libnss
+cp /path_to_my_libc/lib/libnss_* lib/
+# Schritt 2: It's your turn!
+\end{lstlisting}
+Aufgabe: Ermitteln der benötigten Bibliotheken von Dropbear
+und kopieren an die richtige Stelle im RFS.
+\end{frame}
+
+\begin{frame}[containsverbatim]
+\frametitle{Dropbear: Benötigte Bibliotheken / Lösung}
+\begin{lstlisting}[language=bash]
+$ powerpc-linux-gnu-objdump -x \
+/tftpboot/nfsroot/usr/sbin/dropbear | grep NEEDED
+  NEEDED               libutil.so.1
+  NEEDED               libcrypt.so.1
+  NEEDED               libc.so.
+$ cp /path_to_my_libc/libcrypt.so.1 \
+     /tftpboot/nfsroot/lib
+$ cp /path_to_my_libc/libutil.so.1 \
+     /tftpboot/nfsroot/lib
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[containsverbatim]
+\frametitle{RFS um SSH erweitern}
+Vorbereitungen:
+\begin{lstlisting}[language=bash]
+cd /tftpboot/nfsroot
+mknod dev/urandom c 1 9
+mknod dev/ptmx c 5 2
+mkdir root
+echo "root:x:0:0::/root:/bin/sh" >> etc/passwd
+echo "root:x:0:" >> etc/group
+mkdir dev/pts
+mkdir etc/dropbear
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[containsverbatim]
+\frametitle{Password für root setzen}
+\begin{lstlisting}[language=bash]
+qemu-system-ppc -nographic \
+-kernel images/vmlinux \
+-append "console=ttyS0 ip=dhcp root=/dev/nfs \
+nfsroot=10.0.2.2:/tftpboot/nfsroot" \
+-net nic -net user,hostfwd=tcp::12345-:22
+\end{lstlisting}
+\begin{lstlisting}[language=bash]
+# Im gebooteten System:
+passwd
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[containsverbatim]
+\frametitle{Dropbear: Startskript erweitern}
+\begin{lstlisting}[language=bash]
+vim /tftpboot/nfsroot/etc/init.d/rcS
+\end{lstlisting}
+\begin{lstlisting}[language=bash,basicstyle=\ttfamily\fontsize{7}{7}\selectfont]
+[...]
+
+mount devpts /dev/pts -t devpts
+
+if [ ! -f /etc/dropbear/dropbear_rsa_host_key ]
+then
+  dropbearkey -type rsa -f /etc/dropbear/dropbear_rsa_host_key
+fi
+
+if [ ! -f /etc/dropbear/dropbear_dss_host_key ]
+then
+  dropbearkey -type dss -f /etc/dropbear/dropbear_dss_host_key
+fi
+
+/usr/sbin/dropbear
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[containsverbatim]
+\frametitle{SSH testen}
+\begin{enumerate}
+\item Qemu session starten:
+\begin{lstlisting}[language=bash]
+qemu-system-ppc -nographic \
+-kernel images/vmlinux \
+-append "console=ttyS0 ip=dhcp root=/dev/nfs \
+nfsroot=10.0.2.2:/tftpboot/nfsroot" \
+-net nic -net user,hostfwd=tcp::12345-:22
+\end{lstlisting}
+\item Vom Host-System:
+\begin{lstlisting}[language=bash]
+ssh -p 12345 root@localhost
+\end{lstlisting}
+\begin{verbatim}
+root@localhost's password: 
+#
+\end{verbatim}
+\end{enumerate}
+\end{frame}
+
+\subsection{Filesystem auf dem Target testen}
 \begin{frame}
 \frametitle{Auf dem Target}
 HAND'S ON! :)
-- 
cgit v1.2.3

