PARTE 2

a questo punto creiamo una cartella...chiamata mnt2
mkdir /mnt2
in questa cartella andremo a copiare tutto ciò che vogliamo compaia nel nostro linux
ossia copiamo ad esempio in questo modo

cp -r /boot /mnt2

cp -dpr /bin /mnt2

cp -dpr /sbin /mnt2

cp -dpR /dev /mnt2

cp -dpR /var /mnt2

cp -dpr /etc /mnt2

mkdir /mnt2/proc

mkdir /mnt2/tmp
mkdir /mnt2/sys

cp -dpR /lib /mnt2

mkdir /mnt2/home
mkdir /mnt2/home/ftp
mkdir /mnt2/mnt
mkdir /mnt2/mnt/floppy
mkdir /mnt2/mnt/cdrom
mkdir /mnt2/mnt/dvd
mkdir /mnt2/mnt/digicam
mkdir /mnt2/mnt/ram
mkdir /mnt2/mnt/ram2
mkdir /mnt2/mnt/c
mkdir /mnt2/mnt/d
mkdir /mnt2/mnt/e
mkdir /mnt2/mnt/f
mkdir /mnt2/mnt/g
mkdir /mnt2/mnt/proc
cp -dR /usr/ /mnt2


Ora in /mnt2 avremo il nostro minilinux.
Copiamo anche l'immagine del floppy floppy.img in /boot con
cp /floppy.img /boot

Andiamo in /mnt2/etc/rc.d/
e modifichiamo rc.S in questo modo

#!/bin/sh
PS1='\u:\w>\$'
export PS1
DIS="/dev/ram0"
clear
trap "" 1 2 3 15
echo "Benvenuti in Mini Linux"
echo "Scegliere il dispositivo sul quale caricare MiniLinux"
echo "es. /dev/hda6 oppure /dev/hdb5, /dev/hda1 ecc.."
echo "Il default e' /dev/ram0"
echo "Fare molta attenzione: tutti i dati verrano cancellati irrimediabilmente"
echo "Il dispositivo verra' formattato.Enter per confermare il default"
read DISPO
if [ "$DISPO" != "" ]; then
DIS=$DISPO
echo "Al termine del caricamento modificare il file /etc/lilo.conf aggiungendo:"

echo "image = /boot/vmlinuz"
echo "root = $DIS"
echo "label = Minilinux"
echo "Salvare il file e digitare:"
echo "lilo"
fi
echo "Sto per formattare $DIS"
echo "Enter per confermare - Altro per riavviare"
read OPZ
if [ "$OPZ" = "" ]; then
mkfs.ext2 $DIS
mount $DIS /mnt
else
echo "Riavvio sistema"
mount -t proc /proc /proc
reboot
fi

echo "Creazione filesystem root e caricamento in $DIS"
echo "Al termine del caricamento in caso di problemi con alcuni comandi digitare:"
echo "chroot /mnt"
echo "mount -t proc /proc /proc"
echo "mkswap /dev/hdb6 ******** dove /dev/hdb6 sara' la partizione di swap"
echo "swapon /dev/hdb6"
echo "Enter per continuare"
read ENTRATA
clear
echo "Attendere....."
/sbin/swapon -a
cp -r /boot /mnt
echo "/boot copiata"
cp -dpr /bin /mnt
echo "/bin copiata"
cp -dpr /sbin /mnt
echo "/sbin copiata"
cp -dpR /dev /mnt
echo "Dispositivi copiati"
cp -dpR /var /mnt
echo "/var copiata"
cp -dpr /etc /mnt
echo "/etc copiata"
if [ "$DIS" != "/dev/ram0" ]; then
rm /mnt/etc/rc.d/rc.S
cp /mnt/etc/rc.d/rc.SD /mnt/etc/rc.d/rc.S
fi
cp -dpR /lib /mnt
echo "Librerie copiate"

# cp -r /boot /mnt

mkdir /mnt/proc
mkdir /mnt/proc/mounts
mount -t proc /proc /mnt/proc
echo "Processi ricostruiti"
mkdir /mnt/tmp
echo "Creazione directory file temporanei /tmp terminata"
cp -r /root /mnt
mkdir /mnt/home
mkdir /mnt/home/ftp
mkdir /mnt/mnt
mkdir /mnt/mnt/floppy
mkdir /mnt/mnt/cdrom
mkdir /mnt/mnt/dvd
mkdir /mnt/mnt/digicam
mkdir /mnt/mnt/ram
mkdir /mnt/mnt/ram2
mkdir /mnt/mnt/c
mkdir /mnt/mnt/d
mkdir /mnt/mnt/e
mkdir /mnt/mnt/f
mkdir /mnt/mnt/g
mkdir /mnt/mnt/proc
cp /usr/bin/fdformat /mnt/bin
echo "Creazione directory di mount /mnt terminata"
echo "A causa delle notevoli dimensioni e' possibile scegliere se copiare"
echo "la directory /usr in memoria.In questa directory sono contenuti molti"
echo "comandi importanti e numerosi file di configurazione."
echo "Se possibile si consiglia di caricarla in memoria"
echo "Copiare questa directory (s/n)?"
read ANDREA
if [ "$ANDREA" = "s" ]; then
echo "Sto copiando /usr"
rm /mnt/bin/fdformat
cp -dR /usr/ /mnt
echo "/usr copiata"
fi

echo "Caricamento e creazione del filesystem root terminata"

clear
echo "Benvenuti in Mini Linux "
echo "******************* IMPORTANTE *******************"
echo "Digitare subito"
echo "chroot /mnt"
echo "all'avvio di ogni console"
echo "************************************************* *"
echo "Per configurare periferiche usb, tastiera"
echo "caricare i moduli ntfs, apm, ide-scsi e scsi_debug"
echo "digitare minilinux"
echo "************************************************* *"
echo "Digitare"
echo "chroot /mnt"
echo "adesso"
echo "************************************************* *"
#chroot /mnt
#mount -t proc /proc /proc

E andiamo anche a modificare il file /mnt2/etc/inittab in questo modo

#/etc/inittab
# Boot-time system configuration/initialization script.
# This is run first except when booting in single-user mode.
::sysinit:/etc/rc.d/rc.S

# Login /bin/sh invocations on selected ttys.
#
# Start a shell on the console
::respawn:-/bin/sh
# Start an "askfirst" shell on tty2 and tty3
tty2::askfirst:-/bin/sh
tty3::askfirst:-/bin/sh
tty4::askfirst:-/bin/sh
tty5::askfirst:-/bin/sh
tty6::askfirst:-/bin/sh
#c5:2345:respawn:/sbin/agetty 38400 tty5
#c6:2345:respawn:/sbin/agetty 38400 tty6
# /sbin/getty invocations for selected ttys.
#
#tty1::respawn:/sbin/getty 38400 tty1
#tty2::respawn:/sbin/getty 38400 tty2

# Example of how to put a getty on a serial line (for a terminal)
#
#ttyS0::respawn:/sbin/getty -L ttyS0 9600 vt100
#ttyS1::respawn:/sbin/getty -L ttyS1 9600 vt100
#
# Example how to put a getty on a modem line.
#ttyS2::respawn:/sbin/getty -x0 -s 57600 ttyS2

# Reboot when ctrl-alt-del keys are pressed.
::ctrlaltdel:/sbin/reboot
#::ctrlaltdel:/sbin/brc

# Stuff to do before halting or rebooting.
::shutdown:/sbin/swapoff -a >/dev/null 2>&

Questo perchè quando il cdrom si avvierà partirà succederà pressapoco questo:

Parte il cd avviabile richiamato dal bios.
Il cd avviabile parte grazie all'immagine del floppy avviabile che abbiamo creato (floppy.img) contenuta nel cd per l'appunto
Nel floppy c'è il kernel vmlinuz.
Viene caricato il kernel.
In seguito viene caricato dall'immagine avviabile del floppy lo script syslinux.cfg che setta il filesystem root su /dev/hdc e setta una ramdisk di dimensione 100000 in blocchi (il file che fa questo è syslinux.cfg)

Poi il tutto passa al processo init...letto da /dev/hdc
init andrà a leggersi un sacco di cose fra le quali /etc/inittab e /etc/rc.d/rc.S (in slackware)
rc.S secondo come lo abbiamo creato noi copia il linux da /dev/hdc al disposisitivo /dev/ram0 (che viene creato e formattato nelle prime righe dell' rc.S stesso)
Precisazione il file syslinux.cfg setta la grandezza della ramdisk con ramdisk_size=100000
Nello script /mnt2/etc/rc.d/rc.S (in slackware) viene formattato /dev/ram0 (che dobbiamo aver copiato all'inizio (con cp -dpR /dev /mnt2)
Se in /dev/ non c'era ram0 dobbiamo crearlo noi...come non lo so ma sicuramente con mknod.)

Ora Terminato lo script rc.S abbiamo in /dev/ram0 (montato su /mnt quindi difatto in /mnt) il nostro linux.
In sostanza abbiamo il nostro linux in memoria.A questo punto...non ci resta che dare appena compare il prompt un bel
chroot /mnt (oppure inserirlo anch'esso in rc.S ma consiglio di darlo da prompt poichè c'è qualche problema con la shell)
ossia diciamo al nostro linux che finora è stato caricato interamente da cdrom (ossia da dove era caricato il filesystem root dall'inizio cioè nel mio caso da /dev/hdc secondo quanto impostato in syslinux.cfg) di cambiare il filesystem di root da /dev/hdc in sola lettura a /mnt in scrittura e lettura.
Bene a questo punto il gioco è fatto e linux è pronto per essere usato..
Non resta che caricare un po' di moduli ad esempio con
insmod ntfs
insmod apm
(se li avete naturalmente copiati dall'harddisk al cdrom inizialmente) e se il kernel inserito nell'immagine del floppy era predisposto a caricare questi moduli ad esempio.
IO mi sono creato uno script avviabile che ho chiamato minilinux è che è così fatto: