Comment créer un rescue floppy disk

Premièrement compiler un noyau minimaliste avec support ramdisk
Petite astuce : on peut modifier le makefile et utiliser un Os au lieu du O2
ceci va indiquer à gcc de compiler en optimisant sur une taille minimale

Créer un Filesystem on va créer un répertoire rootfs puis on aller dedans:

mkdir rootfs
cd rootfs
mkdir dev
mkdir proc
mkdir etc
mkdir sbin
mkdir bin
mkdir lib
mkdir mnt
mkdir usr
cp -dpR /dev/fd[01]* dev
cp -dpR /dev/tty[0-6] dev
cp -dpR /dev/console dev
cp -dpR /dev/kmem dev
cp -dpR /dev/mem dev
cp -dpR /dev/null dev
cp -dpR /dev/ram0 dev
ls -RAl rootfs/


drwxr-xr-x 2 root root 4096 Jul 9 15:15 bin
drwxr-xr-x 2 root root 4096 Jul 9 12:05 dev
drwxr-xr-x 2 root root 4096 Jul 9 15:12 etc
drwxr-xr-x 2 root root 4096 Jul 9 10:58 lib
drwxr-xr-x 2 root root 4096 Jul 9 10:58 mnt
drwxr-xr-x 2 root root 4096 Jul 9 10:58 proc
drwxr-xr-x 2 root root 4096 Jul 9 12:47 sbin
drwxr-xr-x 2 root root 4096 Jul 9 10:58 usr
rootfs/bin:
lrwxr-xr-x 1 root root 7 Jul 9 15:15 bash -> busybox
-rwxr-xr-x 1 root root 944856 Jul 9 15:08 busybox
lrwxr-xr-x 1 root root 7 Jul 9 15:15 sh -> busybox
rootfs/dev:
crw------- 1 root tty 5, 1 Jul 9 11:55 console
brw-rw---- 1 root floppy 2, 0 Apr 30 02:28 fd0
crw-r----- 1 root kmem 1, 2 Jul 5 10:53 kmem
crw-r----- 1 root kmem 1, 1 Jul 5 10:53 mem
crw-rw-rw- 1 root root 1, 3 Jul 5 10:53 null
brw-rw---- 1 root disk 1, 0 Jul 5 10:53 ram0
crw------- 1 root root 4, 0 Jul 5 10:53 tty0
crw------- 1 root root 4, 1 Jul 9 11:55 tty1
crw------- 1 root root 4, 2 Jul 9 11:55 tty2
crw------- 1 root root 4, 3 Jul 9 11:55 tty3
crw------- 1 root root 4, 4 Jul 9 11:55 tty4
crw------- 1 root root 4, 5 Jul 9 11:55 tty5
crw------- 1 root root 4, 6 Jul 7 16:04 tty6
rootfs/etc:
-rw-r--r-- 1 root root 133 Jul 9 12:48 fstab
-rw-r--r-- 1 root root 149 Jul 9 12:48 inittab
-rw-r--r-- 1 root root 35 Jul 9 15:12 passwd
-rwxr-xr-x 1 root root 44 Jul 9 12:12 rc
rootfs/lib: total 0
rootfs/mnt: total 0
rootfs/proc: total 0
rootfs/sbin: total 0
rootfs/usr: total 0


En fait on utilise comme shell l'excellent busybox compilé en statique, afin qu'il n'y ait aucune dépendance sur des librairies gourmandes en espace.
On doit personnaliser les fichiers dans /etc et les réduire au strict minimum :

cat rootfs/etc/passwd
root:x:0:0:root:/root:/bin/busibox
cat rootfs/etc/fstab
/dev/ram0 / ext2 defaults 0 0
/dev/fd0 / ext2 defaults 0 0
proc /proc proc defaults 0 0

cat rootfs/etc/inittab
# /etc/inittab: init(8) configuration.
id:2:initdefault:
si::sysinit:/etc/rc
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
1:2345:respawn:/bin/sh

cat rootfs/etc/rc
#!/bin/sh
/bin/mount -av
/bin/hostname box3


Puis il s'agit de préparer notre filesystem

dd if=/dev/zero of=cgramdisk bs=1024 count=2000
mke2fs -m0 -N2000 cgramdisk
mount -o loop cgramdisk /mnt
cp -ar rootfs/* /mnt/
umount /mnt/
gzip -v9 cgramdisk


ensuite il faut transférer le noyau sur floppy :
dd if=/usr/src/linux-2.4.26/arch/i386/boot/bzImage of=/dev/fd0 bs=1k
On obtient en retour le nbre de bytes transferés
759+1 records in
759+1 records out
777543 bytes transferred in 50.933104 seconds (15266 bytes/sec)

dd if=cgramdisk.gz of=/dev/fd0 bs=1k seek=765
ca va nous donner

463+1 records in
463+1 records out
474420 bytes transferred in 32.090229 seconds (14784 bytes/sec)

2 puissance 14 + 765 = 17149
rdev -r /dev/fd0 17149
rdev /dev/fd0 /dev/fd0
rdev -R /dev/fd0 0

Commentaires

Posts les plus consultés de ce blog

Comment extraire les fichiers disques en raw d'un backup proxmox vma

Comment copier une machine virtuelle kvm en raw sur un Volume Group LVM2 se trouvant sur un disque en DRBD

Find the lists of disks of your Proxmox VM stored in a ceph cluster