Main menu:

Site search

Categories

mars 2025
L M M J V S D
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Archive

Un chroot pour réparer une installation

Un chroot est une opération qui modifie le répertoire root courant pour le processus en cours et les processus enfants. Les applications lancées dans ce chroot n’ont plus accès aux fichiers à l’extérieur du chroot. Cela permet donc d’isoler un processus.

Il y a plusieurs usages possibles pour un chroot; un des usages est de pouvoir modifier ou administrer une distribution inactive. Un exemple? Vous n’arrivez plus à booter votre Linux parce que Grub est corrompu. Vous savez pourtant qu’il suffirait de lancer la commande update-grub pour que tout rentre dans l’ordre. Coment arriver à lancer cette commande comme si votre Linux était actif? La solution est évidemment de lancer un LiveCD, de monter votre installation de Linux et de créer un chroot pour que le root directory devienne celui de votre installation et non plus celui du LiveCD.

Imaginons que le système Linux à réparer se trouve sur sda1. Il faut commencer par monter le disque dans /mnt par exemple:

$ sudo mount /dev/sda1 /mnt

Il faut aussi monter le système de fichiers /dev:

$ sudo mount --bind /dev /mnt/dev/

Maintenant, on peut créer le chroot proprement dit. Il existe une commande pour cela qui s’appelle…chroot !

$ sudo chroot /mnt

A partir de maintenant, sudo n’est plus nécessaire puisque nous sommes dans le chroot avec des droits root. On peut lancer les commandes nécessaires pour réparer notre installation:

# update-grub

Une fois le système réparé, on sort du chroot et on démonte les systèmes de fichiers:

# exit
$ sudo umount /mnt/dev
$ sudo umount /mnt

Notez que si votre /home est sur une partition séparée, par exemple sda5, il faudra aussi la monter avant de faire le chroot:

$ sudo mount /dev/sda5 /mnt/home

De même si /boot est sur une partition séparée.
Dépendant de ce que vous devez faire dans le chroot, vous serez peut-être amener à monter aussi le système de fichiers /proc ou /sys:

$ sudo mount -t proc /proc /mnt/proc
$ sudo mount -t sysfs /sys /mnt/sys

J’ai donné ici l’exemple d’une réparation de Grub dans le chroot mais on peut bien évidemment y faire d’autre chose; installer des paquets, modifier des fichiers de configs, accéder au réseau, toutes choses qui peuvent être utiles pour restaurer votre Linux.

Disque dur: des secteurs de plus de 512 octets

L’IDEMA (International Disk Drive Equipment and Materials Association) a annoncé que début 2011, les disques durs adopteront le format 4K. Cela signifie qu’à cette date, les disque durs auront des secteurs dont la taille sera de 4K octets au lieu des 512 octets actuels.

Un peu d’histoire

C’est IBM qui avait standardisé cette taille de 512 bytes pour les secteurs des disquettes et ça remonte déjà à une trentaine d’années. Ensuite cette taille avait été adoptée pour les disques durs aussi. Seulement à cette époque, pour ceux qui s’en souviennent, les disques durs n’avaient pas la taille de ceux d’aujourd’hui. Ils ne faisaient que quelques Megabytes. De l’ordre de 20MB pour les premiers et cette taille de 512 octets était bien adaptée à la taille du disque dur.

Quel est le problème

Chaque secteur de 512 octets contient un pointeur qui indique où se trouve le secteur suivant et un code d’erreur. Ces quelques octets qui ne sont pas utilisés pour stocker des données font que sur un disque de grande capacité, on perd finalement beaucoup de place. Et c’est sans compter sur le fait que, entre chaque secteur sur le disque, il y a une petite zone libre, non utilisée qui sépare les secteurs (gap). Sur un disque de 1To ou plus, on imagine aisément la place perdue avec des secteurs de 512 octets. D’après les fabricants, en adoptant une taille de secteur de 4K, on pourrait gagner près de 10%. Ce n’est pas négligeable.

Et Linux?

L’adoption de ce format de 4K posera un problème avec tous les ordinateurs non récents. Windows ne supporte une taille de secteur supérieure à 512 octets que depuis Vista. XP ne le supporte donc pas.
Le noyau Linux récent supporte déjà une taille supérieure à 512 octets. Par contre les applications comme GParted ne le supporte pas encore. GParted est incapable de partitionner ou de formater un disque dur dont les secteurs ont une taille plus grande que 512 octets. Voici le message d’erreur que vous obtiendrez:

La taille des secteurs logiques pour le périphérique /dev/sda est 1024. Tous les modules de GNU Parted ne supportent pas cela pour l'instant : fonction EXPERIMENTALE

D’après Curtis Gedak, un des développeur de GParted, il y travaille mais beaucoup de boulot est encore nécessaire (source: http://gparted-forum.surf4.info/viewtopic.php?id=13924).

Si vous avez l’habitude de parcourir les forums, vous aurez certainement remarqué que certaines personnes ont déjà rencontré un problème avec leur disque dur. Il semblerait que certains fabricants ont déjà adopté pour certains de leurs disques durs, des tailles de secteur supérieures à 512 octets. C’est le cas de certains disques durs externes comme le Samsung S2. Ces disques n’ont pas encore adopté le format 4K mais des tailles intermédiaires. J’en ai vu avec une taille de secteur de 1024 ou de 2048 octets.

Comment reconnaître un disque qui a des secteurs de plus de 512 octets?

Simplement avec la commande très classique fdisk. Par exemple:

$ sudo fdisk -l
Disque /dev/sde: 250.1 Go, 250059350016 octets
255 têtes, 63 secteurs/piste, 15200 cylindres
Unités = cylindres de 16065 * 1024 = 16450560 octets
Identifiant de disque : 0x76534e6f

Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sde1               1       15200   244187937    c  W95 FAT32 (LBA)

La ligne Unités = cylindres de 16065 * 1024 = 16450560 octets indique que les cylindres du disque sont divisés en blocs de 1024 octets au lieu de 512.
Le gros problème que les utilisateurs de ces disques rencontrent est que cette taille n’est pas indiquée lors de l’achat du disque dur. On ne peut le savoir qu’une fois installé dans la machine ou connecté par usb au PC.

Quelle solution?

Aucune pour l’instant. Notez que tant que vous ne devez pas repartitionner ou reformater votre disque, Linux sera capable de lire ou d’écrire sur le disque grâce à son kernel qui est déjà à jour. Mais si vous voulez le reformater en ext3 ou y installer Ubuntu, pas de chance, cela échouera. On a déjà signalé que GParted ne le supportait pas encore mais c’est le cas aussi de l’utilitaire dd et de tous les programmes qui font des images de disques comme Clonezilla ou PartImage.
Une seule alternative; soit attendre que les développeurs mettent leurs programmes à jours et ce devra être fait pour 2011 soit ramener votre disque chez le revendeur pour incompatibilité avec Linux.

Bouger les boutons de la barre de titre

Il y a en ce moment une petite polémique sur les forums au sujet de la position de boutons (minimize, maximize et close) dans la barre de titre des fenêtres. Il semblerait que dans Lucid Lynx, la version 10.04 d’Ubuntu, les boutons soient placés à gauche à la Mac OSX au moins dans certains des thèmes proposés. Cette disposition peut évidemment être modifiée via l’Editeur de configuration.

C’est l’occasion de rappeler que sous Karmic, il est aussi possible de modifier la disposition de ces boutons en modifiant une clef dans l’Editeur de configuration. Sans entrer dans les détails, c’est Metacity qui gère ce genre de décoration des fenêtres et la clef à modifier est la clef /apps/metacity/general/button_layout.

Ci-dessous, différentes configurations possibles et le contenu de la clef:


menu à gauche et boutons à droite

Cette disposition qui est celle par défaut correspond à la valeur de clef suivante:

menu:minimize,maximize,close


Menu gauche supprimé

Ici, le menu de gauche a été enlevé. C’est le menu qui s’obtient en cliquant sur l’icône à gauche dans la barre de titre. Ce menu est appelé menu système:

:minimize,maximize,close


menu à droite et bouton à gauche

Cette disposition est l’inverse de la version par défaut. Boutons à gauche et menu à droite:

minimize,maximize,close:menu


bouton à gauche et menu supprimé

C’est la même disposition que la précédente mais on a supprimé le menu:

minimize,maximize,close:

Si vous êtes du genre aventureux, vous pouvez aussi essayer de supprimer certains boutons. Le maximize ou le minimize. Sachez qu’il n’est pas possible de tout supprimer. Même si vous effacez le contenu de la clef, vous verrez que le bouton close reste présent dans la barre de titre quoi que vous fassiez.

Monter un disque sans authentification

Pour monter un disque ou une partition, il est demandé d’avoir des droits d’administration. Ainsi, si vous avez plusieurs disques/partitions dans votre PC, ceux-ci apparaissent dans le menu Raccourcis du tableau de bord du haut, mais votre mot de passe vous est demandé pour que l’icône du disque monté apparaisse sur le bureau.

La solution adoptée pour empêcher d’avoir à chaque fois ce mot de passe à taper est en général d’ajouter une ligne dans le fichier /etc/fstab. L’avantage est que le montage est automatique et que vous n’avez plus de mot de passe à entrer. L’inconvénient est que l’icône du disque est présente en permanence sur le bureau.

Il existe une autre solution, qui a été donnée sur un forum, c’est de modifier les règles définies dans le PolicyKit d’Ubuntu. Celles-ci consistent en un ensemble de fichiers XML que l’on peut éditer facilement.
Ces fichiers se trouvent dans le répertoire /usr/share/polkit-1/actions et le fichier qui nous intéresse plus particulièrement est org.freedesktop.devicekit.disks.policy. Celui-ci contient les règles concernant les disques et systèmes de fichiers. Chaque règle est contenue dans un tag appeléaction.

Pour supprimer l’authentification au montage d’un disque, il faut éditer le fichier:

$ gksudo gedit /usr/share/polkit-1/actions/org.freedesktop.devicekit.disks.policy

Dans le fichier, il faut trouver le tag action dont l’id est org.freedesktop.devicekit.disks.filesystem-mount-system-internal et dans cet action, modifier la ligne:

<allow_active>auth_admin_keep</allow_active>

par:

<allow_active>yes</allow_active>

Il ne vous reste plus qu’à sauver le fichier et à constater que la prochaine fois que vous monterez un disque ou une partition, votre mot de passe ne vous sera plus demandé.

Problèmes de résolution d’écran ?

Sous Linux et Ubuntu en particulier, l’écran est géré par le serveur X (X Windows Manager) et Xorg en est une implémentation libre. La configuration de ce serveur X passe par le fichier /etc/X11/xorg.conf.
A l’installation, Xorg détermine le type de carte graphique installé et installe un driver libre par défaut. Par après, il vous est loisible d’installer le driver propriétaire, s’il y en a un, correspondant à votre carte graphique.
La commande classique qui permettait de reconfigurer le serveur X était :

sudo dpkg-reconfigure xserver-xorg

En fait, j’ai utilisé l’imparfait parce que cette commande ne sert plus qu’à configurer le clavier. L’auto-détection du hardware étant considérée comme suffisamment bonne, cette commande ne permet plus la configuration manuelle du serveur X. De même, actuellement, le fichier xorg.conf est limité à un squelette qu’il vous faudra modifié manuellement si vous voulez changer la configuration du serveur X.
Au besoin, vous pouvez générer vous-même un tel fichier squelette de xorg de la façon suivante. Ouvrez une console en tapant Ctrl+Alt+F2 (un émulateur de terminal sous Gnome n’est pas suffisant) et tapez les commandes:

$ sudo /etc/init.d/gdm stop
$ sudo Xorg -configure 

Ceci va créer dans votre home un fichier xorg.conf.new que vous pouvez recopier dans /etc/X11/ éventuellement.

Si la résolution de votre écran ne correspond pas à ce que vous espériez, ouvrez un terminal et tapez la commande suivante:

$ xrandr
Screen 0: minimum 320 x 240, current 1280 x 1024, maximum 1280 x 1024
default connected 1280x1024+0+0 0mm x 0mm
   1280x1024      50.0*    51.0  
   1280x960       52.0  
   1152x864       53.0     54.0     55.0     56.0  
   1024x768       57.0     58.0     59.0  
   960x600        60.0  
   960x540        61.0  
   840x525        62.0     63.0     64.0  
   832x624        65.0  
   800x600        66.0     67.0     68.0     69.0     70.0  
   800x512        71.0  
   720x450        72.0  
   680x384        73.0     74.0  
   640x512        75.0     76.0  
   640x480        77.0     78.0     79.0     80.0  
   576x432        81.0     82.0     83.0     84.0  
   512x384        85.0     86.0     87.0  
   416x312        88.0  
   400x300        89.0     90.0     91.0     92.0  
   320x240        93.0     94.0     95.0  

Cette commande liste à l’écran tous les modes vidéo supportés par votre moniteur. Les résolutions et les fréquences de rafraîchissement supportées.
Il faut alors choisir celle que l’on veut voir affichée à l’écran. Imaginons que votre écran soit en 800×600 et que vous désiriez passer en 1280×1024. On note que celle-ci est possible aux fréquences de rafraîchissement de 50Hz et 51Hz.
Ensuite, utilisez la commande gtf qui calcule les modes GTF vesa. On lui donne la résolution et la fréquence de rafraîchissement et elle retourne une ligne appelée Modeline qui est à ajouter à votre xorg.conf :

$ gtf 1280 1024 50

  # 1280x1024 @ 50.00 Hz (GTF) hsync: 52.70 kHz; pclk: 89.38 MHz
  Modeline "1280x1024_50.00"  89.38  1280 1352 1488 1696  1024 1025 1028 1054  -HSync +Vsync

On va copier la réponse donnée par gtf dans le fichier xorg.conf, dans la section Monitor de ce fichier.

Attention: modifier le fichier xorg.conf peut avoir des conséquences fâcheuses comme le non-démarrage du serveur X. Ne le modifiez qu’en connaissance de cause et après avoir fait une copie de sécurité.

Pour éditer le fichier, tapez:

gksudo gedit /etc/X11/xorg.conf

Trouvez la section Monitor et ajoutez-y la ligne donnée ci-dessus:

Section "Monitor"
    Identifier   "Monitor0"
    VendorName   "Monitor Vendor"
    ModelName    "Monitor Model" 
    Modeline "1280x1024_50.00"  89.38  1280 1352 1488 1696  1024 1025 1028 1054  -HSync +Vsync
EndSection

Dernière chose à faire, ajouter ce mode toujours dans le fichier xorg.conf dans chaque sous-section de la section Screen. Par exemple:

Section "Screen"
    Identifier      "Default Screen"
    Monitor         "Monitor0"
    Device          "Card0"
    DefaultDepth    24
    SubSection "Display"
        Depth        16
        Modes        "1280x1024" "800x600" "640x480" 
    EndSubSection
    SubSection "Display"
        Depth        24
        Modes        "1280x1024" "800x600" "640x480"
    EndSubSection
EndSection

Redémarrez le serveur X soit en vous déconnectant puis en vous reconnectant, soit en faisant un Ctrl+Alt+Backspace si votre version d’Ubuntu vous le permet, soit encore en faisant Alt+PrintScreen+K.

Mise à jour à partir du CD Alternate

Il est possible de mettre à jour Ubuntu à partir du CD Alternate. Pratique lorsque vous n’avez pas de liaison Internet, quand vous voulez effectuer la mise à jour sur plusieurs machines mais sans devoir recharger les paquets à chaque fois, etc…

Pour cela, il faut avoir la version Alternate d’Ubuntu soit sur CD soit sous forme d’une image de CD. Si vous avez le CD gravé, aucun problème, il suffit de le mettre dans le lecteur. Il devrait afficher une petite fenêtre vous demandant si vous voulez effectuer la mise à jour.
Si vous avez sur votre disque dur l’image iso, pas besoin de la graver sur CD. Montez-la simplement dans le répertoire de votre choix et lancez l’utilitaire de mise à jour:

sudo mkdir /mnt/imagecd
sudo mount -o loop ~/ubuntu-9.10-alternate-i386.iso /mnt/imagecd
gksudo "sh /mnt/imagecd/cdromupgrade"

Cette méthode a aussi l’avantage que vous ne devez plus craindre une coupure réseau laissant votre mise à jour bancale et non-fonctionnelle.