View previous topic :: View next topic |
Author |
Message |
sebweb Apprentice
Joined: 29 Jan 2003 Posts: 220 Location: Bordeaux - France
|
Posted: Fri Mar 07, 2003 6:32 pm Post subject: |
|
|
J'avance dans mon schmillblick ...
Pour XFS il faut emerger un noyau special XFS ... xfs-source.
Donc mon choix se porte sur reiserfs, que je connait bien et qui est tout au moin aussi performant que XFS |
|
Back to top |
|
|
px Guru
Joined: 26 Sep 2002 Posts: 497 Location: Metz, France
|
Posted: Fri Mar 07, 2003 6:42 pm Post subject: |
|
|
je viens de monter le rescue du cd de rip, voila en fait le contenu du script
Quote: |
#!/bin/sh
usage() {
echo "
=============================================================
convertfs
Convert filesystem on device from this type to this type.
Whatever is on the filesystem is not destroyed.
The filesystem is just changed.
Usage: convertfs device from_fs_type to_fs_type
Filesystem types: minix xfs jfs reiserfs ext2 ext3
Example: convertfs /dev/hda2 ext2 reiserfs
=============================================================
"
exit 0
}
fs_types() {
unset fs_type
for fs_type in minix xfs jfs reiserfs ext2 ext3; do
if [ "$1" = "$fs_type" ]; then
fs_type=yes
break
fi
done
if [ ! "$fs_type" = "yes" ]; then
echo "Not a filesystem type \`$1' option."
echo "Filesystem types: minix xfs jfs reiserfs ext2 ext3"
exit 1
fi
}
minix_convert() {
if [ "$1" = "minix" ]; then
hd_dev=`echo $2 | cut -b 1-8`
blocks=`fdisk -l $hd_dev | grep $2 | tr -d + | tr -s " " | cut -d ' ' -f 4`
if [ "$blocks" -gt "2048287" ]; then
echo "The \`minix' partition on \`$2' is more than 2GB."
echo "It's probably to big to convert."
echo -n "Try anyway? [N/y] "
read ans
if [ ! "$ans" = "y" -a ! "$ans" = "Y" ]; then
exit 1
fi
fi
fi
}
ext2_convert() {
if [ "$1" = "ext2" -a "$2" = "ext3" ]; then
echo "You can convert \`$3' to \`$2' this way."
echo "tune2fs -j $3"
exit
elif [ "$1" = "ext3" -a "$2" = "ext2" ]; then
echo "You can convert \`$3' to \`$2' this way."
echo "tune2fs -O ^has_journal $3"
exit
fi
}
find_mkfs() {
if ! grep -q "$1" /proc/filesystems; then
echo "No support for \`$1' filesystem in the kernel."
exit 1
elif ! grep -q "$2" /proc/filesystems; then
echo "No support for \`$2' filesystem in the kernel."
exit 1
fi
if ! type $3 1>/dev/null 2>/dev/null; then
echo "Can't find \`$3' on the system."
exit 1
fi
if [ "$2" = "reiserfs" ]; then
kernel_version=`uname -r | tr -d . | cut -b 1-2`
mkreiserfs 1>/dev/null 2>/tmp/mkreiserfs.out
if grep -q "\--format" /tmp/mkreiserfs.out; then
if [ "$kernel_version" -ge "24" ]; then
reiserfs_version="--format 3.6"
else
reiserfs_version="--format 3.5"
fi
else
if [ "$kernel_version" -ge "24" ]; then
reiserfs_version="-v 2"
else
reiserfs_version="-v 1"
fi
fi
rm -f /tmp/mkreiserfs.out
fi
}
mk_fs() {
if [ "$1" = "ext2" ]; then
mke2fs $2
elif [ "$1" = "ext3" ]; then
mke2fs -j $2
elif [ "$1" = "reiserfs" ]; then
echo -e "y\ny" | mkreiserfs $reiserfs_version $2
elif [ "$1" = "jfs" ]; then
mkfs.jfs -f $2
elif [ "$1" = "xfs" ]; then
mkfs.xfs -f $2
elif [ "$1" = "minix" ]; then
hd_dev=`echo $dev | cut -b 1-8`
blocks=`fdisk -l $hd_dev | grep $dev | tr -d + | tr -s " " | cut -d ' ' -f 4`
mkfs.minix -v $2 $blocks
fi
}
error() {
umount $loopdev 2>/dev/null
losetup -d $loopdev 2>/dev/null
umount $dev 2>/dev/null
rm -rf $tmp
exit 1
}
# device to convert
dev=$1
# filesystem to convert from
from_fs_type=$2
# filesystem to convert to
to_fs_type=$3
if [ "$dev" = "" ]; then
usage
elif [ ! -b "$dev" ]; then
echo "No such device \`$dev'."
exit 1
fi
if [ "$from_fs_type" = "" -o "$to_fs_type" = "" ]; then
usage
else
ext2_convert $from_fs_type $to_fs_type $dev
minix_convert $from_fs_type $dev
fs_types $from_fs_type
fs_types $to_fs_type
fi
if [ "$to_fs_type" = "ext2" ]; then
find_mkfs $from_fs_type $to_fs_type mke2fs
elif [ "$to_fs_type" = "ext3" ]; then
find_mkfs $from_fs_type $to_fs_type mke2fs
elif [ "$to_fs_type" = "reiserfs" ]; then
find_mkfs $from_fs_type $to_fs_type mkreiserfs
elif [ "$to_fs_type" = "jfs" ]; then
find_mkfs $from_fs_type $to_fs_type mkfs.jfs
elif [ "$to_fs_type" = "xfs" ]; then
find_mkfs $from_fs_type $to_fs_type mkfs.xfs
elif [ "$to_fs_type" = "minix" ]; then
find_mkfs $from_fs_type $to_fs_type mkfs.minix
fi
if ! grep -q "loop" /proc/devices; then
echo "No loop device support in the kernel."
exit 1
fi
if [ ! -b /dev/loop7 ]; then
mknod -m 660 /dev/loop7 b 7 7 || exit
fi
loopdev=/dev/loop7
tmp=/tmp/convertfs
fs1root=$tmp/fs1root
fs2root=$tmp/fs2root
fsimage_name=fsimage
fsindex_name=fsindex
fssuper_name=fssuper
fsimage=$fs1root/$fsimage_name
fsindex=$fs1root/$fsindex_name
fssuper=$tmp/$fssuper_name
mkdir -p $fs1root || exit
mkdir -p $fs2root || exit
echo "== Creating clone of \`$from_fs_type' filesystem that's on \`$dev'. =="
umount $dev 2>/dev/null
mount -t $from_fs_type $dev $fs1root || error
devclone $dev $fsimage || error
echo "===== Creating destination \`$to_fs_type' filesystem. ====="
umount $loopdev 2>/dev/null
losetup -d $loopdev 2>/dev/null
losetup $loopdev $fsimage || error
mk_fs $to_fs_type $loopdev || error
echo "============== Copying files: This may take some time! =============="
mount -t $to_fs_type $loopdev $fs2root || error
for file in `ls -1A $fs1root`; do
if [ "x$file" != "x$fsimage_name" ] &&
[ "x$file" != "x$fsindex_name" ] &&
[ "x$file" != "xlost+found" ] &&
[ "x$file" != "x$fssuper_name" ]; then
mv -f $fs1root/$file $fs2root/ || error
fi
done
ls -lA $fs2root
df -h $fs2root
umount $loopdev || error
losetup -d $loopdev 2>/dev/null
echo "=== Preparing info for block relocation ==="
prepindex $fsimage $fsindex $fssuper || error
umount $dev || error
dd if=$fssuper of=$dev || exit
sync
echo "============ Relocating blocks ============"
devremap $dev || exit
echo "=== Filesystem conversion accomplished! ==="
rm -rf $tmp
echo "NOTE: If you want to boot the new filesystem on \`$dev' you"
echo " should edit \`/etc/fstab' and add something like this."
echo " $dev / $to_fs_type defaults 1 1"
|
Bon maintenant faut faire le tri : ) _________________ Nous autres, mordus d'informatique, préférons par-dessus tout passer notre temps à bidouiller nos ordinateurs, plutôt que les utiliser pour faire quelque chose de productif. [Dave Barry] |
|
Back to top |
|
|
sebweb Apprentice
Joined: 29 Jan 2003 Posts: 220 Location: Bordeaux - France
|
Posted: Fri Mar 07, 2003 7:04 pm Post subject: |
|
|
Bon j'ai tester le script !!
Résultat : j'ai pas reiserfs dans mon kernel
Pour le savoir :
#cat /proc/filesystem | grep reiserfs
D'autre part, il faut absolument le support des device en loopback, ce que je n'ai pas non plus !!!
Donc au final, je reste sur ma premiere idée, mais je vais recompiler le kernel pour pouvoir tester tout de même ce script |
|
Back to top |
|
|
arlequin l33t
Joined: 16 Nov 2002 Posts: 707 Location: grep $USER /etc/passwd | cut -d':' -f6
|
Posted: Fri Mar 07, 2003 7:05 pm Post subject: |
|
|
Tiens, un chouette excercie pour apprendre les shell script
Y avait aussi une solution du genre dans le thread que j'avais nommé plus haut, mais celle-là m'a l'air encore plus sérieuse... si qqun réussi la manoeuvre... _________________ J'vous dis ciao !
Au fait, ciao ça veut dire bye en anglais. |
|
Back to top |
|
|
px Guru
Joined: 26 Sep 2002 Posts: 497 Location: Metz, France
|
Posted: Sat Mar 08, 2003 3:22 am Post subject: |
|
|
re dit moi quelle manoeuvre il faut faire je t'expliquerais surement la facon de la faire. _________________ Nous autres, mordus d'informatique, préférons par-dessus tout passer notre temps à bidouiller nos ordinateurs, plutôt que les utiliser pour faire quelque chose de productif. [Dave Barry] |
|
Back to top |
|
|
sebweb Apprentice
Joined: 29 Jan 2003 Posts: 220 Location: Bordeaux - France
|
Posted: Sat Mar 08, 2003 11:00 am Post subject: |
|
|
Donc aprés toute les opérations, j'ai un beau message d'erreur au reboot :
Kernel panic: VFS: Unable to mount root fs on 03:04
Si qqun a une solution ou même une idée |
|
Back to top |
|
|
ghoti Advocate
Joined: 30 Dec 2002 Posts: 3634 Location: Belgium
|
Posted: Sat Mar 08, 2003 6:53 pm Post subject: |
|
|
sebweb wrote: | VFS: Unable to mount root fs on 03:04 | Le support xfs, tu l'as bien compilé en dur dans le noyau (pas comme module !) ? |
|
Back to top |
|
|
sebweb Apprentice
Joined: 29 Jan 2003 Posts: 220 Location: Bordeaux - France
|
Posted: Sat Mar 08, 2003 9:49 pm Post subject: |
|
|
Oki merci bien.
Grace a toi j'ai vérifier et j'avais bien compiler en module.
Une petite recompilation plus tard et tout remarche.
Pourtant je le savait bien qu'il fallait le mettre en dur dans le noyau. Je me suis déjà fait avoir au moin 10 fois avec cette connerie !!!
Bon, je vous prépare un petit résumer de la procédure a suivre pour un backup et un restaur ... |
|
Back to top |
|
|
ghoti Advocate
Joined: 30 Dec 2002 Posts: 3634 Location: Belgium
|
Posted: Sat Mar 08, 2003 10:57 pm Post subject: |
|
|
sebweb wrote: | Je me suis déjà fait avoir au moin 10 fois avec cette connerie !!! | Oh, t'en fait pas : moi ça fait bien plus que ça mais à force, c'est rentré ...
Remarque, il y a une autre solution, c'est celle du initrd qui permet de charger des modules avant de monter le "/".
Si je me souviens bien, c'est une sorte de fs temporaire monté en mémoire et qui permet de faire ce genre de bidouille avant de passer au fs principal (utilisé par exemple pour le bootsplash en framebuffer - voir le forum anglais "Documentation, Tips and Tricks")
Mais je n'ai jamais creusé les détails ... |
|
Back to top |
|
|
DuF Advocate
Joined: 09 Dec 2002 Posts: 2687 Location: Paris
|
Posted: Sat Mar 08, 2003 11:53 pm Post subject: |
|
|
de toute façon c'est en forgeant que l'on devient forgeron
Il est intéressant ton script px, il a un taux de réussite de combien environ ? |
|
Back to top |
|
|
px Guru
Joined: 26 Sep 2002 Posts: 497 Location: Metz, France
|
Posted: Sun Mar 09, 2003 12:27 am Post subject: |
|
|
aucune idée, c'est pas moi qui l'ai fait... _________________ Nous autres, mordus d'informatique, préférons par-dessus tout passer notre temps à bidouiller nos ordinateurs, plutôt que les utiliser pour faire quelque chose de productif. [Dave Barry] |
|
Back to top |
|
|
sebweb Apprentice
Joined: 29 Jan 2003 Posts: 220 Location: Bordeaux - France
|
Posted: Sun Mar 09, 2003 12:30 am Post subject: |
|
|
Vais pas tarder a le tester ce script puisque a la base je voulait metre XFS et que je n'avais pas le noyau qui allait bien. Je suis passer en reiserfs histoir de valider la procédure
Je vous en reparlerais |
|
Back to top |
|
|
sebweb Apprentice
Joined: 29 Jan 2003 Posts: 220 Location: Bordeaux - France
|
Posted: Sun Mar 09, 2003 6:44 pm Post subject: |
|
|
Bon voici la procédure :
Voici une petite procédure afin de changer le type de filesystem de votre gentoo.
Cela peut être aussi utile pour sauvergarder votre linux.
Voici ma configuration, a vous d'adapter la procédure a la votre
3 partitions pour linux :
/boot sur /dev/hda2
SWAP sur /dev/hda3
/ sur /dev/hda4
hda1 est utiliser par windows(tm)caimal
En ce qui me concerne je veux passer ma partition / de JFS a reiserfs
Comencons par vérifier dans le noyau que l'on est bien activer le support du filesystem désirer.
Attention, ne pas le compiler en module mais en dur dans le noyau.
On peut ensuite emerger des utilitaires particulier au FS que l'on veut mettre. Dans mon cas :
#emerge reiserfsutils
Sauvergarde du system
Attention, il faut sauvegarder /dev. Pour une raison inconnue celui-ci n'est pas générer au démarage.
#cd /
# tar -jcvf system.tar.bz2 /bin /etc /home /etc /lib /mnt /opt /root /usr /var /sbin /dev
Copier l'archive n'importe ou sauf sur le systeme proprement-dis. Dans mon cas :
# sftp toto@192.168.15.2
# sftp > put system.tar.bz2
# sftp > bye
rebooter sur le cd d'install de la gentoo.
Faite en sorte d'activer le réseau (suivre la doc d'install de la gentoo) dans mon cas :
#insmod pcmcia_core
#insmod i82365
#insmod ds
#cardmgr -f
#ifconfig eth0 192.168.15.4 broadcast 192.168.15.255 netmask 255.255.255.0
Au besoin rajouter une route par defaut
#route add -net default gw 192.168.15.1 metric 1
On convertie le filesystem
#mkreiserfs /dev/hda4
On monte le device et on y recopie l'archive
#mkdir /mnt/gentoo
#mount /dev/hda4 /mnt/gentoo
#cd /mnt/gentoo
#sftp toto@192.168.15.2
# sftp > get system.tar.bz2
# sftp > bye
On extraie l'archive
#tar -jxvf system.tar.bz2
On modifie le fstab afin de spécifier que le nouveau filesystem
#nano /etc/fstab
On demonte la partition
#cd /
#unmount /mnt/gentoo
et on reboot
#reboot
Voila ....
Cette procédure peut certainement être améliorer. J'attend vos commentaire |
|
Back to top |
|
|
Maz n00b
Joined: 18 Jul 2002 Posts: 43 Location: Montpeller, France
|
Posted: Thu Mar 13, 2003 9:08 am Post subject: |
|
|
Je me demande une chose, vu que tu n'as pas mis le flag "p" sur le tar, je pense que ton fichier shadow est maintenant lisible par tout le monde. Pourrais-tu vérifier ?
Pour rappel, les flag p permet de garder les permissions identiques, ce qui peut être plus que souhaitable. _________________ Maz |
|
Back to top |
|
|
sebweb Apprentice
Joined: 29 Jan 2003 Posts: 220 Location: Bordeaux - France
|
Posted: Thu Mar 13, 2003 6:27 pm Post subject: |
|
|
[ /etc ]-[0]: ls -la shadow*
-rw------- 1 root root 477 Feb 28 20:33 shadow
-rw------- 1 root root 416 Feb 27 00:49 shadow- |
|
Back to top |
|
|
|