Praktische Einführung mit Virtualisierung
Stefan Bosse
Universität Koblenz - FB Informatik
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS ::
Kernel
Anwenderprogrammme
Standardbibliothek
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS :: Kernel
Der Kernel des Basesystem OS hat eine klassische monolithische Kernelarchitektur. Wesentliche Bestandteile der innersten ersten Schicht und Basisdienste sind:
kernelcore.S
main.c
page.c
(VMM)pagetable.c
(VMM)kmalloc.c
process.c
(Programmausführung)elf.c
(Programmformat)syscall_handler.c
event.c
interrupt.c
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS :: Kernel
Weitere Bestandteile der zweiten Schicht und Basisdienste sind:
Gerätemanagement
device.c
(Gerätetreiberschnittstelle)pipe.c
(Queues zwischen Prozessen)Dateisystem
diskfs.c
fs.c
(allgemeine Dateisystemschnittstelle)cdromfs.c
(Block) Cache
bcache.c
Ein- und Ausgabe (eher minimale Standardblibliothek für den Kernel)
console.c
printf.c
string.c
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS :: Kernel
Weitere Bestandteile der nullten Schicht sind hardwarenahe Komponenten:
Gerätetreiber
console.c
graphics.c
pic.c
(Interruptcontroller)ata.c
(Parallele Geräteschnittstelle für Blockgeräte, HDD, CDROM)clock.c
(Timer)keyboard.c
(Tastatur)serical.c
(Serielle UART Schnittstelle)rtc.c
(Real Time Clock ⇒ Systemuhr)Datenstrukturen
list.c
hash_set.c
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS :: Kernel
Schichtenaufbau des monolithischen Basekernel
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS :: Standardbibliothek
Die Standardbibliothek implementiert häufig vorkommende Funktionen für:
Sie wird von allen Nutzerprogrammen (user space) verwendet. Funktionen für Netzwerkzugriff (Sockets) und vieles mehr kann noch enthalten sein.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS :: Standardbibliothek
Systemaufrufschnittstelle
syscalls.s
syscall.S
Speichermanagement (USer space)
malloc.c
Ein- und Ausgabe
stdio.c
Sonstiges
user_start-c
(Start eines Benutzerprogramms)errno.
c (Fehlerbehandlung)Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS :: Standardbibliothek
Zeichenketten
string.c
Allgemeine Funktionen
stdlib.c
(Programmausführung, Zeit, Systeminformation usw.) Konsole und Grafiksystem (Fenster)
nwindow.c
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS :: Benutzerpogramme
Im wesentlichen gibt es nur eine Shell. Die Aufgabe einer Shell ist:
Dabei sollen zwei primäre Schnittstellen zum Betriebssystem auf programmatische und interaktive Weise zur Verfügung gestellt werden (Operationalität):
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS :: Shell
Die meisten gängigen Unix-Shells bieten die folgenden Funktionen:
Wikipedia
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS :: Shell
Moderne Shells können darüber hinaus:
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS :: Shell
Shellskripte sind Text-Dateien und stellen kleine Programme dar.
Die Shell liest das Skript aus und führt die Befehle entsprechend aus. Zu beachten ist, dass man alle Befehle, die man „händisch“ in die Shell eingibt, auch über ein Skript ausführen kann und umgekehrt.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS :: Dienstprogramme
shell.c
(sehr einfacher Shell Intepreter, kein Skripting)procstat.c
systats.c
livestat.c
(Information über Gerätetreiber/Gerät und Cache)copy.c
(Datei kopieren)manager.c
(Grafiksystem, Verwaltung von Fenstern)Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS :: Der Erzeugungsprozess
Es müssen folgende Komponenten von Quellcode (C/Assembler) in binäre Programmdaten übersetzt werden:
kernel
) und Bootloader (bootblock
)baselib.a
)baselib.a
Für den gesamtn Übersetzungsprozess wird ein GCC Kompiler verwendet. Dieser enthält neben dem Präprozessor cpp, den eigentlichen Kompiler cc noch einen Assembler as und einen Linker ld. Weitere Hilfsprogramme vor allem für das ELF Format werden benutzt (objdump, objcopy, ar).
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS :: Der Erzeugungsprozess
Es muss GCC mit 32 Bit x86 ELF (Executable Link Format) verwendet werden. Andere Prrogrammformate und Prozessorarchitekturen führen zu einem nicht funktionieren Basekernl OS (sowohl Kernel als auch Nutzerprogramme).
make (englisch für machen, erstellen) ist ein Build-Management-Tool, das Kommandos in Abhängigkeit von Bedingungen ausführt. Es wird hauptsächlich bei der Softwareentwicklung als Programmierwerkzeug eingesetzt.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS :: Der Erzeugungsprozess
make liest eine teils prozedurale und teils deklarative Anweisungsdatei (Makefile), in dem die Abhängigkeiten des Übersetzungsprozesses von Programmen formalisiert erfasst sind.
Diese Formalisierung beschreibt, welche Quelltextdateien auf welche Weise durch den Compiler oder durch andere Programme zu welchen Objektdateien bzw. Ergebnissen verarbeitet werden, bzw. welche Objektdateien vom Linker zu Programmbibliotheken oder ausführbaren Programmen verbunden werden.
Alle Schritte erfolgen unter Beachtung der im Makefile erfassten Abhängigkeiten.[2]
Wenn das Makefile vom make-Programm abgearbeitet wird, wird eine Umwandlung etwa einer Quelldatei in eine Objektdatei nur dann vorgenommen, wenn die Quelldatei neuer als die bereits vorliegende Version der Ergebnisdatei ist, bzw. wenn keine Ergebnisdatei vorhanden ist.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K Das Basekernel OS :: Der Erzeugungsprozess
include Makefile.configLIBRARY_SOURCES=$(wildcard library/*.c)LIBRARY_HEADERS=$(wildcard library/*.h)USER_SOURCES=$(wildcard user/*.c)USER_PROGRAMS=$(USER_SOURCES:c=exe)KERNEL_SOURCES=$(wildcard kernel/*.[chS])WORDS=/usr/share/dict/words.PHONY: build-kernel build-library build-userspace build-cdrom-imageall: build-cdrom-imagebuild-kernel: kernel/basekernel.imgbuild-library: library/baselib.abuild-userspace: $(USER_PROGRAMS)build-cdrom-image: basekernel.isokernel/basekernel.img: $(KERNEL_SOURCES) $(LIBRARY_HEADERS) cd kernel && makelibrary/baselib.a: $(LIBRARY_SOURCES) $(LIBRARY_HEADERS) cd library && make$(USER_PROGRAMS): $(USER_SOURCES) library/baselib.a $(LIBRARY_HEADERS) cd user && makeimage: kernel/basekernel.img $(USER_PROGRAMS) rm -rf image mkdir image image/boot image/bin image/data cp kernel/basekernel.img image/boot cp $(USER_PROGRAMS) image/bin if [ -f ${WORDS} ]; then head -2000 ${WORDS} > image/data/words; fibasekernel.iso: image ${ISOGEN} -input-charset utf-8 -iso-level 2 -J -R -o $@ -b boot/basekernel.img imagedisk.img: qemu-img create disk.img 10Mrun: basekernel.iso disk.img qemu-system-i386 -cdrom basekernel.iso -hda disk.imgdebug: basekernel.iso disk.img qemu-system-i386 -cdrom basekernel.iso -hda disk.img -s -S &clean: rm -rf basekernel.iso image disk.img cd kernel && make clean cd library && make clean cd user && make clean
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K and uncomment this: :: Der Erzeugungsprozess
KERNEL_CCFLAGS=-Wall -c -ffreestanding -fno-pie -g -std=gnu99# These settings select the native compiler,# which is likely to work on native linux-x86.#CC=gcc -m32LD=ld -melf_i386#LD=ld -arch i386AR=arOBJCOPY=objcopy -R .note.gnu.propertyISOGEN=genisoimage# If you are compiling from another platform,# then use the script build-cross-compiler.sh# add cross/bin to your path, and uncomment these lines:#CC=i686-elf-gcc#LD=i686-elf-ld#AR=i686-elf-ar#OBJCOPY=i686-elf-objcopy# If building on OSX, then install mkisofs via ports or brew# and uncomment this:#ISOGEN=mkisofs
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K and uncomment this: :: Der Erzeugungsprozess
include ../Makefile.configKERNEL_OBJECTS=kernelcore.o main.o console.o page.o keyboard.o mouse.o event_queue.o clock.o interrupt.o kmalloc.o pic.o ata.o cdromfs.o string.o bitmap.o graphics.o font.o syscall_handler.o process.o mutex.o list.o pagetable.o rtc.o kshell.o fs.o hash_set.o diskfs.o serial.o elf.o device.o kobject.o pipe.o bcache.o printf.o is_valid.o window.obasekernel.img: bootblock kernel cat bootblock kernel /dev/zero | head -c 1474560 > basekernel.imgkernel: kernel.elf ${OBJCOPY} -O binary $< $@bootblock: bootblock.elf ${OBJCOPY} -O binary $< $@kernel.elf: ${KERNEL_OBJECTS} ${LD} ${KERNEL_LDFLAGS} -Ttext 0x10000 ${KERNEL_OBJECTS} -o $@bootblock.elf: bootblock.o ${LD} ${KERNEL_LDFLAGS} -Ttext 0 $< -o $@%.o: %.c ${CC} ${KERNEL_CCFLAGS} -I ../include $< -o $@%.o: %.S ${CC} ${KERNEL_CCFLAGS} -I ../include $< -o $@clean: rm -rf basekernel.img *.o *.elf kernel bootblock bootblock.o
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K and uncomment this: :: Der Erzeugungsprozess
cd kernel && makemake[1]: Entering directory '/home/sbosse/proj/vm42/src/basekernel/kernel'gcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include bootblock.S -o bootblock.old -melf_i386 -Ttext 0 bootblock.o -o bootblock.elfobjcopy -R .note.gnu.property -O binary bootblock.elf bootblockgcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include kernelcore.S -o kernelcore.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include main.c -o main.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include console.c -o console.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include page.c -o page.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include keyboard.c -o keyboard.oIn file included from keyboard.c:42:keymap.de.pc.c:5:7: warning: multi-character character constant [-Wmultichar] {'3', '§', '3', 0}, ^~~~keymap.de.pc.c:5:7: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘49831’ to ‘-89’ [-Woverflow]keymap.de.pc.c:13:2: warning: multi-character character constant [-Wmultichar] {'ß', '?', 'ß','\\'}, ^~~~keymap.de.pc.c:13:2: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘50079’ to ‘-97’ [-Woverflow]keymap.de.pc.c:13:13: warning: multi-character character constant [-Wmultichar] {'ß', '?', 'ß','\\'}, ^~~~keymap.de.pc.c:13:13: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘50079’ to ‘-97’ [-Woverflow]keymap.de.pc.c:14:2: warning: multi-character character constant [-Wmultichar] {'´', '`', '´',0}, ^~~~keymap.de.pc.c:14:2: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘49844’ to ‘-76’ [-Woverflow]keymap.de.pc.c:14:13: warning: multi-character character constant [-Wmultichar] {'´', '`', '´',0}, ^~~~keymap.de.pc.c:14:13: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘49844’ to ‘-76’ [-Woverflow]keymap.de.pc.c:27:2: warning: multi-character character constant [-Wmultichar] {'ü', 'Ü', 0, 0}, ^~~~keymap.de.pc.c:27:2: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘50108’ to ‘-68’ [-Woverflow]keymap.de.pc.c:27:8: warning: multi-character character constant [-Wmultichar] {'ü', 'Ü', 0, 0}, ^~~~keymap.de.pc.c:27:8: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘50076’ to ‘-100’ [-Woverflow]keymap.de.pc.c:40:2: warning: multi-character character constant [-Wmultichar] {'ö', 'Ö', 'ö', 0}, ^~~~keymap.de.pc.c:40:2: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘50102’ to ‘-74’ [-Woverflow]keymap.de.pc.c:40:8: warning: multi-character character constant [-Wmultichar] {'ö', 'Ö', 'ö', 0}, ^~~~keymap.de.pc.c:40:8: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘50070’ to ‘-106’ [-Woverflow]keymap.de.pc.c:40:14: warning: multi-character character constant [-Wmultichar] {'ö', 'Ö', 'ö', 0}, ^~~~keymap.de.pc.c:40:14: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘50102’ to ‘-74’ [-Woverflow]keymap.de.pc.c:41:2: warning: multi-character character constant [-Wmultichar] {'ä', 'Ä', 'ä', 0}, ^~~~keymap.de.pc.c:41:2: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘50084’ to ‘-92’ [-Woverflow]keymap.de.pc.c:41:8: warning: multi-character character constant [-Wmultichar] {'ä', 'Ä', 'ä', 0}, ^~~~keymap.de.pc.c:41:8: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘50052’ to ‘-124’ [-Woverflow]keymap.de.pc.c:41:14: warning: multi-character character constant [-Wmultichar] {'ä', 'Ä', 'ä', 0}, ^~~~keymap.de.pc.c:41:14: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘50084’ to ‘-92’ [-Woverflow]keymap.de.pc.c:42:7: warning: multi-character character constant [-Wmultichar] {'^', '°', '^', 0}, ^~~~keymap.de.pc.c:42:7: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘49840’ to ‘-80’ [-Woverflow]gcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include mouse.c -o mouse.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include event_queue.c -o event_queue.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include clock.c -o clock.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include interrupt.c -o interrupt.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include kmalloc.c -o kmalloc.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include pic.c -o pic.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include ata.c -o ata.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include cdromfs.c -o cdromfs.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include string.c -o string.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include bitmap.c -o bitmap.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include graphics.c -o graphics.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include font.c -o font.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include syscall_handler.c -o syscall_handler.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include process.c -o process.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include mutex.c -o mutex.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include list.c -o list.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include pagetable.c -o pagetable.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include rtc.c -o rtc.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include kshell.c -o kshell.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include fs.c -o fs.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include hash_set.c -o hash_set.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include diskfs.c -o diskfs.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include serial.c -o serial.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include elf.c -o elf.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include device.c -o device.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include kobject.c -o kobject.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include pipe.c -o pipe.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include bcache.c -o bcache.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include printf.c -o printf.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include is_valid.c -o is_valid.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include window.c -o window.old -melf_i386 -Ttext 0x10000 kernelcore.o main.o console.o page.o keyboard.o mouse.o event_queue.o clock.o interrupt.o kmalloc.o pic.o ata.o cdromfs.o string.o bitmap.o graphics.o font.o syscall_handler.o process.o mutex.o list.o pagetable.o rtc.o kshell.o fs.o hash_set.o diskfs.o serial.o elf.o device.o kobject.o pipe.o bcache.o printf.o is_valid.o window.o -o kernel.elfobjcopy -R .note.gnu.property -O binary kernel.elf kernelcat bootblock kernel /dev/zero | head -c 1474560 > basekernel.imgmake[1]: Leaving directory '/home/sbosse/proj/vm42/src/basekernel/kernel'cd library && makemake[1]: Entering directory '/home/sbosse/proj/vm42/src/basekernel/library'gcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include user-start.c -o user-start.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include errno.c -o errno.ogcc -m32 -c -o syscall.o syscall.Sgcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include syscalls.c -o syscalls.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include string.c -o string.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include stdio.c -o stdio.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include stdlib.c -o stdlib.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include malloc.c -o malloc.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include kernel_object_string.c -o kernel_object_string.ogcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -I ../include nwindow.c -o nwindow.oar rv baselib.a errno.o syscall.o syscalls.o string.o stdio.o stdlib.o malloc.o kernel_object_string.o nwindow.oar: creating baselib.aa - errno.oa - syscall.oa - syscalls.oa - string.oa - stdio.oa - stdlib.oa - malloc.oa - kernel_object_string.oa - nwindow.omake[1]: Leaving directory '/home/sbosse/proj/vm42/src/basekernel/library'cd user && makemake[1]: Entering directory '/home/sbosse/proj/vm42/src/basekernel/user'gcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -O2 -I ../include ball.c -o ball.old -melf_i386 -Ttext 0x80000000 ../library/user-start.o ball.o ../library/baselib.a -o ball.exeobjcopy -R .note.gnu.property -R .comment --strip-debug ball.exeobjcopy: ball.exe: warning: empty loadable segment detected at vaddr=0x8048000, is this intentional?gcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -O2 -I ../include clock.c -o clock.old -melf_i386 -Ttext 0x80000000 ../library/user-start.o clock.o ../library/baselib.a -o clock.exeobjcopy -R .note.gnu.property -R .comment --strip-debug clock.exeobjcopy: clock.exe: warning: empty loadable segment detected at vaddr=0x8048000, is this intentional?gcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -O2 -I ../include copy.c -o copy.old -melf_i386 -Ttext 0x80000000 ../library/user-start.o copy.o ../library/baselib.a -o copy.exeobjcopy -R .note.gnu.property -R .comment --strip-debug copy.exeobjcopy: copy.exe: warning: empty loadable segment detected at vaddr=0x8048000, is this intentional?gcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -O2 -I ../include livestat.c -o livestat.old -melf_i386 -Ttext 0x80000000 ../library/user-start.o livestat.o ../library/baselib.a -o livestat.exeobjcopy -R .note.gnu.property -R .comment --strip-debug livestat.exeobjcopy: livestat.exe: warning: empty loadable segment detected at vaddr=0x8048000, is this intentional?gcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -O2 -I ../include manager.c -o manager.old -melf_i386 -Ttext 0x80000000 ../library/user-start.o manager.o ../library/baselib.a -o manager.exeobjcopy -R .note.gnu.property -R .comment --strip-debug manager.exeobjcopy: manager.exe: warning: empty loadable segment detected at vaddr=0x8048000, is this intentional?gcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -O2 -I ../include fractal.c -o fractal.old -melf_i386 -Ttext 0x80000000 ../library/user-start.o fractal.o ../library/baselib.a -o fractal.exeobjcopy -R .note.gnu.property -R .comment --strip-debug fractal.exeobjcopy: fractal.exe: warning: empty loadable segment detected at vaddr=0x8048000, is this intentional?gcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -O2 -I ../include procstat.c -o procstat.old -melf_i386 -Ttext 0x80000000 ../library/user-start.o procstat.o ../library/baselib.a -o procstat.exeobjcopy -R .note.gnu.property -R .comment --strip-debug procstat.exeobjcopy: procstat.exe: warning: empty loadable segment detected at vaddr=0x8048000, is this intentional?gcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -O2 -I ../include saver.c -o saver.old -melf_i386 -Ttext 0x80000000 ../library/user-start.o saver.o ../library/baselib.a -o saver.exeobjcopy -R .note.gnu.property -R .comment --strip-debug saver.exeobjcopy: saver.exe: warning: empty loadable segment detected at vaddr=0x8048000, is this intentional?gcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -O2 -I ../include shell.c -o shell.old -melf_i386 -Ttext 0x80000000 ../library/user-start.o shell.o ../library/baselib.a -o shell.exeobjcopy -R .note.gnu.property -R .comment --strip-debug shell.exeobjcopy: shell.exe: warning: empty loadable segment detected at vaddr=0x8048000, is this intentional?gcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -O2 -I ../include snake.c -o snake.old -melf_i386 -Ttext 0x80000000 ../library/user-start.o snake.o ../library/baselib.a -o snake.exeobjcopy -R .note.gnu.property -R .comment --strip-debug snake.exeobjcopy: snake.exe: warning: empty loadable segment detected at vaddr=0x8048000, is this intentional?gcc -m32 -Wall -c -ffreestanding -fno-pie -g -std=gnu99 -O2 -I ../include sysstat.c -o sysstat.old -melf_i386 -Ttext 0x80000000 ../library/user-start.o sysstat.o ../library/baselib.a -o sysstat.exeobjcopy -R .note.gnu.property -R .comment --strip-debug sysstat.exeobjcopy: sysstat.exe: warning: empty loadable segment detected at vaddr=0x8048000, is this intentional?rm manager.o ball.o copy.o shell.o saver.o fractal.o snake.o livestat.o procstat.o clock.o sysstat.omake[1]: Leaving directory '/home/sbosse/proj/vm42/src/basekernel/user'rm -rf imagemkdir image image/boot image/bin image/datacp kernel/basekernel.img image/bootcp user/manager.exe user/fractal.exe user/sysstat.exe user/shell.exe user/saver.exe user/clock.exe user/copy.exe user/livestat.exe user/ball.exe user/procstat.exe user/snake.exe image/binif [ -f /usr/share/dict/words ]; then head -2000 /usr/share/dict/words > image/data/words; figenisoimage -input-charset utf-8 -iso-level 2 -J -R -o basekernel.iso -b boot/basekernel.img imageSize of boot image is 2880 sectors -> Emulating a 1440 kB floppyTotal translation table size: 2048Total rockridge attributes bytes: 1946Total directory bytes: 6854Path table size(bytes): 46Max brk space used 1a0001159 extents written (2 MB)
Stefan Bosse - Grundlagen der Betriebssysteme - Modul K and uncomment this: :: TODO