Eu tive um problema parecido, mas decidi mover meu /usr
para /home/usr
( /home
é montado a partir do sistema de arquivos 14G, o que me dá muito espaço para pacotes adicionais).
Esta é uma maneira um pouco hackeada de fazer isso, mas parece funcionar para mim. Os exemplos de código a seguir estão usando $
para indicar que o comando deve ser executado como usuário normal e #
para indicar a função do usuário raiz (que pode ser obtida por sudo ou loggig como root).
-
Defina a senha para o usuário root, você precisará da capacidade de registrar como root, caso estrague qualquer coisa com o
/usr/bin/sudo
. Para fazer isso:$ sudo su # passwd
-
Copie o conteúdo de
/usr
preservando propriedade e permissões:$ cd /usr $ sudo find . -depth -print0 | sudo cpio --null --sparse -pvd /home/usr/
-
A próxima etapa lógica seria usar
fstab
para montar/home/usr
as/usr
na inicialização, no entanto todas as alterações que eu tentei fazer nofstab
estavam desaparecendo após a reinicialização do Ubuntu. Então, criei um script simples para fazer a montagem e salvei-o como/etc/init.d/bind.sh
:#!/bin/sh if [ "X" = "Xstart" ]; then echo "Binding /home/usr to /usr..." chmod 4755 /home/usr/bin/passwd /home/usr/bin/chsh /home/usr/bin/pkexec /home/usr/bin/sudo /home/usr/bin/newgrp /home/usr/bin/gpasswd /home/usr/bin/chfn /home/usr/lib/pt_chown /home/usr/lib/eject/dmcrypt-get-device /home/usr/lib/openssh/ssh-keysign /home/usr/lib/dbus-1.0/dbus-daemon-launch-helper /home/usr/lib/policykit-1/polkit-agent-helper-1 /home/usr/lib/arm-linux-gnueabihf/oxide-qt/chrome-sandbox /home/usr/lib/arm-linux-gnueabihf/lxc/lxc-user-nic mount -o bind,suid /home/usr /usr echo "...done" fi
A linha chmod é necessária, pois notei que
suid bit
está algumas vezes ausente após a montagem. A lista dos arquivos que tinham osuid bit
definido pode ser encontrada executando# find /usr -user root -perm -4000
no diretório/usr
original. Por favor, note que se você instalar qualquer coisa mais tarde que esteja usando osuid bit
, ele poderá ser quebrado a menos que você o adicione à lista.Você precisará criar um link simbólico em
/etc/rcS.d
parabind.sh
:# ln -s /etc/init.d/bind.sh /etc/rcS.d/S36bind.sh
Nota: você pode escolher um número diferente de 36, dependendo do estado do seu
/etc/rcS.d
. -
Após a reinicialização, o sistema deve estar usando
/home/usr
as/usr
, portanto, esperamos que você tenha mais espaço para pacotes adicionais. Observe que o antigo/usr
ainda existe, mas é inacessível, desde que o novo diretório seja montado.Caso algo dê errado, você poderá retornar ao estado anterior renomeando o link simbólico em
/etc/rcS.d
e reinicializando:# mv /etc/rcS.d/S36bind.sh /etc/rcS.d/K36bind.sh