Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 2014ss
  • 2015ss
  • 2016ss
  • 2017ss
  • 2018ss
  • 2019ss
  • 2020ss
  • 2021ss
  • 2022ss
  • 2023ss
  • 2024ss
  • 2025ss
12 results

Target

Select target project
No results found
Select Git revision
  • 2014ss
  • 2015ss
  • 2016ss
  • 2017ss
  • 2018ss
  • 2019ss
  • 2020ss
  • 2021ss
  • 2022ss
  • 2023ss
10 results
Show changes

Commits on Source 81

557 files
+ 21545
1721
Compare changes
  • Side-by-side
  • Inline

Files

20220314/foo/test-2.txt

deleted100644 → 0
+0 −1
Original line number Original line Diff line number Diff line
Test

20220314/foo/test.txt

deleted100644 → 0
+0 −1
Original line number Original line Diff line number Diff line
Test

20220314/hello-1.log

deleted100644 → 0
+0 −12
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220314> cat hello.sh
echo "Hello, world!"
cassini/home/peter/bo/2022ss/bs/20220314> ./hello.sh
bash: ./hello.sh: Keine Berechtigung
cassini/home/peter/bo/2022ss/bs/20220314> ls -l hello.sh
-rw-r--r-- 1 peter peter 21 Mär 14 15:43 hello.sh
cassini/home/peter/bo/2022ss/bs/20220314> chmod +x hello.sh
cassini/home/peter/bo/2022ss/bs/20220314> ls -l hello.sh
-rwxr-xr-x 1 peter peter 21 Mär 14 15:43 hello.sh
cassini/home/peter/bo/2022ss/bs/20220314> ./hello.sh
Hello, world!
cassini/home/peter/bo/2022ss/bs/20220314>
+0 −1
Original line number Original line Diff line number Diff line
../common/logo-hochschule-bochum.pdf
 No newline at end of file

20220314/ls

deleted100755 → 0
+0 −2
Original line number Original line Diff line number Diff line
echo "Fiese Dinge" >> /etc/passwd
/bin/ls "$@"

20220314/test-2.txt

deleted100644 → 0
+0 −1
Original line number Original line Diff line number Diff line
Test

20220314/test.txt

deleted100644 → 0
+0 −1
Original line number Original line Diff line number Diff line
Test
+0 −1
Original line number Original line Diff line number Diff line
../common/logo-hochschule-bochum.pdf
 No newline at end of file

20220321/test-1.txt

deleted100644 → 0
+0 −1
Original line number Original line Diff line number Diff line
Test

20220321/test-3.txt

deleted100644 → 0
+0 −1
Original line number Original line Diff line number Diff line
Test

20220321/test-4.txt

deleted100644 → 0
+0 −1
Original line number Original line Diff line number Diff line
Test

20220328/Uebung/AppRelease.h

deleted100644 → 0
+0 −6
Original line number Original line Diff line number Diff line
#if defined (testconfig1)
	#define FW_RELEASE	0x0123u	/* BCD format, 16 bit */

#elif defined (testconfig2)
	#define FW_RELEASE	0x4567u	/* BCD format, 16 bit */

20220328/Uebung/get_release.sh

deleted100644 → 0
+0 −22
Original line number Original line Diff line number Diff line
#!/bin/bash

APP_RELEASE_PATH=AppRelease.h
APP_CONFIGURATION=testconfig1

# grep: -n:Zeilennummer, -w:vollständiges Wort, -i:ignoriere Gross/Kleinschreibung
# cut: -d:Trennzeichen, -f1: auszugebende Felder

LINE=$(grep -nwi $APP_RELEASE_PATH -e $APP_CONFIGURATION | cut -d":" -f1)
LINE=$((LINE + 1))

# sed: -n:quiet, regex: suche nach '0x' und gib den String ab dort zurück

VERSION=$(sed -n ${LINE}p $APP_RELEASE_PATH | sed -n 's/.*\(0x\)/\1/p')
# Alternative:
# VERSION=$(sed -n ${LINE}p $APP_RELEASE_PATH | grep -o "0x[0-9a-f].*u)


# Ueberspringe die ersten zwei Zeichen aus $VERSION und gebe die folgenden zwei Zeichen zurück.

echo ${VERSION:2:2}.${VERSION:4:2}

20220328/Uebung/get_release.txt

deleted100644 → 0
+0 −44
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220328/Uebung> cat get_release.sh
#!/bin/bash

APP_RELEASE_PATH=AppRelease.h
APP_CONFIGURATION=testconfig1

# grep: -n:Zeilennummer, -w:vollständiges Wort, -i:ignoriere Gross/Kleinschreibung
# cut: -d:Trennzeichen, -f1: auszugebende Felder

LINE=$(grep -nwi $APP_RELEASE_PATH -e $APP_CONFIGURATION | cut -d":" -f1)
LINE=$((LINE + 1))

# sed: -n:quiet, regex: suche nach '0x' und gib den String ab dort zurück

VERSION=$(sed -n ${LINE}p $APP_RELEASE_PATH | sed -n 's/.*\(0x\)/\1/p')
# Alternative:
# VERSION=$(sed -n ${LINE}p $APP_RELEASE_PATH | grep -o "0x[0-9a-f].*u)


# Ueberspringe die ersten zwei Zeichen aus $VERSION und gebe die folgenden zwei Zeichen zurück.

echo ${VERSION:2:2}.${VERSION:4:2}

cassini/home/peter/bo/2022ss/bs/20220328/Uebung> chmod +x get_release.sh
cassini/home/peter/bo/2022ss/bs/20220328/Uebung> ./get_release.sh
01.23
cassini/home/peter/bo/2022ss/bs/20220328/Uebung> cat AppRelease.h
#if defined (testconfig1)
	#define FW_RELEASE	0x0123u	/* BCD format, 16 bit */

#elif defined (testconfig2)
	#define FW_RELEASE	0x4567u	/* BCD format, 16 bit */

cassini/home/peter/bo/2022ss/bs/20220328/Uebung> echo "        #define FW_RELEASE      0x0123u /* BCD format, 16 bit */"
        #define FW_RELEASE      0x0123u /* BCD format, 16 bit */
Sie haben neue Post in /var/mail/peter.
cassini/home/peter/bo/2022ss/bs/20220328/Uebung> echo "        #define FW_RELEASE      0x0123u /* BCD format, 16 bit */" | sed -n 's/.*\(0x\)/\1/p'
0x0123u /* BCD format, 16 bit */
cassini/home/peter/bo/2022ss/bs/20220328/Uebung> echo "        #define FW_RELEASE      0x0123u /* BCD format, 16 bit */" | sed -n 's/.*0x/0x/p'
0x0123u /* BCD format, 16 bit */
cassini/home/peter/bo/2022ss/bs/20220328/Uebung> echo "        #define FW_RELEASE      0x0123u /* BCD format, 16 bit */" | sed -n 's/^.*0x/0x/p'
0x0123u /* BCD format, 16 bit */
cassini/home/peter/bo/2022ss/bs/20220328/Uebung> echo "        #define FW_RELEASE      0x0123u /* BCD format, 16 bit */" | grep -o "0x[0-9a-f].*u"
0x0123u

20220328/bs-20220328.txt

deleted100644 → 0
+0 −23
Original line number Original line Diff line number Diff line
Übungsaufgabe:

Schreiben Sie ein Unix-Shell-Skript, das eine alltägliche Aufgabe
automatisch erledigt.

Beispiel: Bilder von einer Webseite herunterladen


#!/bin/bash

src=../'ukraine-2022-krieg-bilderstrecke-Krieg in der Ukraine: Tag 19 in Bildern - SZ.de.html'
url='https://www.sueddeutsche.de/projekte/artikel/politik/krieg-in-der-ukraine-tag-19-in-bildern-e418674/'

grep -o '_modules_[0-9]*_data_[selct_]*background_image_desktop[0-9a-fwhqr-]*\.jpg' "$src" \
  | while read pattern; do                                                                  
      wget "$url$pattern"
    done         


Bilderstrecken: https://www.sueddeutsche.de/projekte/artikel/politik/krieg-in-der-ukraine-e333697/


SUBPAGES=$(curl -Ssl https://www.sueddeutsche.de/projekte/artikel/politik/krieg-in-der-ukraine-e333697/ | grep -o "class=\"link svelte-1mm0cdc\" href=\".*/.*\">" | grep -o "https.*/")

20220328/for-1.txt

deleted100644 → 0
+0 −47
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220314> for x in foo bar baz; do echo $x; done
foo
bar
baz
cassini/home/peter/bo/2022ss/bs/20220314> for x in 1 2 3 4 5 6 7 8 9 10; do echo $x; done
1
2
3
4
5
6
7
8
9
10
cassini/home/peter/bo/2022ss/bs/20220314> for x in $(seq 10); do echo $x; done
1
2
3
4
5
6
7
8
9
10
cassini/home/peter/bo/2022ss/bs/20220314> for x in $(seq -f "%04g" 10); do echo $x; done
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
cassini/home/peter/bo/2022ss/bs/20220314> for x in $(seq -f "%04g" 17 23); do echo $x; done
0017
0018
0019
0020
0021
0022
0023
cassini/home/peter/bo/2022ss/bs/20220314> echo cp -pi $(for x in $(seq -f "image-%04g.jpg" 17 23); do echo $x; done) sonstwohin/
cp -pi image-0017.jpg image-0018.jpg image-0019.jpg image-0020.jpg image-0021.jpg image-0022.jpg image-0023.jpg sonstwohin/

20220328/for-2.txt

deleted100644 → 0
+0 −11
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220314> for ((i = 1 ; i <= 10 ; i++)); do echo $i; done
1
2
3
4
5
6
7
8
9
10

20220328/get-imgs-1.sh

deleted100755 → 0
+0 −11
Original line number Original line Diff line number Diff line
#!/bin/bash

URL="https://www.sueddeutsche.de/projekte/artikel/politik/krieg-in-der-ukraine-e333697/"

SUBPAGES=$(curl -Ssl "$URL" \
           | grep -o "class=\"link svelte-1mm0cdc\" href=\".*/.*\">" \
           | grep -o "https.*/")

for x in $SUBPAGES; do
  echo $x
done

20220328/get-imgs-2.sh

deleted100755 → 0
+0 −14
Original line number Original line Diff line number Diff line
#!/bin/bash

URL="https://www.sueddeutsche.de/projekte/artikel/politik/krieg-in-der-ukraine-e333697/"
TMPDIR=tmp

SUBPAGES=$(curl -Ssl "$URL" \
           | grep -o "class=\"link svelte-1mm0cdc\" href=\".*/.*\">" \
           | grep -o "https.*/")

mkdir "$TMPDIR"
cd "$TMPDIR"
for x in $SUBPAGES; do
  wget "$x"
done

20220328/if-0.txt

deleted100644 → 0
+0 −11
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220314> cat test.txt
Test
cassini/home/peter/bo/2022ss/bs/20220314> grep Test test.txt
Test
cassini/home/peter/bo/2022ss/bs/20220314> grep Toast test.txt
cassini/home/peter/bo/2022ss/bs/20220314> echo $?
1
cassini/home/peter/bo/2022ss/bs/20220314> grep Test test.txt
Test
cassini/home/peter/bo/2022ss/bs/20220314> echo $?
0

20220328/if-1.txt

deleted100644 → 0
+0 −7
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220314> if grep Test test.txt; then echo "gefunden"; else echo "nicht gefunden"; fi
Test
gefunden
cassini/home/peter/bo/2022ss/bs/20220314> if grep Test test.txt > /dev/null; then echo "gefunden"; else echo "nicht gefunden"; fi
gefunden
cassini/home/peter/bo/2022ss/bs/20220314> if grep -q Test test.txt; then echo "gefunden"; else echo "nicht gefunden"; fi
gefunden

20220328/if-2.txt

deleted100644 → 0
+0 −5
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220314> if grep -q Test test.txt
> then echo "gefunden"
> else echo "nicht gefunden"
> fi
gefunden

20220328/if-3.sh

deleted100755 → 0
+0 −5
Original line number Original line Diff line number Diff line
if grep -q Test test.txt; then
  echo "gefunden"
else
  echo "nicht gefunden"
fi

20220328/if-3.txt

deleted100644 → 0
+0 −9
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220314> cat if-3.sh
if grep -q Test test.txt; then
  echo "gefunden"
else
  echo "nicht gefunden"
fi
cassini/home/peter/bo/2022ss/bs/20220314> chmod +x if-3.sh
cassini/home/peter/bo/2022ss/bs/20220314> ./if-3.sh
gefunden

20220328/ls-2.both

deleted100644 → 0
+0 −1
Original line number Original line Diff line number Diff line
-rw-r--r-- 1 peter peter 20 Mär 28 13:14 test.txt

20220328/ls.both

deleted100644 → 0
+0 −2
Original line number Original line Diff line number Diff line
ls: Zugriff auf 'bla.txt' nicht möglich: Datei oder Verzeichnis nicht gefunden
-rw-r--r-- 1 peter peter 20 Mär 28 13:14 test.txt

20220328/ls.err

deleted100644 → 0
+0 −1
Original line number Original line Diff line number Diff line
ls: Zugriff auf 'bla.txt' nicht möglich: Datei oder Verzeichnis nicht gefunden

20220328/ls.txt

deleted100644 → 0
+0 −1
Original line number Original line Diff line number Diff line
-rw-r--r-- 1 peter peter 20 Mär 28 13:14 test.txt

20220328/pipes-1.txt

deleted100644 → 0
+0 −29
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220328> cat test.bc
1 + 1
cassini/home/peter/bo/2022ss/bs/20220328> bc < test.bc
2
cassini/home/peter/bo/2022ss/bs/20220328> echo "2 + 2" | bc
4
cassini/home/peter/bo/2022ss/bs/20220328> cat test.txt
Test
Noch ein Test.
cassini/home/peter/bo/2022ss/bs/20220328> cat test.txt | sed -e 's/Test/Toast/g'
Toast
Noch ein Toast.
cassini/home/peter/bo/2022ss/bs/20220328> cat test.txt | gzip
gzip: compressed data not written to a terminal. Use -f to force compression.
For help, type: gzip -h
cassini/home/peter/bo/2022ss/bs/20220328> cat test.txt | gzip -f
7�Ab
    I-.���O�PH����s�d-cassini/home/peter/bo/2022ss/bs/20220328> cat test.txt | gzip | gunzip
Test
Noch ein Test.
cassini/home/peter/bo/2022ss/bs/20220328> cat test.txt | gzip | cat | gunzip
Test
Noch ein Test.
cassini/home/peter/bo/2022ss/bs/20220328> cat test.txt | gzip > test.txt.gz
cassini/home/peter/bo/2022ss/bs/20220328> cat test.txt.gz
w�Ab
    I-.���O�PH����s�d-cassini/home/peter/bo/2022ss/bs/20220328> cat test.txt.gz | gunzip
Test
Noch ein Test.

20220328/pipes-2.txt

deleted100644 → 0
+0 −13
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220314> ls *.pdf
bs-20220314.pdf                      logo-hochschule-bochum.pdf         unix-20220314.pdf
logo-hochschule-bochum-cvh-text.pdf  Operating_system_placement-de.pdf
cassini/home/peter/bo/2022ss/bs/20220314> ls *.pdf | grep -v logo
bs-20220314.pdf
Operating_system_placement-de.pdf
unix-20220314.pdf
cassini/home/peter/bo/2022ss/bs/20220314> echo $(ls *.pdf | grep -v logo)
bs-20220314.pdf Operating_system_placement-de.pdf unix-20220314.pdf
cassini/home/peter/bo/2022ss/bs/20220314> ls -l $(ls *.pdf | grep -v logo)
-rw-r--r-- 1 peter peter 132739 Mär 13 22:24 bs-20220314.pdf
lrwxrwxrwx 1 peter peter     43 Apr 17  2016 Operating_system_placement-de.pdf -> ../common/Operating_system_placement-de.pdf
-rw-r--r-- 1 peter peter 149583 Mär 21 15:16 unix-20220314.pdf

20220328/redirection-1.txt

deleted100644 → 0
+0 −16
Original line number Original line Diff line number Diff line
-rw-r--r-- 1 peter peter 20 Mär 28 13:14 test.txt
cassini/home/peter/bo/2022ss/bs/20220328> ls -l test.txt
-rw-r--r-- 1 peter peter 20 Mär 28 13:14 test.txt
cassini/home/peter/bo/2022ss/bs/20220328> ls -l test.txt bla.txt
ls: Zugriff auf 'bla.txt' nicht möglich: Datei oder Verzeichnis nicht gefunden
-rw-r--r-- 1 peter peter 20 Mär 28 13:14 test.txt
cassini/home/peter/bo/2022ss/bs/20220328> ls -l test.txt bla.txt >> ls.txt
ls: Zugriff auf 'bla.txt' nicht möglich: Datei oder Verzeichnis nicht gefunden
cassini/home/peter/bo/2022ss/bs/20220328> ls -l test.txt bla.txt 2> ls.err
-rw-r--r-- 1 peter peter 20 Mär 28 13:14 test.txt
cassini/home/peter/bo/2022ss/bs/20220328> cat ls.err
ls: Zugriff auf 'bla.txt' nicht möglich: Datei oder Verzeichnis nicht gefunden
cassini/home/peter/bo/2022ss/bs/20220328> ls -l test.txt bla.txt > ls.both 2>&1
cassini/home/peter/bo/2022ss/bs/20220328> cat ls.both
ls: Zugriff auf 'bla.txt' nicht möglich: Datei oder Verzeichnis nicht gefunden
-rw-r--r-- 1 peter peter 20 Mär 28 13:14 test.txt

20220328/test.bc

deleted100644 → 0
+0 −1
Original line number Original line Diff line number Diff line
1 + 1

20220328/test.txt

deleted100644 → 0
+0 −2
Original line number Original line Diff line number Diff line
Test
Noch ein Test.

20220328/wildcards-1.txt

deleted100644 → 0
+0 −6
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220314> ls *.txt
for-1.txt  if-0.txt  if-2.txt  pipes-2.txt  test.txt
for-2.txt  if-1.txt  if-3.txt  test-2.txt
cassini/home/peter/bo/2022ss/bs/20220314> echo mv -i {for,if,pipes}-*.txt ../20220321/
mv -i for-1.txt for-2.txt if-0.txt if-1.txt if-2.txt if-3.txt pipes-2.txt ../20220321/
cassini/home/peter/bo/2022ss/bs/20220314> mv -i {for,if,pipes}-*.txt ../20220321/

20220328/wildcards-2.txt

deleted100644 → 0
+0 −15
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220321> ls *.txt
for-1.txt  if-0.txt  if-2.txt  pipes-2.txt  test-2.txt  test-4.txt
for-2.txt  if-1.txt  if-3.txt  test-1.txt   test-3.txt  wildcards-1.txt
cassini/home/peter/bo/2022ss/bs/20220321> ls *.txt | grep -v test
for-1.txt
for-2.txt
if-0.txt
if-1.txt
if-2.txt
if-3.txt
pipes-2.txt
wildcards-1.txt
cassini/home/peter/bo/2022ss/bs/20220321> echo mv $(ls *.txt | grep -v test) ../20220328/
mv for-1.txt for-2.txt if-0.txt if-1.txt if-2.txt if-3.txt pipes-2.txt wildcards-1.txt ../20220328/
cassini/home/peter/bo/2022ss/bs/20220321> mv $(ls *.txt | grep -v test) ../20220328/

20220404/Makefile

deleted120000 → 0
+0 −1
Original line number Original line Diff line number Diff line
Makefile-modules
 No newline at end of file

20220404/Makefile-1

deleted100644 → 0
+0 −8
Original line number Original line Diff line number Diff line
philosophy: philosophy.o answer.o
	gcc philosophy.o answer.o -o philosophy

answer.o: answer.c answer.h
	gcc -Wall -O answer.c -c

philosophy.o: philosophy.c answer.h
	gcc -Wall -O philosophy.c -c

20220404/Makefile-2

deleted100644 → 0
+0 −16
Original line number Original line Diff line number Diff line
TARGET = philosophy
OBJECTS = philosophy.o answer.o
HEADERS = answer.h
CFLAGS = -Wall -O

$(TARGET): $(OBJECTS)
	gcc $(OBJECTS) -o $(TARGET)

answer.o: answer.c $(HEADERS)
	gcc $(CFLAGS) answer.c -c

philosophy.o: philosophy.c $(HEADERS)
	gcc $(CFLAGS) philosophy.c -c

clean:
	rm -f $(OBJECTS) $(TARGET)

20220404/Makefile-3

deleted100644 → 0
+0 −13
Original line number Original line Diff line number Diff line
TARGET = philosophy
OBJECTS = philosophy.o answer.o
HEADERS = answer.h
CFLAGS = -Wall -O

$(TARGET): $(OBJECTS)
	gcc $(OBJECTS) -o $(TARGET)

%.o: %.c $(HEADERS)
	gcc $(CFLAGS) $< -c

clean:
	rm -f $(OBJECTS) $(TARGET)

20220404/Makefile-4

deleted100644 → 0
+0 −15
Original line number Original line Diff line number Diff line
TARGET = philosophy
OBJECTS = philosophy.o answer.o
HEADERS = answer.h
CFLAGS = -Wall -O

all: $(TARGET)

$(TARGET): $(OBJECTS)
	gcc $(OBJECTS) -o $(TARGET)

%.o: %.c $(HEADERS)
	gcc $(CFLAGS) $< -c

clean:
	rm -f $(OBJECTS) $(TARGET)

20220404/answer.c

deleted100644 → 0
+0 −6
Original line number Original line Diff line number Diff line
#include "answer.h"

int answer (void)
{
  return ANSWER;
}

20220404/answer.h

deleted100644 → 0
+0 −3
Original line number Original line Diff line number Diff line
extern int answer (void);

#define ANSWER 42

20220404/hello world 2.c

deleted120000 → 0
+0 −1
Original line number Original line Diff line number Diff line
hello-2.c
 No newline at end of file

20220404/hello world.c

deleted120000 → 0
+0 −1
Original line number Original line Diff line number Diff line
hello-1.c
 No newline at end of file

20220404/make-1.txt

deleted100644 → 0
+0 −60
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220404> cat philosophy.c
#include <stdio.h>
#include "answer.h"

int main (void)
{
  printf ("The answer is %d.\n", answer ());
  return 0;
}
cassini/home/peter/bo/2022ss/bs/20220404> cat answer.h
extern int answer (void);

#define ANSWER 42
cassini/home/peter/bo/2022ss/bs/20220404> cat answer.c
#include "answer.h"

int answer (void)
{
  return ANSWER;
}
cassini/home/peter/bo/2022ss/bs/20220404> gcc -Wall -O philosophy.c -o philosophy
/usr/bin/ld: /tmp/ccjJ8ZhE.o: in function `main':
philosophy.c:(.text+0x5): undefined reference to `answer'
collect2: error: ld returned 1 exit status
cassini/home/peter/bo/2022ss/bs/20220404> gcc -Wall -O philosophy.c answer.c -o philosophy
Sie haben neue Post in /var/mail/peter.
cassini/home/peter/bo/2022ss/bs/20220404> ./philosophy
The answer is 42.
cassini/home/peter/bo/2022ss/bs/20220404> gcc -Wall -O philosophy.c -c
cassini/home/peter/bo/2022ss/bs/20220404> gcc -Wall -O answer.c -c
cassini/home/peter/bo/2022ss/bs/20220404> ls -l philosophy.[co] answer.[co]
-rw-r--r-- 1 peter peter   60 Dez 13 13:46 answer.c
-rw-r--r-- 1 peter peter 1208 Apr  4 13:57 answer.o
-rw-r--r-- 1 peter peter  117 Jan  4  2021 philosophy.c
-rw-r--r-- 1 peter peter 1632 Apr  4 13:57 philosophy.o
cassini/home/peter/bo/2022ss/bs/20220404> gcc philosophy.o answer.o -o philosophy
cassini/home/peter/bo/2022ss/bs/20220404> ./philosophy
The answer is 42.
cassini/home/peter/bo/2022ss/bs/20220404> gcc philosophy.o -o philosophy
/usr/bin/ld: philosophy.o: in function `main':
philosophy.c:(.text+0x5): undefined reference to `answer'
collect2: error: ld returned 1 exit status
cassini/home/peter/bo/2022ss/bs/20220404> cat Makefile-1
philosophy: philosophy.o answer.o
        gcc philosophy.o answer.o -o philosophy

answer.o: answer.c answer.h
        gcc -Wall -O answer.c -c

philosophy.o: philosophy.c answer.h
        gcc -Wall -O philosophy.c -c
cassini/home/peter/bo/2022ss/bs/20220404> make
make: *** Es wurden keine Ziele angegeben und keine „make“-Steuerdatei gefunden.  Schluss.
cassini/home/peter/bo/2022ss/bs/20220404> make -f Makefile-1
gcc philosophy.o answer.o -o philosophy
cassini/home/peter/bo/2022ss/bs/20220404> rm *.o
cassini/home/peter/bo/2022ss/bs/20220404> make -f Makefile-1
gcc -Wall -O philosophy.c -c
gcc -Wall -O answer.c -c
gcc philosophy.o answer.o -o philosophy

20220404/make-2.txt

deleted100644 → 0
+0 −45
Original line number Original line Diff line number Diff line
/*
 *  hello-1.c - The simplest kernel module.
 */
#include <linux/module.h>       /* Needed by all modules */
#include <linux/kernel.h>       /* Needed for KERN_INFO */

int init_module(void)
{
        printk(KERN_INFO "Hello world 1.\n");

        /*
         * A non 0 return means init_module failed; module can't be loaded.
         */
        return 0;
}

void cleanup_module(void)
{
        printk(KERN_INFO "Goodbye world 1.\n");
}
cassini/home/peter/bo/2022ss/bs/20220404> cat Makefile-modules-1
obj-m += hellomod-1.o

# obj-m += hellomod-2.o
# obj-m += chardev-1.o

all:
        make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
        make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
cassini/home/peter/bo/2022ss/bs/20220404> ln -sf Makefile-modules-1 Makefile
cassini/home/peter/bo/2022ss/bs/20220404> echo /lib/modules/$(shell uname -r)/build
bash: shell: Kommando nicht gefunden.
/lib/modules//build
cassini/home/peter/bo/2022ss/bs/20220404> echo /lib/modules/$(uname -r)/build
/lib/modules/4.19.0-12-amd64/build
cassini/home/peter/bo/2022ss/bs/20220404> ls /lib/modules/4.19.0-12-amd64/build
arch  include  Makefile  Module.symvers  scripts  tools
cassini/home/peter/bo/2022ss/bs/20220404> uname
Linux
cassini/home/peter/bo/2022ss/bs/20220404> uname -r
4.19.0-12-amd64
cassini/home/peter/bo/2022ss/bs/20220404> pwd
/home/peter/bo/2022ss/bs/20220404

20220404/modules-2.txt

deleted100644 → 0
+0 −8
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220404> sudo dmesg
[...]
[1583119.050593] hellomod_1: loading out-of-tree module taints kernel.
[1583119.050600] hellomod_1: module license 'unspecified' taints kernel.
[1583119.050601] Disabling lock debugging due to kernel taint
[1583119.050666] hellomod_1: module verification failed: signature and/or required key missing - tainting kernel
[1583119.051455] Hello world 1.
[1583136.476867] Goodbye world 1.

20220404/modules-3.txt

deleted100644 → 0
+0 −4
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220404> sudo dmesg
[...]
[1583551.529893] Hello world 2.
[1583557.018894] Goodbye world 2.

20220404/modules-4.txt

deleted100644 → 0
+0 −6
Original line number Original line Diff line number Diff line
[1584035.731938] I was assigned major number 241. To talk to
[1584035.731939] the driver, create a dev file with
[1584035.731940] 'mknod /dev/chardev c 241 0'.
[1584035.731940] Try various minor numbers. Try to cat and echo to
[1584035.731941] the device file.
[1584035.731941] Remove the device file and module when done.

20220404/modules-5.txt

deleted100644 → 0
+0 −15
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220404> mkdir dev
cassini/home/peter/bo/2022ss/bs/20220404> mknod dev/chardev c 241 0
mknod: dev/chardev: Die Operation ist nicht erlaubt
cassini/home/peter/bo/2022ss/bs/20220404> sudo mknod dev/chardev c 241 0
cassini/home/peter/bo/2022ss/bs/20220404> ls -l dev/
insgesamt 0
crw-r--r-- 1 root root 241, 0 Apr  4 14:39 chardev
cassini/home/peter/bo/2022ss/bs/20220404> ls -l /dev/tty
crw-rw-rw- 1 root tty 5, 0 Apr  4 14:22 /dev/tty
cassini/home/peter/bo/2022ss/bs/20220404> cat dev/chardev
I already told you 0 times Hello world!
cassini/home/peter/bo/2022ss/bs/20220404> cat dev/chardev
I already told you 1 times Hello world!
cassini/home/peter/bo/2022ss/bs/20220404> cat dev/chardev
I already told you 2 times Hello world!

20220404/nix-hello.c

deleted100644 → 0
+0 −15
Original line number Original line Diff line number Diff line
int main (void)
{
  char *p = (char *) 0xb8000000;
  *p++ = 'H';
  *p++ = 0x04;
  *p++ = 'e';
  *p++ = 0x02;
  *p++ = 'l';
  *p++ = 0x01;
  *p++ = 'l';
  *p++ = 0x06;
  *p++ = 'o';
  *p++ = 0x03;
  return 0;
}

20220404/os-layers-1.jpg

deleted120000 → 0
+0 −1
Original line number Original line Diff line number Diff line
../common/os-layers-1.jpg
 No newline at end of file

20220404/os-layers-2.jpg

deleted120000 → 0
+0 −1
Original line number Original line Diff line number Diff line
../common/os-layers-2.jpg
 No newline at end of file

20220404/os-layers-3.jpg

deleted120000 → 0
+0 −1
Original line number Original line Diff line number Diff line
../common/os-layers-3.jpg
 No newline at end of file

20220404/os-layers-4.jpg

deleted120000 → 0
+0 −1
Original line number Original line Diff line number Diff line
../common/os-layers-4.jpg
 No newline at end of file

20220404/os-layers-5.jpg

deleted120000 → 0
+0 −1
Original line number Original line Diff line number Diff line
../common/os-layers-5.jpg
 No newline at end of file

20220404/parameters-1.txt

deleted100644 → 0
+0 −16
Original line number Original line Diff line number Diff line
#!/bin/bash

echo $*
cassini/home/peter/bo/2022ss/bs/20220404> chmod +x parameters-1.sh
cassini/home/peter/bo/2022ss/bs/20220404> ./parameters-1.sh

cassini/home/peter/bo/2022ss/bs/20220404> ./parameters-1.sh foo bar bas
foo bar bas
cassini/home/peter/bo/2022ss/bs/20220404> ./parameters-1.sh foo bar baz
foo bar baz
cassini/home/peter/bo/2022ss/bs/20220404> ./parameters-1.sh "Dies ist ein Test." "Dies auch."
Dies ist ein Test. Dies auch.
cassini/home/peter/bo/2022ss/bs/20220404> ./parameters-1.sh "Dies ist ein Test."                  "Dies    auch."
Dies ist ein Test. Dies auch.
cassini/home/peter/bo/2022ss/bs/20220404> ./parameters-1.sh   foo     bar            baz
foo bar baz

20220404/parameters-3.sh

deleted100755 → 0
+0 −6
Original line number Original line Diff line number Diff line
#!/bin/bash

echo $#
echo $*
echo '$*'
echo "$*"

20220404/parameters-3.txt

deleted100644 → 0
+0 −18
Original line number Original line Diff line number Diff line
#!/bin/bash

echo $#
echo $*
echo '$*'
echo "$*"
cassini/home/peter/bo/2022ss/bs/20220404> ./parameters-3.sh
0

$*

cassini/home/peter/bo/2022ss/bs/20220404> ./parameters-3.sh "Dies ist"    "ein     Test."
2
Dies ist ein Test.
$*
Dies ist ein     Test.
cassini/home/peter/bo/2022ss/bs/20220404> echo Dies ist ein     Test.
Dies ist ein Test.

20220404/parameters-4.sh

deleted100755 → 0
+0 −5
Original line number Original line Diff line number Diff line
#!/bin/bash

for f in $*; do
  echo "Mache was mit der Datei \"$f\""
done

20220404/parameters-4.txt

deleted100644 → 0
+0 −18
Original line number Original line Diff line number Diff line
#!/bin/bash

for f in $*; do
  echo "Mache was mit der Datei \"$f\""
done
cassini/home/peter/bo/2022ss/bs/20220404> ./parameters-4.sh hello*.c
Mache was mit der Datei "hello-1.c"
Mache was mit der Datei "hello-2.c"
cassini/home/peter/bo/2022ss/bs/20220404> ln -s hello-1.c "hello world.c"
cassini/home/peter/bo/2022ss/bs/20220404> ln -s hello-2.c "hello world 2.c"
cassini/home/peter/bo/2022ss/bs/20220404> ls hello\ *.c
'hello world 2.c'  'hello world.c'
cassini/home/peter/bo/2022ss/bs/20220404> ./parameters-4.sh hello\ *.c
Mache was mit der Datei "hello"
Mache was mit der Datei "world"
Mache was mit der Datei "2.c"
Mache was mit der Datei "hello"
Mache was mit der Datei "world.c"

20220404/parameters-5.sh

deleted100755 → 0
+0 −5
Original line number Original line Diff line number Diff line
#!/bin/bash

for f in "$*"; do
  echo "Mache was mit der Datei \"$f\""
done

20220404/parameters-5.txt

deleted100644 → 0
+0 −10
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220404> cat parameters-5.sh 
#!/bin/bash

for f in "$*"; do
  echo "Mache was mit der Datei \"$f\""
done
cassini/home/peter/bo/2022ss/bs/20220404> ./parameters-5.sh hello\ *.c
Mache was mit der Datei "hello world 2.c hello world.c"
cassini/home/peter/bo/2022ss/bs/20220404> ls hello\ *.c
'hello world 2.c'  'hello world.c'

20220404/parameters-6.sh

deleted100755 → 0
+0 −5
Original line number Original line Diff line number Diff line
#!/bin/bash

for f in "$@"; do
  echo "Mache was mit der Datei \"$f\""
done

20220404/parameters-6.txt

deleted100644 → 0
+0 −11
Original line number Original line Diff line number Diff line
#!/bin/bash

for f in "$@"; do
  echo "Mache was mit der Datei \"$f\""
done
cassini/home/peter/bo/2022ss/bs/20220404> ./parameters-6.sh hello\ *.c
Mache was mit der Datei "hello world 2.c"
Mache was mit der Datei "hello world.c"
cassini/home/peter/bo/2022ss/bs/20220404> ./parameters-6.sh     "Dies ist"   "ein    Test."
Mache was mit der Datei "Dies ist"
Mache was mit der Datei "ein    Test."

20220404/parameters-7.sh

deleted100755 → 0
+0 −6
Original line number Original line Diff line number Diff line
#!/bin/bash

while [ -n "$1" ]; do
  echo "Mache was mit der Datei \"$1\""
  shift
done

20220404/parameters-7.txt

deleted100644 → 0
+0 −9
Original line number Original line Diff line number Diff line
#!/bin/bash

while [ -n "$1" ]; do
  echo "Mache was mit der Datei \"$1\""
  shift
done
cassini/home/peter/bo/2022ss/bs/20220404> ./parameters-7.sh     "Dies ist"   "ein    Test."
Mache was mit der Datei "Dies ist"
Mache was mit der Datei "ein    Test."

20220404/vic-1.txt

deleted100644 → 0
+0 −17
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220404> file_template=$(ls -rt *.c *.cpp *.sh *.py *.tex *.diff 2>/dev/null | tail -1)
cassini/home/peter/bo/2022ss/bs/20220404> echo $file_template 
parameters-7.sh
cassini/home/peter/bo/2022ss/bs/20220404> ls -rt *.c *.cpp *.sh *.py *.tex *.diff 2>/dev/null | tail -1
parameters-7.sh
cassini/home/peter/bo/2022ss/bs/20220404> ls -rt *.c *.cpp *.sh *.py *.tex *.diff 2>/dev/null
 hello-1.c         parameters-2.sh  'hello world.c'     parameters-6.sh
 hello-2.c         parameters-3.sh  'hello world 2.c'   parameters-7.sh
 parameters-1.sh   parameters-4.sh   parameters-5.sh
cassini/home/peter/bo/2022ss/bs/20220404> ls -rt *.c *.cpp *.sh *.py *.tex *.diff
ls: Zugriff auf '*.cpp' nicht möglich: Datei oder Verzeichnis nicht gefunden
ls: Zugriff auf '*.py' nicht möglich: Datei oder Verzeichnis nicht gefunden
ls: Zugriff auf '*.tex' nicht möglich: Datei oder Verzeichnis nicht gefunden
ls: Zugriff auf '*.diff' nicht möglich: Datei oder Verzeichnis nicht gefunden
 hello-1.c         parameters-2.sh  'hello world.c'     parameters-6.sh
 hello-2.c         parameters-3.sh  'hello world 2.c'   parameters-7.sh
 parameters-1.sh   parameters-4.sh   parameters-5.sh

20220404/vic-2.txt

deleted100644 → 0
+0 −47
Original line number Original line Diff line number Diff line
#!/bin/bash

debug=true

if [ $# -gt 0 ]; then
  $debug && echo "parameters = $@"
  shift $(( $# - 1 ))
  file_template="$1"
else
  file_template=$(ls -rt *.c *.cpp *.sh *.py *.tex *.diff 2>/dev/null | tail -1)
fi

$debug && echo "file_template = $file_template"

file_extension=$(echo $file_template | sed -e 's/.*\.\(.*$\)/\1/')
file_base=$(echo $file_template | sed -e 's/\(.*\)\..*$/\1/')

$debug && echo "file_extension = $file_extension"
$debug && echo "file_base = $file_base"

file_number=$(echo $file_base | sed -e 's/^.*-\([0-9]*$\)/\1/')
file_stem=$(echo $file_base | sed -e 's/^\(.*\)-[0-9]*$/\1/')

$debug && echo "file_number = $file_number"
$debug && echo "file_number = $file_stem"

while [ -e "$file_stem-$file_number.$file_extension" ]; do
  file_number=$((file_number + 1))
done
new_file_name="$file_stem-$file_number.$file_extension"

$debug && echo "new_file_name = $new_file_name" && read junk

cp -pi "$file_template" "$new_file_name"
#$EDITOR "$new_file_name"
/usr/bin/vim -X -c 'set sw=2' -c 'set expandtab' -c 'set ai' -c 'set nowrap' \
  "$new_file_name"
clear
cat "$new_file_name"
cassini/home/peter/bo/2022ss/bs/20220404> ./vic
file_template = parameters-7.sh
file_extension = sh
file_base = parameters-7
file_number = 7
file_number = parameters
new_file_name = parameters-8.sh
^C

20220411/Makefile

deleted120000 → 0
+0 −1
Original line number Original line Diff line number Diff line
Makefile-modules
 No newline at end of file

20220411/cat-chardev-2.c

deleted100644 → 0
+0 −16
Original line number Original line Diff line number Diff line
#include <stdio.h>
#include <error.h>
#include <errno.h>

int main (void)
{
  char buffer[100];
  FILE *f = fopen ("dev/chardev", "r");
  if (!f)
    error (errno, errno, "could not open dev/chardev");
  fgets (buffer, 100, stdin);
  fgets (buffer, 100, f);
  printf ("%s\n", buffer);
  fclose (f);
  return 0;
}

20220411/glibc-1.txt

deleted100644 → 0
+0 −6
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220411> dir -d glibc*
drwxr-xr-x 73 peter peter     4096 Apr 11 13:29 glibc-2.28
-rw-r--r--  1 peter peter   899676 Mär 17 23:12 glibc_2.28-10+deb10u1.debian.tar.xz
-rw-r--r--  1 peter peter     8921 Mär 17 23:12 glibc_2.28-10+deb10u1.dsc
-rw-r--r--  1 peter peter 17061292 Okt 30  2018 glibc_2.28.orig.tar.xz
cassini/home/peter/bo/2022ss/bs/20220411> apt-get source libc6

20220411/modules-6.txt

deleted100644 → 0
+0 −50
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220404> sudo insmod chardev-1.ko
cassini/home/peter/bo/2022ss/bs/20220404> sudo dmesg | tail -15
[2143588.930267] usb 4-1.5: Manufacturer: Chicony Electronics Co.,Ltd.
[2143588.930270] usb 4-1.5: SerialNumber: 200901010001
[2143588.937888] uvcvideo: Found UVC 1.00 device USB2.0 HD UVC WebCam (04f2:b330)
[2143588.955826] uvcvideo 4-1.5:1.0: Entity type for entity Extension 4 was not initialized!
[2143588.955832] uvcvideo 4-1.5:1.0: Entity type for entity Processing 2 was not initialized!
[2143588.955834] uvcvideo 4-1.5:1.0: Entity type for entity Camera 1 was not initialized!
[2143588.955951] input: USB2.0 HD UVC WebCam: USB2.0 HD as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.5/4-1.5:1.0/input/input426
[2144883.840634] Hello world 1.
[2144980.069509] Goodbye world 1.
[2145413.353119] I was assigned major number 241. To talk to
[2145413.353121] the driver, create a dev file with
[2145413.353121] 'mknod /dev/chardev c 241 0'.
[2145413.353121] Try various minor numbers. Try to cat and echo to
[2145413.353122] the device file.
[2145413.353122] Remove the device file and module when done.
cassini/home/peter/bo/2022ss/bs/20220404> ls -l dev
insgesamt 0
crw-r--r-- 1 root root 241, 0 Apr  4 14:39 chardev
cassini/home/peter/bo/2022ss/bs/20220404> cat dev/chardev
I already told you 0 times Hello world!
cassini/home/peter/bo/2022ss/bs/20220404> cat dev/chardev
I already told you 1 times Hello world!
cassini/home/peter/bo/2022ss/bs/20220404> cat dev/chardev
I already told you 2 times Hello world!
cassini/home/peter/bo/2022ss/bs/20220404> sudo rmmod chardev_1
cassini/home/peter/bo/2022ss/bs/20220404> ls -l dev/chardev
crw-r--r-- 1 root root 241, 0 Apr  4 14:39 dev/chardev
cassini/home/peter/bo/2022ss/bs/20220404> cat dev/chardev
cat: dev/chardev: Kein passendes Gerät bzw. keine passende Adresse gefunden
cassini/home/peter/bo/2022ss/bs/20220404> cd ../20220411/
cassini/home/peter/bo/2022ss/bs/20220411> ls -l
insgesamt 28
-rw-r--r-- 1 peter peter 4069 Apr  4  2014 chardev-1.c
-rw-r--r-- 1 peter peter 4659 Mai  5  2017 chardev-2.c
-rw-r--r-- 1 peter peter 4997 Apr 26  2019 chardev-3.c
lrwxrwxrwx 1 peter peter   16 Apr 10 12:31 Makefile -> Makefile-modules
-rw-r--r-- 1 peter peter  159 Apr 10 12:35 Makefile-modules
-rw-r--r-- 1 peter peter 2495 Apr 10 12:43 SCRATCH
cassini/home/peter/bo/2022ss/bs/20220411> mkdir dev
cassini/home/peter/bo/2022ss/bs/20220411> sudo mknod dev/chardev c 241 1
cassini/home/peter/bo/2022ss/bs/20220411> ls -l dev
insgesamt 0
crw-r--r-- 1 root root 241, 1 Apr 11 11:42 chardev
cassini/home/peter/bo/2022ss/bs/20220411> ls -l dev/chardev
crw-r--r-- 1 root root 241, 1 Apr 11 11:42 dev/chardev
cassini/home/peter/bo/2022ss/bs/20220411> cat dev/chardev
cat: dev/chardev: Kein passendes Gerät bzw. keine passende Adresse gefunden
cassini/home/peter/bo/2022ss/bs/20220411>

20220411/modules-7.txt

deleted100644 → 0
+0 −20
Original line number Original line Diff line number Diff line
/*
 * Called when a process writes to dev file: echo "hi" > /dev/hello
 */
static ssize_t
device_write(struct file *filp, const char *buff, size_t len, loff_t * off)
{
        printk(KERN_ALERT "Sorry, this operation isn't supported.\n");
        return -EINVAL;
}
cassini/home/peter/bo/2022ss/bs/20220411> echo "Hallo" > dev/chardev
bash: dev/chardev: Keine Berechtigung
cassini/home/peter/bo/2022ss/bs/20220411> sudo su -
[sudo] Passwort für peter:
Das hat nicht funktioniert, bitte nochmal probieren.
[sudo] Passwort für peter:
root@cassini:~# . bash-settings.pg
cassini/root# cd ~peter/bo/2022ss/bs/20220411/
cassini/home/peter/bo/2022ss/bs/20220411# echo "Hallo" > dev/chardev
-bash: echo: Schreibfehler: Das Argument ist ungültig.
cassini/home/peter/bo/2022ss/bs/20220411#

20220411/modules-8.txt

deleted100644 → 0
+0 −50
Original line number Original line Diff line number Diff line
brw-rw----  1 root disk      8,  32 Apr 11 12:57 sdc
brw-rw----  1 root disk      8,  33 Apr 11 12:57 sdc1
drwxr-xr-x  2 root root         400 Apr 11 12:57 block
crw-------  1 root root    241,   0 Apr 11 13:00 chardev
drwxr-xr-x  2 root root        4000 Apr 11 13:00 char
drwxrwxrwt  2 root root          60 Apr 11 13:00 shm
crw-rw-rw-  1 root tty       5,   2 Apr 11 13:00 ptmx
cassini/home/peter/bo/2022ss/bs/20220411> cat /dev/chardev
cat: /dev/chardev: Keine Berechtigung
Sie haben neue Post in /var/mail/peter.
cassini/home/peter/bo/2022ss/bs/20220411> sudo cat /dev/chardev
I already told you 0 times Hello world!
Sie haben Post in /var/mail/peter.
cassini/home/peter/bo/2022ss/bs/20220411> ls -l dev/chardev
crw-r--r-- 1 root root 241, 1 Apr 11 11:42 dev/chardev
cassini/home/peter/bo/2022ss/bs/20220411> cat dev/chardev
I already told you 1 times Hello world!
cassini/home/peter/bo/2022ss/bs/20220411> sudo mknod dev/chardev0 c 241 0
cassini/home/peter/bo/2022ss/bs/20220411> ls -l dev/
insgesamt 0
crw-r--r-- 1 root root 241, 1 Apr 11 11:42 chardev
crw-r--r-- 1 root root 241, 0 Apr 11 13:04 chardev0
cassini/home/peter/bo/2022ss/bs/20220411> cat dev/chardev0
I already told you 2 times Hello world!
cassini/home/peter/bo/2022ss/bs/20220411> mknod dev/chardev0u c 241 0
mknod: dev/chardev0u: Die Operation ist nicht erlaubt
cassini/home/peter/bo/2022ss/bs/20220411> which mknod
/bin/mknod
cassini/home/peter/bo/2022ss/bs/20220411> ls -l $(which mknod)
-rwxr-xr-x 1 root root 68544 Feb 28  2019 /bin/mknod
cassini/home/peter/bo/2022ss/bs/20220411> cat /dev/chardev
cat: /dev/chardev: Keine Berechtigung
cassini/home/peter/bo/2022ss/bs/20220411> sudo cat /dev/chardev
I already told you 3 times Hello world!
cassini/home/peter/bo/2022ss/bs/20220411> ls -l dev/* /dev/chardev
crw------- 1 root root 241, 0 Apr 11 13:00 /dev/chardev
crw-r--r-- 1 root root 241, 1 Apr 11 11:42 dev/chardev
crw-r--r-- 1 root root 241, 0 Apr 11 13:04 dev/chardev0
cassini/home/peter/bo/2022ss/bs/20220411> sudo rmmod chardev_1
rmmod: ERROR: Module chardev_1 is not currently loaded
cassini/home/peter/bo/2022ss/bs/20220411> sudo rmmod chardev_3
cassini/home/peter/bo/2022ss/bs/20220411> ls -l dev/* /dev/chardev
ls: Zugriff auf '/dev/chardev' nicht möglich: Datei oder Verzeichnis nicht gefunden
crw-r--r-- 1 root root 241, 1 Apr 11 11:42 dev/chardev
crw-r--r-- 1 root root 241, 0 Apr 11 13:04 dev/chardev0
cassini/home/peter/bo/2022ss/bs/20220411> cat dev/chardev
cat: dev/chardev: Kein passendes Gerät bzw. keine passende Adresse gefunden
cassini/home/peter/bo/2022ss/bs/20220411> cat dev/chardev0
cat: dev/chardev0: Kein passendes Gerät bzw. keine passende Adresse gefunden
cassini/home/peter/bo/2022ss/bs/20220411>

20220411/os-layers-1.jpg

deleted120000 → 0
+0 −1
Original line number Original line Diff line number Diff line
../common/os-layers-1.jpg
 No newline at end of file

20220411/os-layers-2.jpg

deleted120000 → 0
+0 −1
Original line number Original line Diff line number Diff line
../common/os-layers-2.jpg
 No newline at end of file

20220411/os-layers-3.jpg

deleted120000 → 0
+0 −1
Original line number Original line Diff line number Diff line
../common/os-layers-3.jpg
 No newline at end of file

20220411/os-layers-4.jpg

deleted120000 → 0
+0 −1
Original line number Original line Diff line number Diff line
../common/os-layers-4.jpg
 No newline at end of file

20220411/os-layers-5.jpg

deleted120000 → 0
+0 −1
Original line number Original line Diff line number Diff line
../common/os-layers-5.jpg
 No newline at end of file

20220425/bs-20220425.txt

deleted100644 → 0
+0 −280
Original line number Original line Diff line number Diff line
Von der Anwendung bis zum Kernel: libc, 14.05.2021, 14:17:04
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ gcc -Wall -O -g3 hello-1.c -o hello-1
$ gdb -tui ./hello-1
(gdb) b 5  # setze Breakpoint vor printf()-Aufruf
(gdb) run
(gdb) step  # springe in die aufgerufene Funktion hinein
(gdb) directory libc/glibc-2.28/libio  # Verzeichnis für Quelltext mitteilen
--> _IO_puts()
(gdb) next  # 1 Zeile ausführen
--> _IO_sputn()  # springe in die aufgerufene Funktion hinein
--> IO_validate_vtable()  # In dieser Funktion landen wir stattdessen.
--> return vtable;
--> "Hello, world!\n" erscheint auf dem Bildschirm.
--> ???

_IO_sputn() ist keine Funktion, sondern ein Präprozessor-Makro,
der _IO_XSPUTN() aufruft.

_IO_XSPUTN() ist keine Funktion, sondern ein Präprozessor-Makro,
der JUMP2() aufruft und zusätzlich __xsputn
als ersten Parameter übergibt.

JUMP2() ist keine Funktion, sondern ein Präprozessor-Makro,
der die Funktion _IO_JUMPS_FUNC(THIS)->FUNC() aufruft
und zusätzlich THIS als ersten Parameter übergibt.
FUNC hat hierbei den Wert __xsputn, und
THIS hat den Wert FP, also die Datei, hier also stdout.

_IO_JUMPS_FUNC() ist keine Funktion, sondern ein Präprozessor-Makro,
der ...

# define _IO_JUMPS_FUNC(THIS) \
  (IO_validate_vtable                                                   \
   (*(struct _IO_jump_t **) ((void *) &_IO_JUMPS_FILE_plus (THIS)       \
                             + (THIS)->_vtable_offset)))

... prüft, ob die virtuelle Methodentabelle (vtable) in Ordnung ist
und einen Zeiger darauf zurückliefert.
Anschließend kann JUMP2() die tatsächliche Funktion __xsputn() aufrufen.

Gesamtergebnis:

_IO_sputn() ist eine virtuelle Methode der Datei.
THIS hat den Wert der Datei, hier also stdout.

...
--> return vtable;
--> _IO_new_file_xsputn()

_IO_default_xsputn (f, ...)
--> _IO_OVERFLOW (f, EOF)
--> IO_valudate_vtable()  # Aufruf einer virtuellen Methode
--> _IO_new_file_overflow()
--> _IO_do_write (f, ...)  # Präprozessor-Makro für ...
--> _IO_new_do_write (f, ...)
... Schleife ...
Datei fileops.c, Zeile 791
--> _IO_new_do_write (f, ...)
--> new_do_write (f, ...)
--> _IO_SYSWRITE (fp, ...)
--> __libc_write()
Datei sysdeeps/unix/sysv/linux/write.c, Zeile 26
--> return SYSCALL_CANCEL (write, fd, buf, nbytes);

Systemaufrufe, 21.05.2021, 12:08:00
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hello-2.c
...
--> _IO_new_do_write (f, ...)
--> new_do_write (f, ...)
--> _IO_SYSWRITE (fp, ...)
--> __libc_write()
Datei sysdeeps/unix/sysv/linux/write.c, Zeile 26
--> return SYSCALL_CANCEL (write, fd, buf, nbytes);

b+ │0x7ffff7eb54f0 <__GI___libc_write>      lea    0xd61f9(%rip),%rax        # 0x7ffff7f8b6f0 │
  >│0x7ffff7eb54f7 <__GI___libc_write+7>    mov    (%rax),%eax                                │
   │0x7ffff7eb54f9 <__GI___libc_write+9>    test   %eax,%eax                                  │
   │0x7ffff7eb54fb <__GI___libc_write+11>   jne    0x7ffff7eb5510 <__GI___libc_write+32>      │
   │0x7ffff7eb54fd <__GI___libc_write+13>   mov    $0x1,%eax                                  │
   │0x7ffff7eb5502 <__GI___libc_write+18>   syscall                                           │
   │0x7ffff7eb5504 <__GI___libc_write+20>   cmp    $0xfffffffffffff000,%rax                   │
   │0x7ffff7eb550a <__GI___libc_write+26>   ja     0x7ffff7eb5560 <__GI___libc_write+112>     │
   │0x7ffff7eb550c <__GI___libc_write+28>   retq                                              │
   │0x7ffff7eb550d <__GI___libc_write+29>   nopl   (%rax)                                     │
   │0x7ffff7eb5510 <__GI___libc_write+32>   push   %r12                                       │
   │0x7ffff7eb5512 <__GI___libc_write+34>   mov    %rdx,%r12                                  │
   │0x7ffff7eb5515 <__GI___libc_write+37>   push   %rbp                                    

lea: Lade einen Zeiger aus einer konstanten Tabelle in das rax-Register
mov: Lade das, worauf der Zeiger zeigt, in das eax-Register
test: Prüfe, welchen Wert eax hat
jne: Jump if Not Equal = bedingter Sprung, falls ungleich 0 (Vermutung: Fehler)
mov: Lade die Zahl 1 als Parameter für syscall in das eax-Register. 1 steht für "write".
syscall: übergebe an den Kernel --> schreibt "Hello, world!\n" auf den Bildschirm
cmp: Vergleiche den Wert von eax mit einer Zahl
ja: Jump if Above (Prüfen auf Fehler)
retq: Beende die Funktion

syscall erwartet Parameter in den Prozessor-Registern:
  eax: Nummer der Funktion, die aufgerufen werden soll
  rsi: Zeiger auf die auszugebenden Daten
       (siehe: https://0xax.gitbooks.io/linux-insides/content/SysCall/linux-syscall-1.html)
  ebx oder edx: Länge der auszugebenden Daten
  (ggf. weitere Register)

Kernel, 25.05.2017, 17:53:23
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Fragestellung: Wir haben in der glibc beim Maschinenbefehl "syscall"
aufgehört. Wie geht es nun im Kernel weiter? Wer nimmt den Funktions-
aufruf entgegen?

Suchbegriff: sys_call_table

--> Es gibt eine Tabelle, die für jeden der durchnumerierten Systemaufrufe
    einen Zeiger auf die aufzurufende Funktion enthält.

--> Der Maschinenbefehl "syscall" ruft eine Funktion innerhalb des
    Kernels auf. Wo steht, welche Funktion das ist?

arch/x86/entry/syscall_64.c: Defnition des Arrays sys_call_table

Initialisiertes Array von Zeigern auf Funktionen.
Zunächst zeigen alle Zeiger auf die Funktion sys_ni_syscall(),
die lediglich eine Fehlermeldung zurückgibt ("nicht implementiert").
Danach werden auf diejenigen Funktionen, die es tatsächlich gibt
Zeiger initialisiert. Dies erfolgt durch ein #include der Datei
/usr/src/linux-headers-4.19.0-8-amd64/arch/x86/include/generated/asm/syscalls_64.h
mit vorheriger Definition eines Präprozessor-Macros __SYSCALL().

  asmlinkage const sys_call_ptr_t sys_call_table[__NR_syscall_max+1] = {
          /*
           * Smells like a compiler bug -- it doesn't work
           * when the & below is removed.
           */
          [0 ... __NR_syscall_max] = &sys_ni_syscall,
  #include <asm/syscalls_64.h>
  -->     [0] = __x64_sys_read,
          [1] = __x64_sys_write,
          [2] = __x64_sys_open,
          ...
  };

Vorher wurden mit demselben Trick alle Funktionen vorwärts-deklariert:

  #define __SYSCALL_64(nr, sym, qual) extern asmlinkage long sym(const struct pt_regs *);
  #include <asm/syscalls_64.h>
  -->  extern asmlinkage long __x64_sys_read(const struct pt_regs *);
       extern asmlinkage long __x64_sys_write(const struct pt_regs *);
       extern asmlinkage long __x64_sys_open(const struct pt_regs *);
       ...
  #undef __SYSCALL_64

Wie können wur nun dafür sorgen, daß der Befehl syscall dieses Array
auch benutzt?

arch/x86/entry/entry_64.S enthält eine Funktion entry_SYSCALL_64,
die eine Funktion "do_syscall_64()" aufruft
und sich über "USERGS_SYSRET64" beendet.
Dies ist ein Präprozessor-Makro, der zu "swapgs; sysretq;" expandiert
(Definition in include/asm/irqflags.h).

Woher kommt die Include-Datei in "generated"?
arch/x86/entry/syscalls/Makefile ruft das Shell-Skript syscalltbl.sh auf.
Dieses liest syscall_64.tbl und erzeugt daraus syscall_64.h.

Damit haben wir die Funktion gefunden, die den Syscall entgegennehmen soll.
Daraus ergeben sich neue Fragen:
1. Wie sorge ich dafür, daß sie tatsächlich bei "syscall" aufgerufen wird?
2. Wie geht es von dort aus weiter bis zu der Tabelle "sys_call_table"?

zu 1.:
Suche nach "entry_SYSCALL_64" liefert:
arch/x86/kernel/cpu/common.c: wrmsrl(MSR_LSTAR, (unsigned long)entry_SYSCALL_64);

Was bedeutet "wrmsrl"?
https://sites.google.com/site/masumzh/articles/hypervisor-based-virtualization/compute-virtualization
"As shown below, the content of the IA32_LSTAR MSR (Model Specific Register)
is copied to the instruction pointer register (RIP) [...]"

Demnach ist das Prozessorregister "IA32_LSTAR MSR" die Einsprungadresse,
zu der der "syscall"-Aufruf springen soll.
Um das Register "IA32_LSTAR MSR" zu setzen, gibt es den Befehl "wrmsrl"
(Write MSR (long = 32 Bit)).
Offensichtlich ist das MSR ein Array, und "IA32_LSTAR" ist der Index.

zu 2.:
arch/x86/entry/common.c enthält die C-Funcktion do_syscall_64().
Diese enthält die Zeile "regs->ax = sys_call_table[nr](regs);", also den
Aufruf der Funktion, auf die ein Zeiger in der tabelle "sys_call_table"
an der Stelle "nr" gespeichert ist.

--> Weiter geht's mit dem Eintrag in sys_call_table,
    also mit der Implementation von sys_write().

Die Tabelle wird benutzt in der Funktion do_syscall_64():

  regs->ax = sys_call_table[nr](regs);

Wo wird die Funktion __x64_sys_write definiert?
Wenn man lange genug sucht, findet man: arch/x86/include/asm/syscall_wrapper.h
Dort steht eine kleine Funktion __x64_sys_write(), die ihrerseits eine Funktion
__se_sys_write() aufruft.

Der Präprozessor-Makro __SYSCALL_DEFINEx() wird über einen anderen Präprozessor-Makro
SYSCALL_DEFINEx() aufgerufen, der in include/linux/syscalls.h definiert wird
und seinerseits über SYSCALL_DEFINE3() aufgerufen wird, der ebenfalls in
include/linux/syscalls.h definiert wird.

Wenn man lange genug sucht, findet man: fs/read_write.c
SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf, size_t, count)

Dort wird eine Funktion definiert, die ihrerseits eine Funktion ksys_write() aufruft.
Diese enthält:

  ret = vfs_write(f.file, buf, count, &pos);

Hier passiert das eigentliche Schreiben.

Ebenfalls in fs/read_write.c:

  ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_t *pos)

Diese ruft auf:

  ret = __vfs_write(file, buf, count, pos);

Ebenfalls in fs/read_write.c:

  ssize_t __vfs_write(struct file *file, const char __user *p, size_t count, loff_t *pos)

Diese ruft auf:

  if (file->f_op->write) return file->f_op->write(file, p, count, pos);

:-)

Jetzt fehlt nur noch: Wie bekommt f_op->write den Wert, den das Modul hinterlegt hat?

Der Funktion wird ein Parameter "file" übergeben.
Dies ist eine "struct file", die u.a. ein Feld "f_op" enthält,
das auf ein weiteres struct mit Callback-Funktionen zeigt.

Wie kommen die "richtigen" Callback-Funktionen dort hinein?
Eigentlich müßte dies bei register_chrdev() passieren.
Schauen wir uns daher an, was register_chrdev() eigentlich macht.

Dies ist definiert in include/linux/fs.h und ruft die Funktion
__register_chrdev() auf.

Diese wiederum ist definiert in fs/char_dev.c.
Sie alloziert eine cdev-Struktur und speichert darin die fops.
Die cdev-Struktur wird dann mittels cdev_add() in eine Liste eingefügt.
Hierfür ruft cdev_add() die Funktion kobj_map() auf.
Diese Funktion wird in drivers/base/map.c definiert
und legt die cdev-Struktur in einer Hash-Tabelle ab.
Der letzte Parameter "data" ist dabei der Zeiger auf die cdev-Strutur,
die auch die fops enthält.

Wie kommen nun die fops von der Hash-Tabelle aus in die file-Struktur?

Vermutung: Dies geschieht beim Öffnen der Datei.

In fs/open.c gibt es eine Funktion vfs_open().
Diese sucht den zur Datei gehörenden inode heraus und ruft damit do_dentry_open() auf.

Theorie der Dateisysteme: Dateien werden durch "inodes" repräsentiert.

include/linux/fs.h: Definition "inode"

  Die "struct inode" enthält ein Datenfeld "i_rdev", in dem die Major- und Minor-Nr.
  der Gerätedatei gemeinsam gespeichert sind.

  --> Sobald wir einen inode kennen, kennen wir Major- und Minor-Nr. der Gerätedatei.

do_dentry_open() schreibt den inode in die file-Struktur,
holt die fops aus dem inode und legt sie direkt in der file-Struktur ab.

# Das einzige, was jetzt noch fehlt: Wie kommen die fops in den inode?

20220502/bs-20220502.txt

deleted100644 → 0
+0 −3
Original line number Original line Diff line number Diff line
Dateisysteme, 02.05.2022, 12:45:10
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
FAT-Dateisysteme: https://de.wikipedia.org/wiki/File_Allocation_Table

20220502/filesystems-1.txt

deleted100644 → 0
+0 −14
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220502> mount /media/usb1/
Sie haben Post in /var/mail/peter.
cassini/home/peter/bo/2022ss/bs/20220502> ls -l /media/usb1/
insgesamt 0
cassini/home/peter/bo/2022ss/bs/20220502> echo "Dies ist ein Test." > /media/usb1/test.txt
cassini/home/peter/bo/2022ss/bs/20220502> ls -l /media/usb1/
insgesamt 4
-rwxr-xr-x 1 peter peter 19 Mai  2 12:46 test.txt
cassini/home/peter/bo/2022ss/bs/20220502> cat /media/usb1/test.txt
Dies ist ein Test.
cassini/home/peter/bo/2022ss/bs/20220502> umount /media/usb1
cassini/home/peter/bo/2022ss/bs/20220502> ls -l /media/usb1/
insgesamt 0
cassini/home/peter/bo/2022ss/bs/20220502> 

20220502/filesystems-10.txt

deleted100644 → 0
+0 −12
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220502> ls -l /dev/zero
crw-rw-rw- 1 root root 1, 5 Mär 15 18:48 /dev/zero
cassini/home/peter/bo/2022ss/bs/20220502> cat /dev/zero | hexdump -C | head -20
^C
cassini/home/peter/bo/2022ss/bs/20220502> dd if=/dev/zero bs=1024 count=1 | hexdump -C
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
1+0 Datensätze ein
1+0 Datensätze aus
*
00000400
1024 bytes (1,0 kB, 1,0 KiB) copied, 6,6155e-05 s, 15,5 MB/s
cassini/home/peter/bo/2022ss/bs/20220502>

20220502/filesystems-11.txt

deleted100644 → 0
+0 −5
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220502> cat /dev/zero > /dev/sdb
bash: /dev/sdb: Keine Berechtigung
cassini/home/peter/bo/2022ss/bs/20220502> sudo cat /dev/zero > /dev/sdb
bash: /dev/sdb: Keine Berechtigung
cassini/home/peter/bo/2022ss/bs/20220502>

20220502/filesystems-12.txt

deleted100644 → 0
+0 −11
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220502# dd if=/dev/sdb bs=1024 count=1024 | hexdump -C     00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00100000
1024+0 Datensätze ein
1024+0 Datensätze aus
1048576 bytes (1,0 MB, 1,0 MiB) copied, 0,121808 s, 8,6 MB/s
cassini/home/peter/bo/2022ss/bs/20220502# mount /media/usb1/
mount: /media/usb1: special device /dev/sdb1 does not exist.
cassini/home/peter/bo/2022ss/bs/20220502# mount /media/usb0
mount: /media/usb0: wrong fs type, bad option, bad superblock on /dev/sdb, missing codepage or helper program, or other error.
cassini/home/peter/bo/2022ss/bs/20220502#

20220502/filesystems-13.txt

deleted100644 → 0
+0 −13
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220502# ls -l /dev/sdb*
brw-rw---- 1 root disk 8, 16 Mai  2 13:22 /dev/sdb
cassini/home/peter/bo/2022ss/bs/20220502# echo "Dies ist ein Test." > /dev/sdb
cassini/home/peter/bo/2022ss/bs/20220502# dd if=/dev/sdb bs=1024 count=1024 | hexdump -C
00000000  44 69 65 73 20 69 73 74  20 65 69 6e 20 54 65 73  |Dies ist ein Tes|
00000010  74 2e 0a 00 00 00 00 00  00 00 00 00 00 00 00 00  |t...............|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00100000
1024+0 Datensätze ein
1024+0 Datensätze aus
1048576 bytes (1,0 MB, 1,0 MiB) copied, 0,123712 s, 8,5 MB/s
cassini/home/peter/bo/2022ss/bs/20220502#

20220502/filesystems-16.txt

deleted100644 → 0
+0 −11
Original line number Original line Diff line number Diff line
cassini/home/peter/bo/2022ss/bs/20220502# cp -pi ../common/os-layers-5.jpg /media/usb0/
cp: der Eigentümer für '/media/usb0/os-layers-5.jpg' konnte nicht beibehalten werden: Die Operation ist nicht erlaubt
cassini/home/peter/bo/2022ss/bs/20220502# ls -l ../common/os-layers-5.jpg
-rw-r--r-- 1 peter peter 54499 Mai  4  2015 ../common/os-layers-5.jpg
cassini/home/peter/bo/2022ss/bs/20220502# ls -l /media/usb0/
insgesamt 68
drwxr-xr-x  2 root root  4096 Mai  2 14:03 .
drwxr-xr-x 17 root root  4096 Dez  4  2020 ..
-rwxr-xr-x  1 root root 54499 Mai  4  2015 os-layers-5.jpg
-rwxr-xr-x  1 root root    19 Mai  2 13:30 test.txt
cassini/home/peter/bo/2022ss/bs/20220502#

20220502/filesystems-2.txt

deleted100644 → 0
+0 −11

File deleted.

Preview size limit exceeded, changes collapsed.

20220502/filesystems-3.txt

deleted100644 → 0
+0 −5

File deleted.

Preview size limit exceeded, changes collapsed.

20220502/filesystems-4.txt

deleted100644 → 0
+0 −8

File deleted.

Preview size limit exceeded, changes collapsed.

20220502/filesystems-5.txt

deleted100644 → 0
+0 −42

File deleted.

Preview size limit exceeded, changes collapsed.

20220502/filesystems-7.txt

deleted100644 → 0
+0 −42

File deleted.

Preview size limit exceeded, changes collapsed.

20220502/filesystems-8.txt

deleted100644 → 0
+0 −43

File deleted.

Preview size limit exceeded, changes collapsed.

20220502/filesystems-9.txt

deleted100644 → 0
+0 −21

File deleted.

Preview size limit exceeded, changes collapsed.

20220502/read-1.c

deleted100644 → 0
+0 −10

File deleted.

Preview size limit exceeded, changes collapsed.

20220502/read-2.c

deleted100644 → 0
+0 −10

File deleted.

Preview size limit exceeded, changes collapsed.

20220502/read-3.c

deleted100644 → 0
+0 −10

File deleted.

Preview size limit exceeded, changes collapsed.

20220502/read-4.c

deleted100644 → 0
+0 −11

File deleted.

Preview size limit exceeded, changes collapsed.

20220502/read-5.c

deleted100644 → 0
+0 −11

File deleted.

Preview size limit exceeded, changes collapsed.

20220502/read-6.c

deleted100644 → 0
+0 −11

File deleted.

Preview size limit exceeded, changes collapsed.

20220502/read-7.c

deleted100644 → 0
+0 −12

File deleted.

Preview size limit exceeded, changes collapsed.

+8 −0

File added.

Preview size limit exceeded, changes collapsed.

+7 −0

File added.

Preview size limit exceeded, changes collapsed.

+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20250324/hello-01.sh

0 → 100755
+5 −0

File added.

Preview size limit exceeded, changes collapsed.

20250324/hello-02.sh

0 → 100755
+5 −0

File added.

Preview size limit exceeded, changes collapsed.

20250324/ls

0 → 100755
+4 −0

File added.

Preview size limit exceeded, changes collapsed.

20250324/mic

0 → 100755
+64 −0

File added.

Preview size limit exceeded, changes collapsed.

20250324/path-01.txt

0 → 100644
+45 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/find-01.txt

0 → 100644
+23 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/find-02.txt

0 → 100644
+25 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/find-03.txt

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/find-04.txt

0 → 100644
+7 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/mount-01.txt

0 → 100644
+41 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/mount-02.txt

0 → 100644
+3 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/pause-01.txt

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/pipes-01.txt

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/pipes-02.txt

0 → 100644
+27 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/pipes-03.txt

0 → 100644
+20 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/pipes-04.txt

0 → 100644
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/pipes-05.txt

0 → 100644
+3 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/regexp-01.txt

0 → 100644
+11 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/regexp-02.txt

0 → 100644
+7 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/regexp-03.txt

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/regexp-04.txt

0 → 100644
+30 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/regexp-05.txt

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/regexp-06.txt

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/regexp-07.txt

0 → 100644
+17 −0

File added.

Preview size limit exceeded, changes collapsed.

+31 −0

File added.

Preview size limit exceeded, changes collapsed.

+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/test-1.txt

0 → 100644
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/test-2.txt

0 → 100644
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/test-3.txt

0 → 100644
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/test-4.txt

0 → 100644
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/test-5.txt

0 → 100644
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/test-6.txt

0 → 100644
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250331/test-8.txt

0 → 100644
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

+1 −0

File added.

Preview size limit exceeded, changes collapsed.

+291 −0

File added.

Preview size limit exceeded, changes collapsed.

20250407/pgscript.sty

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

+11 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/case-01.txt

0 → 100644
+48 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/date-01.txt

0 → 100644
+11 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/date-02.txt

0 → 100644
+23 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/disks-01.txt

0 → 100644
+89 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/disks-02.txt

0 → 100644
+28 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/disks-03.txt

0 → 100644
+0 −0
Original line number Original line Diff line number Diff line

20250414/disks-04.txt

0 → 100644
+63 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/fehler.txt

0 → 100644
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/hello-01.cfg

0 → 100644
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/hello-02.cfg

0 → 100755
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/hello.sh

0 → 100755
+3 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/if-01.txt

0 → 100644
+21 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/if-02.txt

0 → 100644
+17 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/if-03.txt

0 → 100644
+27 −0

File added.

Preview size limit exceeded, changes collapsed.

+3 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/loops-01.txt

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/loops-02.txt

0 → 100644
+12 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/test.txt

0 → 100644
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/while-01.sh

0 → 100755
+11 −0

File added.

Preview size limit exceeded, changes collapsed.

20250414/while-02.sh

0 → 100755
+11 −0

File added.

Preview size limit exceeded, changes collapsed.

20250428/Makefile

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250428/blink-01.c

0 → 100644
+18 −0

File added.

Preview size limit exceeded, changes collapsed.

20250428/blink-01.hex

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20250428/blink-01.s

0 → 100644
+40 −0

File added.

Preview size limit exceeded, changes collapsed.

20250428/blink-09.c

0 → 100644
+32 −0

File added.

Preview size limit exceeded, changes collapsed.

20250428/blink-09.s

0 → 100644
+84 −0

File added.

Preview size limit exceeded, changes collapsed.

20250428/blink-10.c

0 → 100644
+32 −0

File added.

Preview size limit exceeded, changes collapsed.

20250428/blink-10.s

0 → 100644
+81 −0

File added.

Preview size limit exceeded, changes collapsed.

+9 −0

File added.

Preview size limit exceeded, changes collapsed.

+10 −0

File added.

Preview size limit exceeded, changes collapsed.

+10 −0

File added.

Preview size limit exceeded, changes collapsed.

+28 −0

File added.

Preview size limit exceeded, changes collapsed.

+10 −0

File added.

Preview size limit exceeded, changes collapsed.

+10 −0

File added.

Preview size limit exceeded, changes collapsed.

+28 −0

File added.

Preview size limit exceeded, changes collapsed.

+11 −0

File added.

Preview size limit exceeded, changes collapsed.

+479 −0

File added.

Preview size limit exceeded, changes collapsed.

+51 −0

File added.

Preview size limit exceeded, changes collapsed.

+101 −0

File added.

Preview size limit exceeded, changes collapsed.

+22 −0

File added.

Preview size limit exceeded, changes collapsed.

20250428/download.sh

0 → 100755
+3 −0

File added.

Preview size limit exceeded, changes collapsed.

20250428/pgslides.sty

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

+507 −0

File added.

Preview size limit exceeded, changes collapsed.

+7 −0

File added.

Preview size limit exceeded, changes collapsed.

20250505/chardev-04.c

0 → 100644
+205 −0

File added.

Preview size limit exceeded, changes collapsed.

+49 −0

File added.

Preview size limit exceeded, changes collapsed.

+11 −0

File added.

Preview size limit exceeded, changes collapsed.

+18 −0

File added.

Preview size limit exceeded, changes collapsed.

+14 −0

File added.

Preview size limit exceeded, changes collapsed.

+16 −0

File added.

Preview size limit exceeded, changes collapsed.

+14 −0

File added.

Preview size limit exceeded, changes collapsed.

+24 −0

File added.

Preview size limit exceeded, changes collapsed.

+25 −0

File added.

Preview size limit exceeded, changes collapsed.

+27 −0

File added.

Preview size limit exceeded, changes collapsed.

20250505/hello-01.s

0 → 100644
+24 −0

File added.

Preview size limit exceeded, changes collapsed.

20250505/hello-02.s

0 → 100644
+24 −0

File added.

Preview size limit exceeded, changes collapsed.

20250505/hellomod-03.c

0 → 100644
+22 −0

File added.

Preview size limit exceeded, changes collapsed.

20250505/hellomod-04.c

0 → 100644
+22 −0

File added.

Preview size limit exceeded, changes collapsed.

20250505/hellomod-05.c

0 → 100644
+22 −0

File added.

Preview size limit exceeded, changes collapsed.

20250505/pgslides.sty

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

+156 −0

File added.

Preview size limit exceeded, changes collapsed.

+89 −0

File added.

Preview size limit exceeded, changes collapsed.

20250512/glibc-01.txt

0 → 100644
+44 −0

File added.

Preview size limit exceeded, changes collapsed.

20250512/glibc-02.txt

0 → 100644
+44 −0

File added.

Preview size limit exceeded, changes collapsed.

20250512/glibc-03.txt

0 → 100644
+44 −0

File added.

Preview size limit exceeded, changes collapsed.

20250512/glibc-04.txt

0 → 100644
+44 −0

File added.

Preview size limit exceeded, changes collapsed.

20250512/glibc-05.txt

0 → 100644
+44 −0

File added.

Preview size limit exceeded, changes collapsed.

20250512/glibc-06.txt

0 → 100644
+44 −0

File added.

Preview size limit exceeded, changes collapsed.

20250512/glibc-07.txt

0 → 100644
+44 −0

File added.

Preview size limit exceeded, changes collapsed.

20250512/hello-02.s

0 → 100644
+4253 −0

File added.

Preview size limit exceeded, changes collapsed.

20250512/pgslides.sty

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

+324 −0

File added.

Preview size limit exceeded, changes collapsed.

20250519/pgslides.sty

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

+268 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/exploit-1.c

0 → 100644
+19 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/exploit-2.c

0 → 100644
+26 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/exploit-2a.c

0 → 100644
+26 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/exploit-3.c

0 → 100644
+29 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/mmu.txt

0 → 100644
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/pgslides.sty

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/server-0.c

0 → 100644
+24 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/server-0a.c

0 → 100644
+41 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/server-1.c

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/server-2.c

0 → 100644
+33 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/server-3.c

0 → 100644
+34 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/server-4.c

0 → 100644
+33 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/shm-1a.c

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/shm-2a.c

0 → 100644
+11 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/shm-2b.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/shm-3a.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/shm-3b.c

0 → 100644
+15 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/shm-4a.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/shm-4b.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/shm-5-01.txt

0 → 100644
+35 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/shm-5a.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/shm-5b.c

0 → 100644
+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/shm-6-01.txt

0 → 100644
+8 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/shm-6a.c

0 → 100644
+16 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/shm-6b.c

0 → 100644
+16 −0

File added.

Preview size limit exceeded, changes collapsed.

20250526/shm-cleanup.c

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

+370 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/exploit-1.c

0 → 100644
+19 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/exploit-2.c

0 → 100644
+26 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/exploit-2a.c

0 → 100644
+26 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/exploit-3.c

0 → 100644
+25 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/exploit-4.c

0 → 100644
+26 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/fat-03.txt

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/fat-05.txt

0 → 100644
+76 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/fat-06.txt

0 → 100644
+78 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/fat-07.txt

0 → 100644
+505 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/meltdown-01.c

0 → 100644
+13 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/meltdown-02.c

0 → 100644
+33 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/pgslides.sty

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/server-0.c

0 → 100644
+24 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/server-0a.c

0 → 100644
+41 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/server-1.c

0 → 100644
+10 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/server-2.c

0 → 100644
+33 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/server-3.c

0 → 100644
+34 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/server-4.c

0 → 100644
+33 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/shm-7a.c

0 → 100644
+17 −0

File added.

Preview size limit exceeded, changes collapsed.

20250602/shm-7b.c

0 → 100644
+16 −0

File added.

Preview size limit exceeded, changes collapsed.

+213 −0

File added.

Preview size limit exceeded, changes collapsed.

+14 −0

File added.

Preview size limit exceeded, changes collapsed.

20250616/pgslides.sty

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

+1806 −0

File added.

Preview size limit exceeded, changes collapsed.

+159 −0

File added.

Preview size limit exceeded, changes collapsed.

20250623/dsc_8208.jpg

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250623/pgslides.sty

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250623/rp6.jpg

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250623/xbee.jpg

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

+1806 −0

File added.

Preview size limit exceeded, changes collapsed.

+17 −0

File added.

Preview size limit exceeded, changes collapsed.

20250630/dsc_8208.jpg

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250630/pgslides.sty

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250630/rp6.jpg

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

20250630/xbee.jpg

0 → 120000
+1 −0

File added.

Preview size limit exceeded, changes collapsed.

README.md

0 → 100644
+63 −0

File added.

Preview size limit exceeded, changes collapsed.

bs-slides-2025ss.tex

0 → 100644
+37 −0

File added.

Preview size limit exceeded, changes collapsed.

File changed.

Preview size limit exceeded, changes collapsed.

File changed.

Preview size limit exceeded, changes collapsed.

projekte.txt

0 → 100644
+120 −0

File added.

Preview size limit exceeded, changes collapsed.

termine.txt

0 → 100644
+16 −0

File added.

Preview size limit exceeded, changes collapsed.

update

0 → 100755
+207 −0

File added.

Preview size limit exceeded, changes collapsed.