do-release-upgrade
を実行しようとしますが、次のようになります:
十分な空きディスク容量がありません
アップグレードは中止されました。アップグレードには、ディスク '/ boot'に合計25.7 Mの空き領域が必要です。 '/ boot'に少なくとも25.7 Mの追加のディスク領域を解放してください。 「Sudo apt-get clean」を使用して、ごみ箱を空にし、以前のインストールの一時パッケージを削除します。
df
の出力:
237251272 214797108 10402504 96% /
udev 488120 4 488116 1% /dev
tmpfs 198676 668 198008 1% /run
none 5120 0 5120 0% /run/lock
none 496684 0 496684 0% /run/shm
/dev/sda1 233191 225867 0 100% /boot
ブート時にスペースが残らないのはなぜですか? ls -as /boot
の出力は次のとおりです。
total 221839
4 .
4 ..
645 abi-2.6.32-34-generic-pae
698 abi-2.6.35-30-generic-pae
727 abi-2.6.38-12-generic-pae
727 abi-3.0.0-12-generic-pae
727 abi-3.0.0-13-generic-pae
727 abi-3.0.0-14-generic-pae
727 abi-3.0.0-15-generic-pae
727 abi-3.0.0-16-generic-pae
727 abi-3.0.0-17-generic-pae
727 abi-3.0.0-19-generic-pae
761 abi-3.0.0-20-generic-pae
115 config-2.6.32-34-generic-pae
128 config-2.6.35-30-generic-pae
136 config-2.6.38-12-generic-pae
140 config-3.0.0-12-generic-pae
140 config-3.0.0-13-generic-pae
140 config-3.0.0-14-generic-pae
140 config-3.0.0-15-generic-pae
140 config-3.0.0-16-generic-pae
140 config-3.0.0-17-generic-pae
140 config-3.0.0-19-generic-pae
140 config-3.0.0-20-generic-pae
5 grub
10773 initrd.img-2.6.32-34-generic-pae
13619 initrd.img-2.6.35-30-generic-pae
15365 initrd.img-2.6.38-12-generic-pae
16481 initrd.img-3.0.0-12-generic-pae
16487 initrd.img-3.0.0-13-generic-pae
16501 initrd.img-3.0.0-14-generic-pae
16476 initrd.img-3.0.0-15-generic-pae
16481 initrd.img-3.0.0-16-generic-pae
16478 initrd.img-3.0.0-17-generic-pae
12 lost+found
174 memtest86+.bin
176 memtest86+_multiboot.bin
1700 System.map-2.6.32-34-generic-pae
1841 System.map-2.6.35-30-generic-pae
2115 System.map-2.6.38-12-generic-pae
2141 System.map-3.0.0-12-generic-pae
2141 System.map-3.0.0-13-generic-pae
2143 System.map-3.0.0-14-generic-pae
2146 System.map-3.0.0-15-generic-pae
2147 System.map-3.0.0-16-generic-pae
2147 System.map-3.0.0-17-generic-pae
2148 System.map-3.0.0-19-generic-pae
2149 System.map-3.0.0-20-generic-pae
2 vmcoreinfo-2.6.32-34-generic-pae
2 vmcoreinfo-2.6.35-30-generic-pae
2 vmcoreinfo-2.6.38-12-generic-pae
2 vmcoreinfo-3.0.0-12-generic-pae
2 vmcoreinfo-3.0.0-13-generic-pae
2 vmcoreinfo-3.0.0-14-generic-pae
2 vmcoreinfo-3.0.0-15-generic-pae
2 vmcoreinfo-3.0.0-16-generic-pae
2 vmcoreinfo-3.0.0-17-generic-pae
2 vmcoreinfo-3.0.0-19-generic-pae
2 vmcoreinfo-3.0.0-20-generic-pae
4092 vmlinuz-2.6.32-34-generic-pae
4347 vmlinuz-2.6.35-30-generic-pae
4567 vmlinuz-2.6.38-12-generic-pae
4675 vmlinuz-3.0.0-12-generic-pae
4676 vmlinuz-3.0.0-13-generic-pae
4681 vmlinuz-3.0.0-14-generic-pae
4698 vmlinuz-3.0.0-15-generic-pae
4700 vmlinuz-3.0.0-16-generic-pae
4700 vmlinuz-3.0.0-17-generic-pae
4703 vmlinuz-3.0.0-19-generic-pae
4705 vmlinuz-3.0.0-20-generic-pae
uname -a
の出力:
Linux kitsch 3.0.0-17-generic-pae #30-Ubuntu SMP Thu Mar 8 17:53:35 UTC 2012 i686 i686 i386 GNU/Linux
/ bootパーティションには古いカーネルがいっぱいです。それは時々それを行いますが、なぜそれが決して修正されないのか分かりません。古いカーネルが入ったパッケージを知っていれば、簡単に古いカーネルを削除できます。
最初にuname -a
をチェックして、現在のバージョンを確認してください。
次に、次のコマンドを実行します。
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'
このコマンドは、不要になったすべてのパッケージをリストします。私はそれらを自動的に削除するのは好きではありません。カーネルを削除することになると、私は管理するのが好きです。そのため、リストされているすべてのパッケージに対して次を実行します。
Sudo apt-get -y purge some-kernel-package
このintermezzoは、コマンドがどのように機能するかを詳細に説明し、linux-libc-dev:AMD64
の問題を修正しようとします。ほとんどのユーザーはこの段落をスキップできます。
dpkg -l 'linux-*'
'linux-'で始まる名前を持つすべてのパッケージをリストしますsed '/^ii/!d; remove all lines that do *not* start with
ii`uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/"
現在実行中のカーネルバージョンを見つける/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d
現在実行中のカーネルバージョン番号を含む行を除くすべての行を削除しますs/^[^ ]* [^ ]* \([^ ]*\).*/\1/
各行のリストにはパッケージ名のみ/[0-9]/!d
数字を含まない行を削除します。修正するには Frederick Nordの問題 コマンドは次のように修正できると思います。
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d;/^linux-\(headers\|image\)/!d'
基本的に追加のフィルターを追加します。
linux-headers
またはlinux-image
で始まらない行をすべて削除しますsome-kernel-package
は、リストされているパッケージのいずれかに置き換えることができます。現在使用中のカーネルパッケージ(uname -a
でリストされている)を削除しないように注意してください。 Sudo apt-get purge -y linux-headers-3.0.0-12
など.
Xargsコマンドを使用してさらに自動化できますが、私はそれが好きではありません。それは個人的なものです。ただし、これを行うコマンドは次のとおりです。
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs Sudo apt-get -y purge
これは私の/boot
がどのように見えるかということで、念のため1つのスペアカーネル(2.6.38-11)と3.2.0-24が最新のものです。
$ ls -l /boot
total 59388
-rw-r--r-- 1 root root 730545 Sep 13 2011 abi-2.6.38-11-generic
-rw-r--r-- 1 root root 791023 Apr 25 13:51 abi-3.2.0-24-generic
-rw-r--r-- 1 root root 130326 Sep 13 2011 config-2.6.38-11-generic
-rw-r--r-- 1 root root 140341 Apr 25 13:51 config-3.2.0-24-generic
drwxr-xr-x 3 root root 5120 May 27 17:46 grub
-rw-r--r-- 1 root root 20883146 Oct 1 2011 initrd.img-2.6.38-11-generic
-rw-r--r-- 1 root root 22474219 May 5 09:04 initrd.img-3.2.0-24-generic
drwxr-xr-x 2 root root 12288 Apr 16 2009 lost+found
-rw-r--r-- 1 root root 176764 Nov 27 11:00 memtest86+.bin
-rw-r--r-- 1 root root 178944 Nov 27 11:00 memtest86+_multiboot.bin
-rw------- 1 root root 2656297 Sep 13 2011 System.map-2.6.38-11-generic
-rw------- 1 root root 2884358 Apr 25 13:51 System.map-3.2.0-24-generic
-rw------- 1 root root 1369 Sep 13 2011 vmcoreinfo-2.6.38-11-generic
-rw------- 1 root root 4526784 Sep 13 2011 vmlinuz-2.6.38-11-generic
-rw------- 1 root root 4965776 Apr 25 13:51 vmlinuz-3.2.0-24-generic
ファイルシステムの使用:
$ df -h /boot
Filesystem Size Used Avail Use% Mounted
/dev/sda5 228M 63M 154M 29% /boot
Sudo apt-get autoremove
私のためにトリックをしました、それはすべての未使用のカーネルパッケージを正常にクリーンアップしました。
受け入れられた答えと同等です-別の(おそらく)より簡単な方法は、ubuntu-Tweak
ツールをインストールすることです。これは here からダウンロードできます。 「管理者」に移動し、「古いカーネル」を選択してクリーニングします。数回クリックするだけで実行できます。 (14.04デスクトップでテスト済み)
ここでの他のGUI回答と比較して、この回答の利点は、ネイティブUbuntu Bashがサードパーティアプリケーションをインストールせずに使用されることです。
Zenityは、端末にNice GUIインターフェイスを提供して、リストを処理し、radio-buttonsでアイテムを選択します
起動した現在のカーネルは削除できず、リストに含まれていません。報告されるサイズは、/boot
ディレクトリに保存される量です。カーネルバイナリは他の領域にも存在するため、ディスクにはさらに多くのデータが保存されます。 2017年7月27日note:/usr/src/*kernel_version*
および/lib/modules/*kernel_version*
ディレクトリも含まれるようになりました。
Modified Dateは、stat
コマンドを使用して検出されます。私のシステムでは、この日付は "touched"で、これを使用してカーネルが起動されるたびに( 特定のカーネルバージョンが最後に起動されたときはどうすればわかりますか? =)cron再起動スクリプト。ただし、システムの日付は、最後にブートしたときではなく、カーネルのリリース日になります。
apt-get purge
は中止する機会を与えますパージされるすべてのものを表示し、回復される合計ディスクスペース(多少誤解を招く)を確認する最後の機会が与えられます。
The following packages will be REMOVED:
linux-headers-4.7.1-040701* linux-headers-4.7.1-040701-generic*
linux-headers-4.7.2-040702* linux-headers-4.7.2-040702-generic*
linux-headers-4.7.3-040703* linux-headers-4.7.3-040703-generic*
linux-headers-4.8.1-040801* linux-headers-4.8.1-040801-generic*
linux-headers-4.8.10-040810* linux-headers-4.8.10-040810-generic*
linux-headers-4.8.11-040811* linux-headers-4.8.11-040811-generic*
linux-headers-4.8.4-040804* linux-headers-4.8.4-040804-generic*
linux-headers-4.8.5-040805* linux-headers-4.8.5-040805-generic*
linux-image-4.7.1-040701-generic* linux-image-4.7.2-040702-generic*
linux-image-4.7.3-040703-generic* linux-image-4.8.1-040801-generic*
linux-image-4.8.10-040810-generic* linux-image-4.8.11-040811-generic*
linux-image-4.8.4-040804-generic* linux-image-4.8.5-040805-generic*
0 upgraded, 0 newly installed, 24 to remove and 2 not upgraded.
After this operation, 2,330 MB disk space will be freed.
Do you want to continue? [Y/n]
このコードをrm-kernels
内の/usr/local/bin
という名前の実行可能ファイルにコピーします。
#!/bin/bash
# NAME: rm-kernels
# PATH: /usr/local/bin
# DESC: Provide zenity item list of kernels to remove
# DATE: Mar 10, 2017. Modified Jul 28, 2017.
# NOTE: Will not delete current kernel.
# With 10 kernels on an SSD, empty cache from Sudo Prompt (#) using:
# # free && sync && echo 3 > /proc/sys/vm/drop_caches && free
# First time for `du` 34 seconds.
# Second time for `du` 1 second.
# PARM: If any parm 1 passed use REAL kernel size, else use estimated size.
# By default `du` is not used and estimated size is displayed.
# Must be running as Sudo
if [[ $(id -u) != 0 ]]; then
zenity --error --text "root access required. Use: Sudo rm-kernels"
exit 99
fi
OLDIFS="$IFS"
IFS="|"
choices=()
current_version=$(uname -r)
for f in /boot/vmlinuz*
do
if [[ $f == *"$current_version"* ]]; then continue; fi # skip current version
[[ $f =~ vmlinuz-(.*) ]]
v=${BASH_REMATCH[1]} # example: 4.9.21-040921-generic
v_main="${v%-*}" # example: 4.9.21-040921
# Kernel size in /boot/*4.9.21-040921-generic*
s=$(du -ch /boot/*-$v* | awk '/total/{print $1}')
if [[ $# -ne 0 ]] ; then # Was a parameter passed?
if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
# Kernel headers size in /usr/src/*4.9.21-040921*
s2=$(du -ch --max-depth=1 /usr/src/*-$v_main* | awk '/total/{print $1}')
else
s2="0M" # Linux Headers are not installed
fi
# Kernel image size in /lib/modules/4.9.21-040921-generic*
s3=$(du -ch --max-depth=1 /lib/modules/$v* | awk '/total/{print $1}')
else
# Estimate sizof of optional headers at 125MB and size of image at 220MB
if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
s2="125M"
else
s2="0M" # Linux Headers are not installed
fi
s3="220M"
fi
# Strip out "M" provided by human readable option of du and add 3 sizes together
s=$(( ${s//[^0-9]*} + ${s2//[^0-9]*} + ${s3//[^0-9]*} ))
t=$(( t + s ))
s=$s" MB"
d=$(date --date $(stat -c %y $f) '+%b %d %Y') # Last modified date for display
choices=("${choices[@]}" false "$v" "$d" "$s")
done
# adjust width & height below for your screen 640x480 default for 1920x1080 HD screen
# also adjust font="14" below if blue text is too small or too large
choices=(`zenity \
--title "rm-kernels - Total: $t MB excluding: $current_version" \
--list \
--separator="$IFS" \
--checklist --multiple \
--text '<span foreground="blue" font="14">Check box next to kernel(s) to remove</span>' \
--width=640 \
--height=480 \
--column "Select" \
--column "Kernel Version Number" \
--column "Modified Date" \
--column " Size " \
"${choices[@]}"`)
IFS="$OLDIFS"
i=0
list=""
for choice in "${choices[@]}" ; do
if [ "$i" -gt 0 ]; then list="$list- "; fi # append "-" from last loop
((i++))
short_choice=$(echo $choice | cut -f1-2 -d"-")
header_count=$(find /usr/src/linux-headers-$short_choice* -maxdepth 0 -type d | wc -l)
# If -lowlatency and -generic are purged at same time the _all header directory
# remains on disk for specific version with no -generic or -lowlatency below.
if [[ $header_count -lt 3 ]]; then
# Remove all w.x.y-zzz headers
list="$list""linux-image-$choice- linux-headers-$short_choice"
else
# Remove w.x.y-zzz-flavour header only, ie -generic or -lowlatency
list="$list""linux-image-$choice- linux-headers-$choice"
fi
done
if [ "$i" -gt 0 ] ; then
apt-get purge $list
fi
注:ファイルを作成するにはSudo権限が必要です。
gksu gedit /usr/local/bin/rm-kernels
ファイルを実行可能にするには:
Sudo chmod +x /usr/local/bin/rm-kernels
注:このスクリプトのサーバー(GUIではなくテキストベース)バージョンの場合: クリーンアップするために古いカーネルバージョンを削除する方法ブートメニュー?
計算された各カーネルのサイズは、/boot/*kernel_version*
から取得されたもので、合計で最大50 MBの5つのファイルでした。数式は、/usr/src/*kernel_version*
および/lib/modules/*kernel_version*
のファイルを含めるように変更されました。各カーネルの計算サイズは約400 MBです。 rm-kernels
およびrm-kernels-server
の上記のコードが更新されました。ただし、上記のサンプル画面はまだこれらの変更を反映していません。
デフォルトでは、ファイルがキャッシュにない限りdu
は非常に遅くなる可能性があるため、linux-headersのファイルサイズは125 MB、linux-imageのサイズは220 MBと推定されます。 du
を使用して実際のサイズを取得するには、スクリプトにパラメーターを渡します。
すべてのカーネルサイズの合計(削除できない現在実行中のバージョンを除く)がタイトルバーに表示されるようになりました。
各カーネルの表示に使用されるダイアログボックス最終アクセス日。この日付は、バックアップまたは同様の操作中にすべてのカーネルで大量に上書きされる可能性があります。ダイアログボックスには、代わりにModified Dateが表示されます。
シナプスパッケージマネージャーを介してカーネルを簡単に処理できます。ただし、最初に、ターミナルプロンプトで現在使用されているカーネルリリース名を知っておく必要があります。
linux@linux-desktop:~$ uname -r 4.4.0-75-generic
ですから、少なくともこのバージョンは変更しないでください。以下に示すように、シナプスを開き、クイックフィルタープレースホルダーに入力を開始します。 これで、削除するすべてのパッケージを選択して、次の操作を実行できます。完全に削除するためにマーク-> Apply。少なくとも最新の現在のカーネルパッケージと1つの前のカーネルを保持することをお勧めします。たとえば、この場合、linux-image-4.4.0-66-genericおよびを安全に取り除くことができますlinux-image-extra-4.4.0-66-generic、しかし保持するのが良い4.4.0-72およびもちろん4.4.0-75。
コマンドラインを簡単にするため:
https://github.com/erichs/bootnukem
git clone https://github.com/erichs/bootnukem.git
cd bootnukem
Sudo ./install.sh
それから
Sudo bootnukem --dry-run
Linux Mint 18.3(Ubuntu 16.04ベース)で動作します。
Sudo apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1) --assume-yes
ソース: https://ubuntuforums.org/showthread.php?t=2248846&p=13146650#post1314665