diff options
| author | Jan Altenberg <jan@bender.lan> | 2010-04-28 12:44:27 +0200 |
|---|---|---|
| committer | Jan Altenberg <jan@bender.lan> | 2010-04-28 12:44:27 +0200 |
| commit | 5a8f9ab77eb365fb9e3d98dde9bfa30f5e061896 (patch) | |
| tree | 19561790a1abd3333c3d5653094e8447e978a567 /application-devel | |
| parent | 3d50f4f5281e94b90ac8fd0427d45a2023bc352f (diff) | |
- Added some stuff to cross development chapter
- Bugfixes for sh programming handout
Diffstat (limited to 'application-devel')
| -rw-r--r-- | application-devel/cross-devel/images/target.png | bin | 0 -> 5916 bytes | |||
| -rw-r--r-- | application-devel/cross-devel/images/target_highlight_rfs.png | bin | 0 -> 6150 bytes | |||
| -rw-r--r-- | application-devel/cross-devel/pres_cross-devel_de.tex | 158 |
3 files changed, 156 insertions, 2 deletions
diff --git a/application-devel/cross-devel/images/target.png b/application-devel/cross-devel/images/target.png Binary files differnew file mode 100644 index 0000000..9ce89ef --- /dev/null +++ b/application-devel/cross-devel/images/target.png diff --git a/application-devel/cross-devel/images/target_highlight_rfs.png b/application-devel/cross-devel/images/target_highlight_rfs.png Binary files differnew file mode 100644 index 0000000..2238d68 --- /dev/null +++ b/application-devel/cross-devel/images/target_highlight_rfs.png 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! :) |
