Как или что я могу удалить из / boot, учитывая, что он почти заполнен? [dубликат]

У этого вопроса уже есть ответ здесь: Как мне освободить больше места в / boot? 20 ответов Мой / загрузочный раздел достиг 100%, и теперь я не могу его обновить. Невозможно удалить старые ядра, чтобы дать номер 11 ответам

Как я могу очистить / загрузить или что удалить, учитывая, что он почти заполнен, и я продолжаю получать сообщение, в котором говорится, что осталось всего 5,1 МБ. Потому что, если я перейду на анализатор использования диска, как говорится, нет открытого для очистки.

Вот содержимое раздела:

username@hostname:~$ ls -l /boot/ total 423041 -rw-r--r-- 1 root root 1443719 Aug 9 07:08 abi-4.10.0-32-generic -rw-r--r-- 1 root root 1443962 Aug 11 13:59 abi-4.10.0-33-generic -rw-r--r-- 1 root root 1443962 Sep 13 07:16 abi-4.10.0-35-generic -rw-r--r-- 1 root root 1407843 Feb 5 2017 abi-4.8.0-36-generic -rw-r--r-- 1 root root 1408375 Mar 31 14:01 abi-4.8.0-46-generic -rw-r--r-- 1 root root 1408671 Apr 20 09:07 abi-4.8.0-49-generic -rw-r--r-- 1 root root 1408813 Jun 14 11:17 abi-4.8.0-56-generic -rw-r--r-- 1 root root 1408813 Jun 26 17:31 abi-4.8.0-58-generic -rw-r--r-- 1 root root 204970 Aug 9 07:08 config-4.10.0-32-generic -rw-r--r-- 1 root root 204970 Aug 11 13:59 config-4.10.0-33-generic -rw-r--r-- 1 root root 204970 Sep 13 07:16 config-4.10.0-35-generic -rw-r--r-- 1 root root 199575 Feb 5 2017 config-4.8.0-36-generic -rw-r--r-- 1 root root 199564 Mar 31 14:01 config-4.8.0-46-generic -rw-r--r-- 1 root root 199588 Apr 20 09:07 config-4.8.0-49-generic -rw-r--r-- 1 root root 199564 Jun 14 11:17 config-4.8.0-56-generic -rw-r--r-- 1 root root 199564 Jun 26 17:31 config-4.8.0-58-generic drwxr-xr-x 3 root root 1024 Apr 9 12:00 efi drwxr-xr-x 5 root root 1024 Sep 20 05:03 grub -rw-r--r-- 1 root root 42058341 Aug 28 10:57 initrd.img-4.10.0-32-generic -rw-r--r-- 1 root root 42056847 Aug 29 02:58 initrd.img-4.10.0-33-generic -rw-r--r-- 1 root root 42056820 Sep 20 05:03 initrd.img-4.10.0-35-generic -rw-r--r-- 1 root root 40647942 Aug 28 10:56 initrd.img-4.8.0-36-generic -rw-r--r-- 1 root root 40638652 Aug 28 10:55 initrd.img-4.8.0-46-generic -rw-r--r-- 1 root root 40637975 Aug 28 10:55 initrd.img-4.8.0-49-generic -rw-r--r-- 1 root root 40644972 Aug 28 10:55 initrd.img-4.8.0-56-generic -rw-r--r-- 1 root root 40643997 Aug 28 10:55 initrd.img-4.8.0-58-generic drwx------ 2 root root 12288 Apr 9 12:00 lost+found -rw-r--r-- 1 root root 182704 Jan 28 2016 memtest86+.bin -rw-r--r-- 1 root root 184380 Jan 28 2016 memtest86+.elf -rw-r--r-- 1 root root 184840 Jan 28 2016 memtest86+_multiboot.bin -rw------- 1 root root 3718993 Aug 9 07:08 System.map-4.10.0-32-generic -rw------- 1 root root 3721812 Aug 11 13:59 System.map-4.10.0-33-generic -rw------- 1 root root 3721891 Sep 13 07:16 System.map-4.10.0-35-generic -rw------- 1 root root 4060748 Feb 5 2017 System.map-4.8.0-36-generic -rw------- 1 root root 4066103 Mar 31 14:01 System.map-4.8.0-46-generic -rw------- 1 root root 4066773 Apr 20 09:07 System.map-4.8.0-49-generic -rw------- 1 root root 4068016 Jun 14 11:17 System.map-4.8.0-56-generic -rw------- 1 root root 4068043 Jun 26 17:32 System.map-4.8.0-58-generic -rw------- 1 root root 7398816 Aug 9 07:08 vmlinuz-4.10.0-32-generic -rw------- 1 root root 7404416 Aug 11 13:59 vmlinuz-4.10.0-33-generic -rw------- 1 root root 7405152 Sep 13 07:16 vmlinuz-4.10.0-35-generic -rw-r--r-- 1 root root 7297312 Apr 9 12:08 vmlinuz-4.8.0-36-generic -rw------- 1 root root 7305856 Mar 31 14:01 vmlinuz-4.8.0-46-generic -rw------- 1 root root 7305856 Apr 20 09:07 vmlinuz-4.8.0-49-generic -rw------- 1 root root 7309536 Jun 14 11:17 vmlinuz-4.8.0-56-generic -rw------- 1 root root 7310848 Jun 26 17:31 vmlinuz-4.8.0-58-generic username@hostname:~$
2
задан 22 September 2017 в 09:44

2 ответа

Вот сценарий, который делает это автоматически.

Самый простой способ очистить место в / boot - это избавиться от старых и неиспользуемых ядер. Я не хочу, чтобы ядро ​​удаляло ядро, которое вы сейчас используете (проверьте с uname -r), и вы не хотите удалять новое ядро, иначе вы будете загружать его снова при следующем обновлении.

Каждое ядро ​​и связанные с ним дисковые ресурсы занимают около 50 МБ пространства. Вы также хотите удалить ядра, используя только apt purge, потому что он удаляет зависимости и обновления grub в конце. Вы можете увидеть список установленных ядер, используя dpkg -l | grep linux-image.

Autoremove не всегда получает все старые ядра.

#!/bin/bash # create the clean-boot command line utility, if it doesn't exist if [ ! -f /usr/sbin/clean-boot ]; then cp "$0" /usr/sbin/clean-boot chown root.root /usr/sbin/clean-boot chmod 0770 /usr/sbin/clean-boot fi # add clean-boot cron job to root's crontab, if it doesn't exist if [[ `crontab -l | grep "/usr/sbin/clean-boot" | wc -l` -eq 0 ]]; then (crontab -l 2>/dev/null; echo "0 10 * * 3,4 /usr/sbin/clean-boot") | crontab - fi # array of kernels installed on the system kernels=($(dpkg --list | grep 'linux-image-[0-9]' | awk '{ print $2 }')) # kernel currently being used by the system current_kernel=linux-image-`uname -r` # newest kernel installed (currently being initialized to current_kernel) newest_kernel=$current_kernel # for loop below used to find the newest insitalled kernel for i in "${kernels[@]}" do # since newest is initialized to current, there is no need to parse through kernels same version as the one currently loaded if [[ $i != $current_kernel* ]]; then # each iteration of the for loop is for each version number (kernel version, major, minor, incidental numbers) example 4.8.0-56-generic for counter in 1 2 3 4 do # if statement extracts the version numbers if [[ $counter -lt 3 ]]; then compare_number=$(echo ${i#"linux-image-"} | cut -d'.' -f$counter) newest_number=$(echo ${newest_kernel#"linux-image-"} | cut -d'.' -f$counter) elif [[ $counter -eq 3 ]]; then compare_number=$(echo ${i#"linux-image-"} | cut -d'.' -f$counter) newest_number=$(echo ${newest_kernel#"linux-image-"} | cut -d'.' -f$counter) compare_number=$(echo ${compare_number} | cut -d'-' -f1) newest_number=$(echo ${newest_number} | cut -d'-' -f1) else compare_number=$(echo ${i#"linux-image-"} | cut -d'-' -f2) newest_number=$(echo ${newest_kernel#"linux-image-"} | cut -d'-' -f2) fi # this if statement does the comparison if [[ $compare_number -eq $newest_number ]]; then continue elif [[ $compare_number -lt $newest_number ]]; then break else newest_kernel=$i break fi done fi done # for every kernel for i in "${kernels[@]}" do # delete the kernel if the kernel is not the one in use and is not the newest one installed if [[ $i != $current_kernel* && $i != $newest_kernel* ]]; then apt-get purge "$i" -y fi done
1
ответ дан 18 July 2018 в 06:26

Вот сценарий, который делает это автоматически.

Самый простой способ очистить место в / boot - это избавиться от старых и неиспользуемых ядер. Я не хочу, чтобы ядро ​​удаляло ядро, которое вы сейчас используете (проверьте с uname -r), и вы не хотите удалять новое ядро, иначе вы будете загружать его снова при следующем обновлении.

Каждое ядро ​​и связанные с ним дисковые ресурсы занимают около 50 МБ пространства. Вы также хотите удалить ядра, используя только apt purge, потому что он удаляет зависимости и обновления grub в конце. Вы можете увидеть список установленных ядер, используя dpkg -l | grep linux-image.

Autoremove не всегда получает все старые ядра.

#!/bin/bash # create the clean-boot command line utility, if it doesn't exist if [ ! -f /usr/sbin/clean-boot ]; then cp "$0" /usr/sbin/clean-boot chown root.root /usr/sbin/clean-boot chmod 0770 /usr/sbin/clean-boot fi # add clean-boot cron job to root's crontab, if it doesn't exist if [[ `crontab -l | grep "/usr/sbin/clean-boot" | wc -l` -eq 0 ]]; then (crontab -l 2>/dev/null; echo "0 10 * * 3,4 /usr/sbin/clean-boot") | crontab - fi # array of kernels installed on the system kernels=($(dpkg --list | grep 'linux-image-[0-9]' | awk '{ print $2 }')) # kernel currently being used by the system current_kernel=linux-image-`uname -r` # newest kernel installed (currently being initialized to current_kernel) newest_kernel=$current_kernel # for loop below used to find the newest insitalled kernel for i in "${kernels[@]}" do # since newest is initialized to current, there is no need to parse through kernels same version as the one currently loaded if [[ $i != $current_kernel* ]]; then # each iteration of the for loop is for each version number (kernel version, major, minor, incidental numbers) example 4.8.0-56-generic for counter in 1 2 3 4 do # if statement extracts the version numbers if [[ $counter -lt 3 ]]; then compare_number=$(echo ${i#"linux-image-"} | cut -d'.' -f$counter) newest_number=$(echo ${newest_kernel#"linux-image-"} | cut -d'.' -f$counter) elif [[ $counter -eq 3 ]]; then compare_number=$(echo ${i#"linux-image-"} | cut -d'.' -f$counter) newest_number=$(echo ${newest_kernel#"linux-image-"} | cut -d'.' -f$counter) compare_number=$(echo ${compare_number} | cut -d'-' -f1) newest_number=$(echo ${newest_number} | cut -d'-' -f1) else compare_number=$(echo ${i#"linux-image-"} | cut -d'-' -f2) newest_number=$(echo ${newest_kernel#"linux-image-"} | cut -d'-' -f2) fi # this if statement does the comparison if [[ $compare_number -eq $newest_number ]]; then continue elif [[ $compare_number -lt $newest_number ]]; then break else newest_kernel=$i break fi done fi done # for every kernel for i in "${kernels[@]}" do # delete the kernel if the kernel is not the one in use and is not the newest one installed if [[ $i != $current_kernel* && $i != $newest_kernel* ]]; then apt-get purge "$i" -y fi done
1
ответ дан 24 July 2018 в 18:36
  • 1
    Я попробовал следующим образом, но он сказал следующее: имя_пользователя@имя_хоста:~$ судо /Home/имя_пользователя/чистой загрузки.баш не файл crontab для root /Home/имя_пользователя/чистой загрузки.баш: строка 81: ошибка синтаксиса: неожиданный конец файла имя_пользователя@имя_хоста:~$ – UbuntuUser009 26 September 2017 в 02:29
  • 2
    Nevermind сейчас, потому что он работает. – UbuntuUser009 26 September 2017 в 02:34
  • 3
    Я думаю, что это вызывает проблемы с командой копирования. – UbuntuUser009 28 September 2017 в 04:46

Другие вопросы по тегам:

Похожие вопросы: