Não há espaço disponível para liberar a partição rootfs para atualizar o kernel

1

Eu quero atualizar o kernel do Linux de 3.16 para 4.3 . Infelizmente, quando executo o aptitude install linux-image-4.3.0-1-amd64 , a instalação falha devido a falta de espaço na partição rootfs . 117MB restantes, 174MB necessários.

Eu não tenho kernels antigos para liberar mais espaço em disco (exceto o que estou usando agora):

root@host:/# aptitude search linux-image | grep ^i
ip  linux-image-3.16.0-4-amd64      - Linux 3.16 for 64-bit PCs

Eu tentei liberar o espaço usando aptitude clean , apt-get autoremove , mas não ajudou porque /var é uma partição separada. AFAIK esses comandos remove o conteúdo do diretório /var/cache/apt/archives , por isso não pode ajudar.

Eu considerei temporariamente mount --bind / /home/rootfs (como sugerido aqui ), mas rootfs provavelmente não pode ser remontado com segurança .

Uso do espaço em disco do sistema de arquivos:

root@host:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda6       454M  310M  117M  73% /
udev             10M     0   10M   0% /dev
tmpfs           1,6G   19M  1,6G   2% /run
/dev/sda7        23G   13G  8,8G  59% /usr
tmpfs           3,9G   52M  3,9G   2% /dev/shm
tmpfs           5,0M  4,0K  5,0M   1% /run/lock
tmpfs           3,9G     0  3,9G   0% /sys/fs/cgroup
/dev/sda4       250G  187G   64G  75% /media/Windows/C
/dev/sda5       500G  428G   73G  86% /media/Windows/D
/dev/sda2        96M   25M   72M  26% /boot/efi
/dev/sda8       7,3G  966M  5,9G  14% /var
/dev/sda9        14G   37M   13G   1% /tmp
/dev/sda11      126G   95G   25G  80% /home
tmpfs           797M   20K  797M   1% /run/user/112
tmpfs           797M   24K  797M   1% /run/user/1000

du -mx / | sort -n result: link .

Versão do SO:

root@host:/# cat /etc/debian_version 
stretch/sid

/boot content:

root@host:/# du -sh /boot/*
156K    /boot/config-3.16.0-4-amd64
25M     /boot/efi
8,8M    /boot/grub
16M     /boot/initrd.img-3.16.0-4-amd64
16M     /boot/initrd.img-3.16.0-4-amd64.old-dkms
2,6M    /boot/System.map-3.16.0-4-amd64
3,0M    /boot/vmlinuz-3.16.0-4-amd64
  • Existe alguma maneira inteligente e segura de liberar a partição rootfs ou mover temporariamente o kernel atual para outra partição?
  • É seguro mover algum conteúdo rootfs para outra partição e criar links simbólicos apontando para eles?

Eu sei que há muitos problemas semelhantes , mas a maioria deles acaba removendo os kernels antigos que eu não tem.

    
por patryk.beza 10.01.2016 / 15:50

1 resposta

2

450 MB não é muito para uma partição root + boot em um moderno sistema amd64. Se você quiser instalar vários kernels, terá que reorganizar suas partições. Mesmo se você não fizer isso, é muito apertado.

Dadas as partições que você tem agora, sugiro mover a partição raiz para o que é agora /var . Como você vai mover a partição raiz, inicialize a partir da mídia de resgate (por exemplo, SystemRescueCD ). Monte /dev/sda6 e /dev/sda8 , digamos para /media/sda6 e /media/sda8 . Então:

  1. Crie um diretório /var : mkdir /media/sda8/var
  2. Mova tudo na antiga partição /var para este novo subdiretório: mv /media/sda8/* /media/sda8/var ( /var será ignorado)
  3. Mova tudo, exceto /boot da antiga partição raiz para a antiga partição var: mv /media/sda6/[^bv]* /media/sda6/bin /media/sda8/
  4. Deve haver somente /boot e% vazio/var na partição raiz antiga. Mova tudo de /boot para a raiz da partição: mv /media/sda6/boot/* /media/sda6
  5. Remova os diretórios espúrios: rmdir /media/sda6/boot /media/sda6/var e crie um que seja necessário agora: mkdir /media/sda8/boot
  6. Edite o arquivo fstab (agora em /media/sda8/etc/fstab ), remova a entrada para /var , adicione uma para /boot e corrija a entrada para / , se necessário.
  7. Atualize a configuração do gerenciador de inicialização. A maneira mais fácil de acertar é executar os scripts update-grub (para regenerar grub.cfg ) e grub-install (para gerar novamente o gerenciador de inicialização de primeiro estágio para saber onde encontrar o restante, incluindo grub.cfg ). Mas para fazer isso, você precisa apresentar a árvore de diretórios correta.

    mount --rbind /dev /media/sda8/dev
    mount --rbind /proc /media/sda8/proc
    mount --rbind /sys /media/sda8/sys
    mount --bind /media/sda6 /media/sda8/boot
    chroot /media/sda8
    mount /usr
    update-grub
    grub-install /dev/sda
    

Agora reinicie.

Como alternativa, você pode mover /boot para /var ; mas é uma configuração menos comum, então você pode ter que ajustar alguns arquivos de configuração do gerenciador de inicialização.

Hoje em dia, separar /usr de / é bastante inútil. Separar /var de / nunca foi realmente útil (ambos precisam ser montados como read-write na maioria das configurações).

No futuro, recomendo usar o LVM para partições Linux. É muito mais flexível.

    
por 11.01.2016 / 01:24