Cloner Debian sur ssd -> Bloqué au login de Slim

Bonjour,

J’ai acheté récemment un disque ssd de 120 go que j’ai partitionné (1 partition avec tables classiques) puis flaggé en boot avec gparted. J’ai choisi ext4 comme système de fichiers.
L’objectif est de migrer ma debian squeeze de l’HDD vers le SSD pour en faire mon disque système en remplacement de l’autre. Je ne veux pas faire de réinstallation et repartir de zéro.

J’ai fait une copie de ma racine en utilisant rsync -Harov / /media/system vers le ssd

J’ai mis mon ssd à la place de l’hdd et je lance mon live usb de Debian.
Dedans je me connecte en chroot sur le ssd puis je fais un update-initramfs -k all -u et ensuite un update-grub.

J’éteins et je redémarre la machine et j’arrive sur un écran noir avec un trait qui clignote. Normalement Grub devrait se lancer à ce moment mais rien du tout, pas de message, pas de texte à s’afficher … juste ce trait qui clignote ! J’ai pourtant bien flaggé la partition du ssd pour qu’elle soit bootable.

Quelqu’un pourrait-il m’aider à résoudre ce problème ?

Merci d’avance pour vos réponses.

Je pense qu’il suffirait de faire en live/chroot un grub-install /dev/sdX (X dépend de ta lettre de périphérique bien sûr). Pour éviter de perdre du temps, refais un update-grub juste après.
Si ça ne va pas, je peux t’expliquer en détail comment moi j’ai fait ma migration HDD => SSD (j’ai utilisé CloneZilla mais il y a quelques détails à voir).

Je me suis connecté en chroot et j’ai fait un grub-install. Voici le message que j’obtiens :

root@user:/# grub-install /dev/sda1 /usr/sbin/grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR. This is a BAD idea.. /usr/sbin/grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged.. /usr/sbin/grub-setup: error: if you really want blocklists, use --force.

J’ai bien spécifié sdX pas sdXN :wink:
En installant sur /dev/sda (et non pas sda1) ça ira certainement mieux.

Effectivement j’ai mis /dev/sda et l’installation du grub a fonctionné :slightly_smiling:

Donc maintenant, le boot se charge et lorsque j’arrive sur l’écran de login (slim en l’occurence) je rentre mon user et mdp et il me met comme message :

Du coup, je reste sur le login sans pouvoir aller plus loin.

Dans ma config hdd, j’avais volontairement fait un autologin pour ne pas à avoir à saisir mon user et mdp justement … et là il me le remet.

Bref, on progresse tout de même ! Merci pour ton aide.

Du coup ça vient de la configuration de slim là.
Il faut éditer le /etc/slim.conf.

Puis, Tu remplis la liste des sessions possibles : sessions default,xfce4,openbox,dwm,awesome

Enfin, selon la ligne login_cmd, tu dois remplir le fichier .xinitrc ou .xsession en fonction :

[code]case $1 in
dwm )
demarrage_ &

	PID1=$!
	exec /usr/bin/dwm
	kill $PID1
	;;
awesome )
	exec ck-launch-session dbus-launch awesome-session ;;
openbox )
	exec ck-launch-session dbus-launch openbox-session ;;
xfce4 )
	exec ck-launch-session dbus-launch startxfce4 ;;

"")
	demarrage_ &
	~/.Scripts/conkybar.sh &

sleep 3 && ~/.dmenu/dstatus.py &

	PID1=$!
	exec ck-launch-session dbus-launch --exit-with-session /usr/bin/dwm
	kill $PID1
	;;
* ) 
	$@
;;

esac
[/code]

Pour les sessions de slim.conf, j’ai ça :

Pour le login_cmd :

Je suis allé voir dans /etc/X11/Xsession et j’ai ça :

[code]#!/bin/sh

/etc/X11/Xsession

global Xsession file – used by display managers and xinit (startx)

$Id: Xsession 967 2005-12-27 07:20:55Z dnusinow $

set -e

PROGNAME=Xsession

message () {

pretty-print messages of arbitrary length; use xmessage if it

is available and $DISPLAY is set

MESSAGE="$PROGNAME: $*"
echo “$MESSAGE” | fold -s -w ${COLUMNS:-80} >&2
if [ -n “$DISPLAY” ] && which xmessage > /dev/null 2>&1; then
echo “$MESSAGE” | fold -s -w ${COLUMNS:-80} | xmessage -center -file -
fi
}

message_nonl () {

pretty-print messages of arbitrary length (no trailing newline); use

xmessage if it is available and $DISPLAY is set

MESSAGE="$PROGNAME: $*"
echo -n “$MESSAGE” | fold -s -w ${COLUMNS:-80} >&2;
if [ -n “$DISPLAY” ] && which xmessage > /dev/null 2>&1; then
echo -n “$MESSAGE” | fold -s -w ${COLUMNS:-80} | xmessage -center -file -
fi
}

errormsg () {

exit script with error

message "$*"
exit 1
}

internal_errormsg () {

exit script with error; essentially a “THIS SHOULD NEVER HAPPEN” message

One big call to message() for the sake of xmessage; if we had two then

the user would have dismissed the error we want reported before seeing the

request to report it.

errormsg “$*”
“Please report the installed version of the “x11-common””
“package and the complete text of this error message to”
debian-x@lists.debian.org.”
}

initialize variables for use by all session scripts

OPTIONFILE=/etc/X11/Xsession.options

SYSRESOURCES=/etc/X11/Xresources
USRRESOURCES=$HOME/.Xresources

SYSSESSIONDIR=/etc/X11/Xsession.d
USERXSESSION=$HOME/.xsession
USERXSESSIONRC=$HOME/.xsessionrc
ALTUSERXSESSION=$HOME/.Xsession
ERRFILE=$HOME/.xsession-errors

attempt to create an error file; abort if we cannot

if (umask 077 && touch “$ERRFILE”) 2> /dev/null && [ -w “$ERRFILE” ] &&
[ ! -L “$ERRFILE” ]; then
chmod 600 “$ERRFILE"
elif ERRFILE=$(tempfile 2> /dev/null); then
if ! ln -sf “$ERRFILE” “${TMPDIR:=/tmp}/xsession-$USER”; then
message “warning: unable to symlink “$TMPDIR/xsession-$USER” to”
“”$ERRFILE”; look for session log/errors in"
“”$TMPDIR/xsession-$USER"."
fi
else
errormsg "unable to create X session log/error file; aborting."
fi

exec >>"$ERRFILE" 2>&1

echo “$PROGNAME: X session started for $LOGNAME at $(date)”

sanity check; is our session script directory present?

if [ ! -d “$SYSSESSIONDIR” ]; then
errormsg "no “$SYSSESSIONDIR” directory found; aborting."
fi

Attempt to create a file of non-zero length in /tmp; a full filesystem can

cause mysterious X session failures. We do not use touch, :, or test -w

because they won’t actually create a file with contents. We also let standard

error from tempfile and echo go to the error file to aid the user in

determining what went wrong.

WRITE_TEST=$(tempfile)
if ! echo “" >>"$WRITE_TEST"; then
message "warning: unable to write to ${WRITE_TEST%/
}; X session may exit”
"with an error"
fi
rm -f “$WRITE_TEST”

use run-parts to source every file in the session directory; we source

instead of executing so that the variables and functions defined above

are available to the scripts, and so that they can pass variables to each

other

SESSIONFILES=$(run-parts --list $SYSSESSIONDIR)
if [ -n “$SESSIONFILES” ]; then
set +e
for SESSIONFILE in $SESSIONFILES; do
. $SESSIONFILE
done
set -e
fi

exit 0

vim:set ai et sts=2 sw=2 tw=80:[/code]

J’ai regardé dans mon home si j’avais le fichier caché .xsession et j’ai juste .xsession-errors

Hello,

Ton /home est sur un autre disque/partition?

(Vérifier dans ton /etc/fstab que les UUID pour les points de montage sont bons)

Je n’ai qu’une partition sur mon ssd et mon home est sur cette partition.

Pour l’UUID, ce n’était effectivement pas le bon dans fstab, j’ai donc mis l’UUID de mon ssd.
Cependant, ça n’a rien changé et je reste toujours bloqué au login de slim.

il doit y avoir un problème de permissions quelque part

Il faut rajouter ta session dans le fichier ~/.xsession

Par exemple, pour xfce :

Ou pour openbox:

Je n’ai pas dans mon home de fichier caché .xsession … il faut que je le créé ?

Et mis à part startxfce4, il y a quoi dans ce fichier ?

salut,
à l’adresse ci-dessous, plusieurs méthodes proposées pour démarrer directement xfce sans gestionnaire de connexion

demarrer-xfce-tres-rapidement-t36060.html

Oui, il faut le créer dans ce cas. Pour ce qu’il faut mettre dedans, ça dépend de ta session ensuite, si tu veux gnome, kde, xfce ou autre…

Finalement, j’ai réussi à m’en sortir en utilisant cette méthode :
http://www.debian-fr.org/copie-systeme-complet-t33172.html

J’ai quand même du mettre à jour les UUID du grub.cfg en plus du fstab pour mon ssd afin que ça corresponde.

Je vous remercie pour votre aide.

[quote=“syam”]Je pense qu’il suffirait de faire en live/chroot un grub-install /dev/sdX (X dépend de ta lettre de périphérique bien sûr). Pour éviter de perdre du temps, refais un update-grub juste après.
Si ça ne va pas, je peux t’expliquer en détail comment moi j’ai fait ma migration HDD => SSD (j’ai utilisé CloneZilla mais il y a quelques détails à voir).[/quote]
Bonjour,

Si ta proposition est toujours valable, je suis preneur de ton explication, d’autant qu’à ma connaissance Clonezilla ne gère pas l’alignement propre aux SSD. :slight_smile:

Euh là ça commence à faire vraiment longtemps (fin janvier) et comme je n’ai pas pris de notes ça va être plutôt sommaire… Effectivement CZ ne gère pas l’alignement automatiquement mais rien ne t’empêche de le faire manuellement, c’est ce que j’ai fait :

[ul][li] mise en place du SSD sur mon port SATA 1 (je tenais à ce qu’il soit /dev/sda au final, donc j’ai changé mon ancien disque de port)[/li]
[li] réduction du filesystem (resize2fs) sur la partition système d’origine, pour que tout tienne sur le SSD (prévoir de la marge)[/li]
[li] création manuelle de la partition sur le SSD (c’est là que tu consultes les specs de ton SSD pour savoir où la placer ta partition, moi c’était à 2MB)[/li]
[li] clonage de la partition système du disque d’origine vers le SSD, en réutilisant la partition créée manuellement (partition to partition)[/li]
[li] agrandissement du filesystem (resize2fs) sur le SSD pour utiliser toute la partition[/li]
[li] chroot / update-grub[/li][/ul]

Je crois que ça résume bien la chose, du moins autant que ma mémoire me le permet.

[code]# fdisk -l /dev/sda

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005b1fb

Device Boot Start End Blocks Id System
/dev/sda1 * 4096 312581807 156288856 83 Linux[/code]

D’où l’intérêt de le graver sur le forum avant que ça ne soit encore plus ancien :wink:

Quand tu dis que l’on peut procéder à l’alignement manuellement, tu le fais comment, lorsque tu crées manuellement les partitions sur le ssd ?
Petites difficultés supplémentaires dans mon cas, il faudra que je jongle en usb car c’est pour un netbook avec un seul port sata, et le HDD est en dual boot avec Windows 7 que je suis obligé de conserver (ordi du boulot).

Oui. Le plus chiant est de trouver la taille exacte, dans mon cas je ne l’ai finalement trouvée qu’en cherchant “intel 320 series block size” sur internet, car ce n’est pas spécifié dans les docs officielles d’Intel. Une fois que tu connais la valeur, tu crées bêtement ta partition au bon endroit : ta partition doit commencer sur un multiple de (taille de bloc / 512 octets par secteur) secteurs, dans mon cas 2MiB / 512B = 4096 secteurs. Même principe pour la taille de la partition si elle ne va pas jusqu’à la fin du disque, histoire que la partition suivante puisse être alignée correctement elle aussi avec un minimum de perte d’espace.

Le clonage par recopie simple de fichiers fonctionne très bien, il faut juste veiller à ce que les UUID des partitions coïncident (tune2fs et mkswap permette de les adapter). A posteriori je pense que le souci de wizmul était soit de mauvais droits dans /tmp opu bien ce qui suggérait thuban.