Como posso excluir com segurança a versão antiga do kernel da partição / boot do meu sistema Ubuntu?

1

Eu não sou tão em Linux e tenho o seguinte problema relacionado ao fato de que minha partição / boot parece estar cheia e parece causar um problema tentando para instalar um programa.

Estou usando o Ubuntu Ubuntu 16.04.1 LTS

Eu tento explicar em detalhes minhas dúvidas, porque não sou tão engenheiro de sistemas (sou desenvolvedor de software).

1) Realizar a instrução lsblk lista informações sobre todos os dispositivos de bloco disponíveis ou especificados.

Empiricamente, acho que deve mostrar a lista de todas as partições / discos montados ou algo assim. O que exatamente significa com os termos bloquear dispositivos ?

Então, se eu executar essa declaração no meu sistema Ubuntu , obtenho:

root@MyServer-VPS:~# lsblk
NAME           MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0              2:0    1    4K  0 disk
sda              8:0    0   20G  0 disk
├─sda1           8:1    0  476M  0 part /boot
├─sda2           8:2    0    1K  0 part
├─sda3           8:3    0   10G  0 part
│ └─vg-lv_root 252:0    0 18.6G  0 lvm  /
└─sda5           8:5    0  9.5G  0 part
  ├─vg-lv_root 252:0    0 18.6G  0 lvm  /
  └─vg-lv_swap 252:1    0  952M  0 lvm  [SWAP]
sr0             11:0    1 1024M  0 rom

Então, qual é a diferença entre disco , parte (deve ser uma partição do disco pai), lvm e rom ?

Uma partição específica é boot , esta:

sda1           8:1    0  476M  0 part /boot

que é uma partição de disco sda .

Pelo que eu sei, ele deve conter as versões baixadas do Linux Kernel . É?

Ok, o ponto de montagem é / boot então acho que é o diretório / boot no meu sistema (é isso?), este é o conteúdo:

root@MyServer-VPS:/boot# ls
abi-4.4.0-21-generic  config-4.4.0-21-generic  grub                         System.map-4.4.0-21-generic  vmlinuz-4.4.0-21-generic
abi-4.4.0-31-generic  config-4.4.0-31-generic  initrd.img-4.4.0-21-generic  System.map-4.4.0-31-generic  vmlinuz-4.4.0-31-generic
abi-4.4.0-34-generic  config-4.4.0-34-generic  initrd.img-4.4.0-31-generic  System.map-4.4.0-34-generic  vmlinuz-4.4.0-34-generic
abi-4.4.0-38-generic  config-4.4.0-38-generic  initrd.img-4.4.0-34-generic  System.map-4.4.0-38-generic  vmlinuz-4.4.0-38-generic
abi-4.4.0-42-generic  config-4.4.0-42-generic  initrd.img-4.4.0-38-generic  System.map-4.4.0-42-generic  vmlinuz-4.4.0-42-generic
abi-4.4.0-45-generic  config-4.4.0-45-generic  initrd.img-4.4.0-42-generic  System.map-4.4.0-45-generic  vmlinuz-4.4.0-45-generic
abi-4.4.0-47-generic  config-4.4.0-47-generic  initrd.img-4.4.0-45-generic  System.map-4.4.0-47-generic  vmlinuz-4.4.0-47-generic
abi-4.4.0-51-generic  config-4.4.0-51-generic  initrd.img-4.4.0-47-generic  System.map-4.4.0-51-generic  vmlinuz-4.4.0-51-generic
abi-4.4.0-53-generic  config-4.4.0-53-generic  initrd.img-4.4.0-51-generic  System.map-4.4.0-53-generic  vmlinuz-4.4.0-53-generic
abi-4.4.0-57-generic  config-4.4.0-57-generic  initrd.img-4.4.0-53-generic  System.map-4.4.0-57-generic  vmlinuz-4.4.0-57-generic
abi-4.4.0-59-generic  config-4.4.0-59-generic  lost+found                   System.map-4.4.0-59-generic  vmlinuz-4.4.0-59-generic

Então, o que exatamente representa esse conteúdo? As diferentes versões do kernel do Linux são baixadas neste sistema?

Qual é a diferença entre o abi - , o config - , o initrd.img - , o System.map - e vmlinuz-4 ?

Como posso detectar a versão do kernel usada?

2) Executando a declaração df -h eu obtenho esta saída:

root@MyServer-VPS:~# df -h
Filesystem              Size  Used Avail Use% Mounted on
udev                    477M     0  477M   0% /dev
tmpfs                   100M   16M   84M  16% /run
/dev/mapper/vg-lv_root   19G   12G  6.3G  64% /
tmpfs                   497M     0  497M   0% /dev/shm
tmpfs                   5.0M     0  5.0M   0% /run/lock
tmpfs                   497M     0  497M   0% /sys/fs/cgroup
/dev/sda1               461M  458M     0 100% /boot
tmpfs                   100M     0  100M   0% /run/user/0

Em particular, eu tenho isso:

/dev/sda1               461M  458M     0 100% /boot

Então, isso significa que minha partição / boot está completamente cheia?

Meu problema é: posso excluir com segurança toda a versão antiga do kernel (a não usada) para liberar espaço no / boot ?

Como posso fazer isso?

    
por AndreaNobili 04.02.2017 / 18:13

3 respostas

1

Estas são muitas perguntas em uma:

What exactly means with the terms block devices?

Bloquear dispositivos são arquivos especiais que fornecem acesso em buffer a dispositivos de hardware e uma camada de abstração ao sistema operacional .

So what is the difference between disk, part (it should be a partition of the parent disk), lvm and rom?

disco e parte como você adivinhou são seus discos físicos ou unidades e as partições neles. lvm é a abreviação de Gerenciador de Volume Lógico . Ele agrupa várias partições em um único volume lógico para gerenciar melhor o espaço em disco. rom é o seu drive de cd-rom ou dvd-rom chamado "sr0".

How can I detect the used kernel version?

Você pode detectar seu kernel atual em uso digitando no terminal:

uname -a

So it means that my /boot partition is completly full?

Na verdade, sua partição de inicialização está completamente cheia, o que impedirá que o Ubuntu instale novas versões do kernel.

My problem is: can I saftly deetect delete all the old kernel version (the not used one) to free up space in the /boot ?

Você pode tentar remover pacotes antigos do sistema que devem liberar kernels antigos das partições de inicialização. Digite no terminal este comando, digite a senha do administrador e responda "y" para remover pacotes antigos:

sudo apt autoremove

Isto irá remover com segurança versões antigas do kernel e atualizar suas opções de inicialização e initram-fs também.

    
por 04.02.2017 / 20:06
1

Se o apt não estiver funcionando, tente, dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)//")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*//;/[0-9]/!d' | xargs sudo dpkg -P

Isso elimina todos os Kernel com cabeçalhos além do seu Kernel atual em execução. Se você não tiver certeza, pode procurar primeiro com dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)//")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*//;/[0-9]/!d' quais pacotes serão eliminados

    
por 04.02.2017 / 22:50
0

Tenho certeza que o Ubuntu é usar o gerenciador de pacotes da GUI, mas eu apenas faria isso na linha de comando.

Primeiro, descubra exatamente quais nomes de pacotes estão instalados -

dpkg -l | grep linux-image

A figura que kernel está realmente executando

uname -a

Em seguida, use

sudo apt-get autoremove PackageName

Onde PackageName é o nome do pacote de imagens do kernel que você deseja remover - pode ser algo como linux-image-4.4.0-21-generic. Isto irá remover a imagem do kernel (seus arquivos de diretório / boot), a estrutura de diretório / lib / modules / kernel_version, o pacote de cabeçalhos do kernel, etc. reconfigure o grub conforme necessário e assim por diante.

    
por 04.02.2017 / 19:57