This commit is contained in:
Daniel Schubert 2019-02-18 09:13:03 +01:00
parent 22317981d8
commit 02215ef9d0
9 changed files with 304 additions and 86 deletions

21
12.html
View File

@ -397,28 +397,7 @@ PasswordAuthentication no
<img src="img/screenshot-lynx.png">
</div>
</section>
<section>
<ul>
<li class="fragment ">samba</li>
<li class="fragment ">mysql</li>
<li class="fragment ">apache</li>
<li class="fragment ">kernelmodule</li>
<li class="fragment ">kernel kompilieren</li>
</ul>
</section>
<section>
Übungen
C 11.11 [3] Besorgen Sie sich eine geeignete Datei (etwa ein größeres tar -Ar-
chiv mit Quellcode, vielleicht für den Linux-Kernel) und komprimieren Sie
sie jeweils mit gzip , bzip2 und xz . Messen Sie dabei die Ausführungszeit
durch ein vorgesetztes time . Wie verhalten die Laufzeiten und die Kompri-
mierungsraten sich zueinander?
C 11.12 [2] Experimentieren Sie mit der Datei aus der vorigen Aufgabe und
vergleichen Sie die Laufzeit und die Größe des Resultats für xz mit verschie-
denen Effizienz-Optionen. Was ist der Unterschied zwischen -1 und -6 und
zwischen -6 und -9 ?
</section>
</div>
</div>

170
14.html
View File

@ -49,23 +49,179 @@
</aside>
</section>
<section data-transition="slide" data-background="#b5533c" data-background-transition="convex"> <h3>C und C-Compiler</h3> </section>
<section data-transition="slide" data-background="#b5533c" data-background-transition="convex">
<h3>der Linux Kernel</h3>
<h4>Kernel Module</h4>
<section>
Ein einfaches C-Programm
<pre><code class="c">
#include&lt;stdio.h&gt;
int main() {
printf("Hello World\n");
return 0;
}
</code></pre>
</section>
<section>
https://github.com/usrbinnc/netcat-cpi-kernel-module
<img src="img/Compiler.gif">
</section>
<section>
<p>Wir benötigen:
<ul>
<li class="fragment ">einen C-Compiler</li>
<li class="fragment ">diverse Bibliotheken</li>
<li class="fragment "><pre><code class="bash">~$ sudo apt install build-essential</code></pre></li>
<li class="fragment"><a href="https://packages.debian.org/stretch/build-essential">https://packages.debian.org/stretch/build-essential</a></li>
</ul>
</section>
<section>
Code compilieren:
<pre><code class="bash">~$ gcc hello.c -o hello
# Programm ausführen
~$ ./hello
</code></pre>
</section>
<section style="font-size: .6em">
<h3>Begriffe</h3>
<table>
<tr>
<td>C</td>
<td>Programmiersprache - Der Linux-Kernel ist in „C“ geschrieben</td>
</tr>
<tr>
<td>Compiler</td>
<td>Übersetzt den Quellcode in Maschinencode</td>
</tr>
<tr>
<td>gcc</td>
<td>Gnu C-Compiler Collection</td>
</tr>
<tr>
<td>Bibliotheken</td>
<td>Fertige Funktionen, die in andere Programme eingebunden werden ( unter Windoes oft *.dll-Dateien )</td>
</tr>
<tr>
<td>make</td>
<td>arbeitet Regeln und Abhängigkeitsdefinitionen in „Makefile“ ab -> startet den gcc</td>
</tr>
</table>
</section>
<section data-transition="slide" data-background="#b5533c" data-background-transition="convex"> <h3>der Linux Kernel</h3></section>
<section> <img src="img/Kernel_Layout.svg.png"> </section>
<section>
<p>Befehle
<ul>
<li class="fragment ">lsusb</li>
<li class="fragment ">lscpu</li>
<li class="fragment ">lspci</li>
<li class="fragment ">lsmem</li>
<li class="fragment ">lshw</li>
<h5>Kernelmodule</h5>
<li class="fragment ">lsmod</li>
<li class="fragment ">modprobe</li>
</ul>
</section>
<section>
<h4>Was zum?? ist ein Kernel Modul??</h4>
<ul>
<li class="fragment ">ein Stück kompilierten Codes, der zur Laufzeit in den Kernel eingefügt werden kann ( zb Treiber )</li>
<li class="fragment ">Erweitert d. Funktionalität d. Kernels</li>
<li class="fragment ">Reboot de Systems nicht nötig</li>
<li class="fragment ">Ohne Module müsste man Monolithische Kernel bauen und neue Funktionalität direkt ins Kernel Image integrieren </li>
<li class="fragment ">-> Kernel Image wird grösser sein</li>
</ul>
</section>
<section>
<ul>
<li class="fragment ">Die meisten Hardwarekomponenten in Ihrem Computer haben einen zugehörigen Treiber.</li>
<li class="fragment">Ein großer Teil eines laufenden Kernels ist Treibercode.</li>
<li class="fragment">Ein Treiber kann statisch in die Kerneldatei auf der Festplatte eingebaut werden.</li>
</ul>
</section>
<section>
<h3>Wir bauen ein Kernel-Modul</h3>
</section>
<section>
<p>Der Quellcode mit Beschreibung
<a href="https://github.com/usrbinnc/netcat-cpi-kernel-module">https://github.com/usrbinnc/netcat-cpi-kernel-module</a>
</section>
<section>
<h3>wir bauen uns einen Kernel</h3>
<ol>
<li class="fragment">Download der Kernel Quellen </li>
<li class="fragment">Installieren der build tools</li>
<li class="fragment">Kernel bauen ;-)</li>
</ol>
</section>
<section>
<p>Aktuelle Kernel Quellen herunterladen
<a href="https://www.kernel.org">https://www.kernel.org</a>
</section>
<section>
<pre><code class="bash">
$ sudo apt-get install build-essential \
libncurses5-dev gcc libssl-dev bc
# für XXXXXXX entspr. Kernel Version einsetzen!
$ cd ~/Downloads
$ tar xvf linux-XXXXXXX.tar.xz
$ cd linux-XXXXXXX
$ cp /boot/config-4.13-XXXXXXX .config
$ make menuconfig
</code></pre>
</section>
<section><img src="img/menu-1.png"></section>
<section>Folgendes bitte zu Hause probieren::<pre><code class="bash"># Das dauert jetzt....
# ca 90min auf einem core i3 mit 2.4 MhZ
# -j 4 -> Nutze 4 Kerne
~$ make -j4 deb-pkg
#Kernel installieren:
~$ sudo dpkg -i ../linux-*.deb
# reboot -> neuen Kernel wählen
</code></pre> </section>
<section>
<h3>grub - Grand Unified Boot Loader</h3>
<ul style="font-size: .6em"><li>Liest verschiedene <a href="/wiki/Dateisystem" title="Dateisystem">Dateisysteme</a>:
<ul><li>GRUB Legacy (bis GRUB 0.9x): <a href="/wiki/Ext2" title="Ext2">ext2</a>, <a href="/wiki/Ext3" title="Ext3">ext3</a>, <a href="/wiki/Unix_File_System" title="Unix File System">UFS</a>, <a href="/wiki/Unix_File_System" title="Unix File System">UFS2</a>, <a href="/wiki/Reiser_File_System" title="Reiser File System">ReiserFS</a>, <a href="/wiki/File_Allocation_Table" title="File Allocation Table">FAT</a>, <a href="/wiki/Journaled_File_System" title="Journaled File System">JFS</a>, <a href="/wiki/Minix-Dateisystem" title="Minix-Dateisystem">Minix</a>, <a href="/wiki/Berkeley_Fast_File_System" class="mw-redirect" title="Berkeley Fast File System">FFS</a>, <a href="/wiki/XFS_(Dateisystem)" title="XFS (Dateisystem)">XFS</a>, mit distributionsspezifischen Erweiterungen auch weitere;</li>
<li>GRUB2 (ab GRUB 1.9x) zusätzlich <a href="/wiki/Ext4" title="Ext4">ext4</a>, <a href="/wiki/ZFS_(Dateisystem)" title="ZFS (Dateisystem)">ZFS</a> und <a href="/wiki/Btrfs" title="Btrfs">btrfs</a>.</li></ul></li>
<li>Bootet verschiedene Betriebssysteme per Auswahlmenü und automatischem Zeitablauf (Linux und Windows als <a href="/wiki/Multi-Boot-System" title="Multi-Boot-System">Multi-Boot-System</a>).</li>
<li>Bootet Betriebssysteme von Festplatten, Disketten, CD- und DVD-Laufwerken sowie Flash-Disks.</li>
<li>Verfügt über einen eingebauten <a href="/wiki/Kommandozeileninterpreter" title="Kommandozeileninterpreter">Kommandozeileninterpreter</a> (Shell).</li>
<li>Ist relativ einfach konfigurierbar (Farben, Hintergrundbild, Struktur usw.).</li>
<li>Kann mit einem <a href="/wiki/Passwort" title="Passwort">Passwort</a> gesichert werden.</li>
<li>Kann über <a href="/wiki/Trivial_File_Transfer_Protocol" title="Trivial File Transfer Protocol">TFTP</a> bereitgestellte <a href="/wiki/Linux_(Kernel)" title="Linux (Kernel)">Linux-Kernel</a> booten.</li></ul>
</section>
<section>
<ul>
<li class="fragment ">mysql</li>
<li class="fragment ">LAMP</li>
<li class="fragment ">kernelmodule</li>
<li class="fragment ">kernel kompilieren</li>
<li class="fragment ">Multimedia</li>
<li class="fragment ">Gimp</li>
</ul>

BIN
beispiele/14/a.out Executable file

Binary file not shown.

5
beispiele/14/hello.c Normal file
View File

@ -0,0 +1,5 @@
#include<stdio.h>
int main() {
printf("Hello World\n");
return 0;
}

0
deploy.sh Normal file → Executable file
View File

BIN
img/Compiler.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

BIN
img/Kernel_Layout.svg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
img/menu-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

View File

@ -9,29 +9,35 @@
<body>
<div class="ui container">
<div class="ui segments">
<div class="ui segment centered">
<h1><i class="icon linux"></i>Linux Basics</h1>
</div>
<div class="ui segment centered"> <h1><i class="icon linux"></i>Linux Basics</h1> </div>
<div class="ui segment">
<h2>Präsentationen</h2>
<ol>
<li><a href="1.html">Debian Installation, grafische Oberflächen</a></li>
<li><a href="2.html">Datei System, apt, Hilfe</a></li>
<li><a href="3.html">Bash Einführung, erste Befehle</a></li>
<li><a href="4.html">Bash Scripting Einführung</a></li>
<li><a href="5.html">Bash Scripting Fortsetzung</a></li>
<li><a href="6.html">vim / emacs</a></li>
<li><a href="7.html">Systemverwaltung</a></li>
<li><a href="8.html">Systemd</a></li>
<li><a href="9.html">Dateisysteme</a></li>
<li><a href="gpg.html">GnuPG</a></li>
<li><a href="10.html">Netzwerke</a></li>
<li><a href="11.html">ssh rsync scp</a></li>
<li><a href="12.html">Netzwerk Programme</a></li>
<li><a href="13.html">Samba</a></li>
<div class="ui two column grid">
<div class="column" >
<ol>
<li><a href="1.html">Debian Installation, grafische Oberflächen</a></li>
<li><a href="2.html">Datei System, apt, Hilfe</a></li>
<li><a href="3.html">Bash Einführung, erste Befehle</a></li>
<li><a href="4.html">Bash Scripting Einführung</a></li>
<li><a href="5.html">Bash Scripting Fortsetzung</a></li>
<li><a href="6.html">vim / emacs</a></li>
<li><a href="7.html">Systemverwaltung</a></li>
<li><a href="8.html">Systemd</a></li>
<li><a href="9.html">Dateisysteme</a></li>
<li><a href="gpg.html">GnuPG</a></li>
</ol>
</div>
</ol>
<div class="column" >
<ol start="11">
<li><a href="10.html">Netzwerke</a></li>
<li><a href="11.html">ssh rsync scp</a></li>
<li><a href="12.html">Netzwerk Programme</a></li>
<li><a href="13.html">Samba</a></li>
<li><a href="14.html">der Kernel</a></li>
</ol>
</div>
</div>
<div class="ui left aligned padded grid">
<div class="center aligned three column row">
@ -62,44 +68,116 @@
</div>
<div class="ui segment">
<h2><i class="icon linkify"></i>Links</h2>
<ul>
<LI><a href="https://www.debian.org" target="_blank">Debian.org</a></LI>
<li><a href="https://wiki.ubuntuusers.de" target="_blank">wiki.ubunutuusers.de</a></li>
<h3>bash</h3>
<li><a href="http://www.gnu.org/software/bash/manual/bashref.html" target="_blank">GNU Bash Reference manual</a></li>
<li><a href="https://ss64.com/bash/" target="_blank">Umfassende Bash Referenz mit Suche</a></li>
<li><a href="https://www.shellbefehle.de/befehle/" target="_blank">Shell Befehle</a></li>
<li><a href="https://wiki.archlinux.de/title/Bash-Prompt_anpassen" target="_blank">Bash Prompt anpassen </a></li>
<li><a href="https://github.com/agarrharr/awesome-cli-apps" target="_blank">Awesome CLI Apps</a></li>
<li><a href="https://github.com/alebcay/awesome-shell" target="_blank">Awesome Shell </a></li>
<li><a href="https://en.wikibooks.org/wiki/Bash_Shell_Scripting/Whiptail">Menues mit whiptail</a></li>
<li><a href="http://www.gnu.org/software/bash/manual/html_node/Bash-Conditional-Expressions.html" target="_blank">Conditional Expressions für [ ] / test</a></li>
<li><a href="https://devhints.io/bash" target="_blank">bash scripting Cheat Sheet</a></li>
<h3>reguläre Ausdrücke</h3>
<li><a href="https://regexr.com/" target="_blank">RegExr.com - Reguläre Ausdrücke testen</a>
<li><a href="http://rubular.com/" target="_blank">rubular.com - Reguläre Ausdrücke testen</a>
<h3>vim</h3>
<li><a href="https://danielmiessler.com/study/vim/" target="_blank">>Gutes VIM Tutorial</a></li>
<li><a href="https://devhints.io/vim" target="_blank">VIM Cheat Sheet</a></li>
<li><a href="http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html" target="_blank">Vim Cheatsheet zum drucken</a></li>
<h3>emacs</h3>
<li><a href="https://www.gnu.org/software/emacs/">Offizielle emacs Seite</a></li>
<li><a href="http://ergoemacs.org/emacs/emacs_basics.html" target="_blank">Emacs Basics</a></li>
<li><a href="https://www.gnu.org/software/emacs/refcards/pdf/de-refcard.pdf" target="_blank">GNU Emacs Referenzkarte</a>
<h3>systemd</h3>
<li><a href="https://wiki.archlinux.org/index.php/Systemd" target="_blank">Arch Wiki - Systemd</a></li>
<li><a href="https://wiki.debian.org/systemd" >Debian.org - Systemd</a></li>
<h3>Netzwerk Einstellungen</h3>
<li><a href="https://wiki.debian.org/NetworkConfiguration#Setting_up_an_Ethernet_Interface">https://wiki.debian.org/NetworkConfiguration</a></li>
<li><a href="https://wiki.ubuntuusers.de/interfaces/">wikiw.ubuntuusers.de</a></li>
<h3>diverse</h3>
<li><a href="ftp://ftp.gwdg.de/pub/linux/knoppix/dvd/">Knoppix</a></li>
<li><a href="https://wiki.archlinux.de/title/Image-Erstellung_mit_dd">Nutzung von <code>dd</code> </a></li>
<li><a href="https://wiki.ubuntuusers.de/Screen/">Screen bei wiki.ubunutuusers.de</a></li>
<li><a href="https://www.gnu.org/software/screen/manual/screen.html">Screen bei gnu.org</a></li>
<h3>ssh</h3>
<li><a href="https://man.openbsd.org/sshd_config.5">sshd config manual</a></li>
</ul>
<div class="ui three column very relaxed grid">
<div class="column">
<div class="ui segment">
<div class="content"> <div class="header">Allgemein</div> </div>
<div class="content">
<ul>
<LI><a href="https://www.debian.org" target="_blank">Debian.org</a></LI>
<li><a href="https://wiki.ubuntuusers.de" target="_blank">wiki.ubunutuusers.de</a></li>
</ul>
</div>
</div>
<div class="ui segment">
<div class="content"> <div class="header">bash</div> </div>
<div class="content">
<ul>
<li><a href="http://www.gnu.org/software/bash/manual/bashref.html" target="_blank">GNU Bash Reference manual</a></li>
<li><a href="https://ss64.com/ba1sh/" target="_blank">Umfassende Bash Referenz mit Suche</a></li>
<li><a href="https://www.shellbefehle.de/befehle/" target="_blank">Shell Befehle</a></li>
<li><a href="https://wiki.archlinux.de/title/Bash-Prompt_anpassen" target="_blank">Bash Prompt anpassen </a></li>
<li><a href="https://github.com/agarrharr/awesome-cli-apps" target="_blank">Awesome CLI Apps</a></li>
<li><a href="https://github.com/alebcay/awesome-shell" target="_blank">Awesome Shell </a></li>
<li><a href="https://en.wikibooks.org/wiki/Bash_Shell_Scripting/Whiptail">Menues mit whiptail</a></li>
<li><a href="http://www.gnu.org/software/bash/manual/html_node/Bash-Conditional-Expressions.html" target="_blank">Conditional Expressions für [ ] / test</a></li>
<li><a href="https://devhints.io/bash" target="_blank">bash scripting Cheat Sheet</a></li>
</ul>
</div>
</div>
<div class="ui segment">
<div class="content"> <div class="header"><strong>Reguläre Ausdrücke</strong></div> </div>
<div class="content">
<ul>
<li><a href="https://regexr.com/" target="_blank">RegExr.com - Reguläre Ausdrücke testen</a>
<li><a href="http://rubular.com/" target="_blank">rubular.com - Reguläre Ausdrücke testen</a>
</li>
</div>
</div>
</div>
<div class="column">
<div class="ui segment">
<div class="content"> <div class="header">vim</div> </div>
<div class="content">
<ul>
<li><a href="https://danielmiessler.com/study/vim/" target="_blank">Gutes VIM Tutorial</a></li>
<li><a href="https://devhints.io/vim" target="_blank">VIM Cheat Sheet</a></li>
<li><a href="http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html" target="_blank">Vim Cheatsheet zum drucken</a></li>
</ul>
</div>
</div>
<div class="ui segment">
<div class="content"> <div class="header">emacs</div> </div>
<div class="content">
<ul>
<li><a href="https://www.gnu.org/software/emacs/">Offizielle emacs Seite</a></li>
<li><a href="http://ergoemacs.org/emacs/emacs_basics.html" target="_blank">Emacs Basics</a></li>
<li><a href="https://www.gnu.org/software/emacs/refcards/pdf/de-refcard.pdf" target="_blank">GNU Emacs Referenzkarte</a>
</ul>
</div>
</div>
<div class="ui segment">
<div class="content"> <div class="header">systemd</div> </div>
<div class="content">
<UL>
<li><a href="https://wiki.archlinux.org/index.php/Systemd" target="_blank">Arch Wiki - Systemd</a></li>
<li><a href="https://wiki.debian.org/systemd" >Debian.org - Systemd</a></li>
</UL>
</div>
</div>
</div>
<div class="column">
<div class="ui segment">
<div class="content"> <div class="header">Netzwerk Einstellungen</div> </div>
<div class="content">
<ul>
<li><a href="https://wiki.debian.org/NetworkConfiguration#Setting_up_an_Ethernet_Interface">https://wiki.debian.org/</a></li>
<li><a href="https://wiki.ubuntuusers.de/interfaces/">wikiw.ubuntuusers.de</a></li>
</ul>
</div>
</div>
<div class="ui segment">
<div class="content"> <div class="header">diverse</div> </div>
<div class="content">
<ul>
<li><a href="ftp://ftp.gwdg.de/pub/linux/knoppix/dvd/">Knoppix</a></li>
<li><a href="https://wiki.archlinux.de/title/Image-Erstellung_mit_dd">Nutzung von <code>dd</code> </a></li>
<li><a href="https://wiki.ubuntuusers.de/Screen/">Screen bei wiki.ubunutuusers.de</a></li>
<li><a href="https://www.gnu.org/software/screen/manual/screen.html">Screen bei gnu.org</a></li>
</ul>
</div>
</div>
<div class="ui segment">
<div class="content"><div class="header">ssh</div></div>
<div class="content">
<ul>
<li><a href="https://man.openbsd.org/sshd_config.5">sshd config manual</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>