Como desativar o teste do kernel para a unidade?

9

Eu tenho o laptop Samsung com 30GB ExpressCache SanDisk SSD soldado no mainbord. SSD morreu (dá toneladas de erros quando eu tento acessá-lo de alguma forma), mas ainda é sondado na inicialização do kernel, eu vejo sua partição, a unidade do Ubuntu mostra o ícone da unidade desmontada na gaveta de aplicativos e o pior de tudo eu não consigo suspender o laptop , porque o envio do comando suspender para o dispositivo ssd falha. Eu tentei passar o parâmetro do kernel sdb = noprobe, mas parece que está obsoleto há muito tempo no kernel 3.8.0 (Ubuntu 13.04). Como posso desativar o dispositivo sata nos kernels recentes?

    
por Sergey Melekhin 24.05.2013 / 06:43

3 respostas

1

Duas soluções aqui: uma é rápida de aplicar, embora resolva o problema apenas parcialmente, a outra é a completa, mas requer que você compile seu próprio kernel.

A resposta correta é um patch do kernel.

Robin H. Johnson escreveu um patch para o driver do kernel SATA ( encontra-o no site de troca de pilha Unix / Linux ) que esconde completamente o drive.

Update O patch agora é upstream (pelo menos no 3.12.7 kernel estável), veja o repositório git . Eu pedi por backport na barra de lançamento do Ubuntu .

Quando o patch estiver instalado, adicione

 libata.force=2.00:disable

para os parâmetros de inicialização do kernel irá esconder o disco do kernel do Linux. Verifique novamente se o número está correto; pesquisar pelo nome do dispositivo pode ajudar:

(0)samsung-romano:~% dmesg | grep iSSD
[    1.493279] ata2.00: ATA-8: SanDisk iSSD P4 8GB, SSD 9.14, max UDMA/133
[    1.494236] scsi 1:0:0:0: Direct-Access     ATA      SanDisk iSSD P4  SSD  PQ: 0 ANSI: 5

Solução alternativa

Respondida pelo usuário Emmanuel do Unix StackExchange em link

Você pode pelo menos resolver o problema de suspensão emitindo o comando

echo 1 > /sys/block/sdb/device/delete

antes de suspender.

Para automatizá-lo, adicionei o seguinte arquivo: (observe os sinalizadores, ele deve ser executável)

-rwxr-xr-x 1 root root 204 Dec  6 16:03 99_delete_sdb

no diretório /etc/pm/sleep.d/

#!/bin/sh

# Tell grub that resume was successful

case "$1" in
    suspend|hibernate)
        if [ -d /sys/block/sdb ]; then
            echo Deleting device sdb 
            echo 1 > /sys/block/sdb/device/delete       
        fi
        ;;
esac

... e agora o sistema suspende (e continua) corretamente. Eu adicionei o trecho

if [ -d /sys/block/sdb ]; then
      echo Deleting device sdb 
      echo 1 > /sys/block/sdb/device/delete     
fi

para /etc/rc.local também, para uma boa medida.

    
por 07.12.2013 / 00:23
5

Eu fui e escrevi um patch de kernel para você que implementa a capacidade de desabilitar um único disco no momento da inicialização, para que você não precise se preocupar em desabilitá-lo no udev ou na espera durante a inicialização.

link

Deve ser aplicado a muitos kernels com muita facilidade (a linha acima foi adicionada 2013-05-21 / v3.10-rc1 *, mas pode ser aplicada com segurança manualmente sem essa linha).

    
por 08.12.2013 / 02:02
0

Eu pesquisei isso e encontrei uma solução que pode ser implementada facilmente no Ubuntu. A distro usa o kmod, então o seguinte deve funcionar bem com isso e qualquer distro que use o kmod.

Dependendo do driver que você está usando, você precisará lista negra se quiser desativar todos os dispositivos SATA. Tente lsmod | grep sata e descubra qual (is) driver (s) você está usando. Em seguida, no seu /etc/modprobe.d/ , crie um novo arquivo com echo blacklist (module) > blacklist.conf para adicioná-lo à lista negra. Reconstrua seu initramfs com mkinitramfs para que ele tenha efeito. Reinicie.

Como alternativa, basta adicionar modprobe.blacklist=(module) aos seus parâmetros do kernel.

    
por 22.09.2013 / 02:17