Convertendo o Debian fstab para usar UUIDs via linux-base?

4

Nós temos alguns sistemas Debian 5 que ainda estão usando / dev / hda no fstab. Nós gostaríamos de convertê-los a usar UUIDs. Isto deve ser feito automaticamente através do pacote "linux-base" (postinst), mas por alguma razão ele não está chutando (talvez alguém já o tenha executado e salvou algum estado em algum lugar para não fazê-lo).

Embora seja certamente possível mudar para UUIDs editando manualmente um monte de arquivos, seria útil roteirizá-lo de alguma forma. Vários encantamentos do debconf e do debconf-set-selections parecem não funcionar.

Então, basicamente, como alguém pode invocar o (s) script (s) fornecido (s) pelo Debian que faz / s todas as conversões do UUID?

    
por DAM 18.10.2012 / 17:42

2 respostas

1

Per Gabor Vincze, o script dos fóruns do Ubuntu parece fazer um código decente:

#!/bin/bash
# This script will change all entries of the form /dev/sd* in /etc/fstab to their appropriate UUID names
# You must have root privelages to run this script (use sudo)
if [ 'id -u' -ne 0 ]; then                                              # Checks to see if script is run as root
        echo "This script must be run as root" >&2                      # If it isn't, exit with error
        exit 1
fi

cp /etc/fstab /etc/fstab.backup
sed -n 's|^/dev/\([sh]d[a-z][0-9]\).*||p' </etc/fstab >/tmp/devices   # Stores all /dev entries from fstab into a file
while read LINE; do                                                     # For each line in /tmp/devices
        UUID='ls -l /dev/disk/by-uuid | grep "$LINE" | sed -n 's/^.* \([^ ]*\) -> .*$//p'' # Sets the UUID name for that device
        sed -i "s|^/dev/${LINE}|UUID=${UUID}|" /etc/fstab               # Changes the entry in fstab to UUID form
done </tmp/devices
cat /etc/fstab                                                          # Outputs the new fstab file
printf "\n\nWrite changes to /etc/fstab? (y/n) "
read RESPONSE;
case "$RESPONSE" in
        [yY]|[yY][eE][sS])                                              # If answer is yes, keep the changes to /etc/fstab
                echo "Writing changes to /etc/fstab..."
                ;;
        [nN]|[nN][oO]|"")                                               # If answer is no, or if the user just pressed Enter
                echo "Aborting: Not saving changes..."                  # don't save the new fstab file
                cp /etc/fstab.backup /etc/fstab
                rm /etc/fstab.backup
                ;;
        *)                                                              # If answer is anything else, exit and don't save changes
                echo "Invalid Response"                                 # to fstab
                echo "Exiting"
                cp /etc/fstab.backup /etc/fstab
                rm /etc/fstab.backup
                exit 1
                ;;
esac
rm /tmp/devices
echo "DONE!"
    
por 06.11.2012 / 18:41
0

O script estaria em /var/lib/dpkg/info/linux-base.postinst. Você pode iniciá-lo manualmente ou procurar por um sinalizador "migrado" que possa ser apagado antes de chamar o dpkg-reconfigure.

    
por 06.11.2012 / 20:12