2.8 HACER UN DISCO O PARTICIÓN DE ARRANQUE

Un disco o partición de arranque tiene las siguientes partes:

bulletBootblock - sector de arranque, situado en el 1er sector del disco o la partición
bulletBoot - boot monitor, situado en el directorio raiz /
bulletImage - ejecutable del s.o., situado en el directorio /minix

Un disco de arranque se construye con el programa mkboot y las herramientas del directorio /usr/src/tools

bulletMakefile
bulletinit.c - fuente del programa init
bulletmkboot - programa para construir el disco o partición de arranque
bulletps.c - realiza un print del estado de todos los procesos
bullettell_config - contiene parametros, para averigura si está configurada la red

 

mkboot realiza los siguientes pasos:

bulletinstala el bootblock en el primer sector del disco o de la partición

installboot -device $root $mdec/bootblock /boot || exit

bulletcopia el boot monitor en el directorio raiz /

install -cs - m 644 $mdec/boot $rootdir/boot || exit

bulletcopia image, el ejecutable del s.o., y lo deja en /minix

cp -p image $rootdir/minix/$target || exit

para un floppy las instrucciones son:

bulletinstallboot -d $dev $medc/bootblock boot || exit
bulletcp -p $mdec/boot /mnt/boot || exit
bulletcp -p image /mnt/minix || exit

De forma automatica se realiza con el comando make utilizando:

bullet

make

Compila las diferentes partes del sistema operativo y las combina en un fichero llamado image.

bullet

make fdboot

Construye el ejecutable del sistema operativo image y hace un floppy de arranque instalándolo con el boot y el bootblock.

bullet

make hdboot

Construye el ejecutable del sistema operativo image y los coloca en el directorio /minix, instala el boot en el directorio raiz /, e installa el bootblock en el primer sector de la partición minix.

 

# Makefile for the kernel image.

#

u=/usr

CC= exec cc

CFLAGS= -O -D_MINIX -D_POSIX_SOURCE

MDEC= /usr/mdec

MAKE= exec make -$(MAKEFLAGS)

inet=

PROGRAMS= ../kernel/kernel ../mm/mm ../fs/fs $(inet) init

programs:

cd ../kernel && $(MAKE)

cd ../mm && $(MAKE)

cd ../fs && $(MAKE)

@if [ `exec ./tell_config ENABLE_NETWORKING` = 0 ]; then \

$(MAKE) image; \

else \

echo "cd ../inet && $(MAKE)" && \

(cd ../inet && $(MAKE)) && \

$(MAKE) image inet=../inet/inet; \

fi

image: $(PROGRAMS)

installboot -image $@ $(PROGRAMS)

init: init.c

$(CC) $(CFLAGS) init.c -o $@

install -S 192w $@

ps: ps.c /usr/include/minix/config.h ../kernel/const.h \

../kernel/type.h ../kernel/proc.h ../mm/mproc.h \

../fs/fproc.h ../fs/const.h

$(CC) -i $(CFLAGS) -m -o $@ ps.c

install -S 16kw $@

/usr/bin/ps: ps

install -cs -o bin -g kmem -m 2755 $? $@

bootable:

exec su root mkboot bootable

hdboot: programs

exec sh mkboot $@

fdboot: programs

exec su root mkboot $@

all install clean::

cd ../kernel && $(MAKE) $@

cd ../mm && $(MAKE) $@

cd ../fs && $(MAKE) $@

cd ../inet && $(MAKE) $@

all:: ps

install:: /usr/bin/ps

clean::

rm -f *.bak init ps image