summaryrefslogtreecommitdiff
path: root/application-devel
diff options
context:
space:
mode:
authorJan Altenberg <jan@bender.lan>2010-04-28 12:44:27 +0200
committerJan Altenberg <jan@bender.lan>2010-04-28 12:44:27 +0200
commit5a8f9ab77eb365fb9e3d98dde9bfa30f5e061896 (patch)
tree19561790a1abd3333c3d5653094e8447e978a567 /application-devel
parent3d50f4f5281e94b90ac8fd0427d45a2023bc352f (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.pngbin0 -> 5916 bytes
-rw-r--r--application-devel/cross-devel/images/target_highlight_rfs.pngbin0 -> 6150 bytes
-rw-r--r--application-devel/cross-devel/pres_cross-devel_de.tex158
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
new file mode 100644
index 0000000..9ce89ef
--- /dev/null
+++ b/application-devel/cross-devel/images/target.png
Binary files differ
diff --git a/application-devel/cross-devel/images/target_highlight_rfs.png b/application-devel/cross-devel/images/target_highlight_rfs.png
new file mode 100644
index 0000000..2238d68
--- /dev/null
+++ b/application-devel/cross-devel/images/target_highlight_rfs.png
Binary files differ
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! :)