Problemas na montagem das partições

Primeiro irei explicar os passos que fiz, para dar um contexto melhor. Recentemente comprei outro SSD, agora tenho um sistema diferente em cada SSD (sendo eles Void Linux e Windows 10) e um HD sobrando. Dividi meu HD em três partições, sendo elas:

  • (1) Partição para backup e outros
  • (2) Uma partição NTFS para o windows
  • (3) Uma partição ext4 para o Linux

Criei um script em /etc/profile.d e tornei executável para montar (1) e (3):

#!/bin/bash
if ! mount | grep -q 'sdb1'; then
    udisksctl mount -b /dev/sdb1
fi

if ! mount | grep -q 'sdb2'; then
    udisksctl mount -b /dev/sdb2
fi

Estaria tudo certo, porém quando utilizo o Windows e em seguida decido voltar para o Linux, a partição troca seu “/dev/sd(x)”. Por exemplo: No script acima está dizendo para montar as partições “sdb”, porém quando utilizo o Windows, essas partições trocam seu nome, viram “sdc” por exemplo.

Como posso resolver isso?

1 curtida

Olá @b_Andrade!

acho que você pode de alguma maneira tentar montar pelo UUID da partição ao invés do “sdX” que realmente pode mudar na inicialização.

Para listar todas as partições e pegar o UUID (se eu não estiver equivocado, porque no momento não tenho como testar), você pode usar o comando blkid. Ou ainda filtar para pegar mais fácil. Digamos que nesta incialização a partição que você quer esteja sdc1. Você pode usar o comando da seguinte forma: blkid | grep "sdc1".

Na saída, você deve ter algo do tipo: UUID=e802c720-8bf4-4e6c-8d3c-70ffe584324e.

Sendo assim, basta tentar adaptar o seu script para montar pelo UUID que deve resolver o seu problema.

Pensei nisso, mas não sei como adptar isso no Script kkkkkk

Não seria mais fácil fazer pelo FSTAB? (Utilizando também o UUID da partição, ao invés de /dev/sdX…)

Tive dois problemas pelo fstab:

  • Por algum motivo eu não tinha permisssão para fazer nada na partição;
  • Quando montado pelo fstab, se eu excluir algo dentro da partição, ela não vai para a lixeira.

Então, to pensando agora em como adaptar isso no script acima.

Faz do jeito fácil:

Verifique se esta montado com o utilitário mountpoint apontando para o diretório de montagem, se não estiver ele retornará falso.

Depois monte a partir do UUID como já dito, ficando algo como exemplificado abaixo.

sudo mount UUID=<UUID> /mnt/<DIR>

Para obter o UUID dos discos execute o seguinte comando.

lsblk -o UUID,NAME

Precisara do pacote gvfs

1 curtida

Não cheguei a testar. Substitua cada campo de uuid* pelo valor do uuid real das suas partições em espécifico, consegue eles com o comando blkid

#!/bin/bash
for partitionuuid in uuid1 uuid2; do
    partitionpath="$(lsblk --uid "${partitionuuid}")"
    if ! mount | grep -q "${partitionpath}"; then
        udisksctl mount -b "${partitionpath}"
    fi
done

Adicione as opções user e rw no fstab, e veja se faz algum efeito.

Bem lembrado também.

Não tinha feito assim antes pois o gnome disks não abria, mas agora foi

tmj

1 curtida

O problema de usar o Windows e Linux compartilhando partições de ‘backup’ é que o modo de hibernação do windows bloqueia as partições. Ou mesmo as atualizações do windows também bloqueiam as partições até finalizar o processo.(instalar as atualizações, reiniciar todas as vezes necessárias até o fim, iniciar no windows desligar o pc, para só então dar boot no linux.

1 curtida

Para desativar, execute no Prompt de comando como administrador o seguinte comando powercfg.exe /hibernate off

1 curtida

O ruim de fazer isso é que ao desmarcar o ‘padrões de sessão de usuário’ o proprietário do disco fica sendo o usuário root, não o usuário logado.
Aí os arquivos deletados não vão para a lixeira do usuário, a steam não deixa instalar jogos no hd de backup (onde o proprietário é o root) e outras implicações…

1 curtida

Bom alerta! @b_Andrade, faz os testes necessários então…

Alterei o script para vc montar as partições atraves do uuid. E não esqueça de desativar o modo hibernação do windows também.

com o comando abaixo vc identifica o uuid das suas partições:

lsblk -o NAME,UUID

script alterado:

#!/bin/bash

#para identificar o uuid da partição:
#lsblk -o NAME,UUID

for uuid in /dev/disk/by-uuid/*; do 
    if [[ "$uuid" == *"SEU_UUID_AQUI"* ]]; then
        udisksctl mount -b /dev/disk/by-uuid/SEU_UUID_AQUI
    fi

    if [[ "$uuid" == *"SEU_OUTRO_UUID_AQUI"* ]]; then
        udisksctl mount -b /dev/disk/by-uuid/SEU_OUTRO_UUID_AQUI
    fi
done


vamos supor que o uuid da sua partição seja isso:

91125156-2b1d-11ed-a261-0242ac120002

o script deve ficar assim:

for uuid in /dev/disk/by-uuid/*; do 
    if [[ "$uuid" == *"91125156-2b1d-11ed-a261-0242ac120002"* ]]; then
        udisksctl mount -b /dev/disk/by-uuid/91125156-2b1d-11ed-a261-0242ac120002
    fi
done
1 curtida

Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.