如何从 Ubuntu 系统的 /boot 分区安全地删除旧内核版本?

如何从 Ubuntu 系统的 /boot 分区安全地删除旧内核版本?

我不太喜欢Linux我有以下问题与我的事实有关/启动分区似乎已满,并且似乎导致尝试安装程序时出现问题。

我在用Ubuntu Ubuntu 16.04.1 LTS

我尝试详细解释我的疑虑,因为我不太热衷于系统工程(我是一名软件开发人员)。

1) 执行LSBLK语句列出有关所有可用或指定块设备的信息。

根据经验,我认为它应该显示所有的列表分区/挂载磁盘或类似的东西。这些术语的确切含义是什么块设备

所以如果我在我的乌班图系统我得到:

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

那么有什么区别磁盘,部分(应该是父盘的一个分区),左室厚度只读存储器

具体的分区是启动, 这个:

sda1           8:1    0  476M  0 part /boot

这是一个sda磁盘分区。

据我所知它应该包含Linux 内核下载版本。是吗?

好的,挂载点是/启动所以我认为这是/启动进入我的系统目录(是吗?),内容如下:

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

那么这些内容到底代表什么呢?该系统上是否下载了不同的 Linux 内核版本?

两者有什么区别阿比-,配置-,initrd.img-,系统.map-vmlinuz-4文件?

如何检测使用的内核版本?

2) 执行df-h语句我得到这个输出:

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

特别是我有:

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

所以这意味着我的/启动分区完全满了?

我的问题是:我可以安全地删除所有旧的内核版本(未使用的版本)以释放空间/启动

我该怎么做?

答案1

这些问题合而为一:

这些术语的确切含义是什么块设备

块设备是特殊文件,提供对硬件设备的缓冲访问和操作系统的抽象层。

那么有什么区别磁盘,部分(应该是父盘的一个分区),左室厚度只读存储器

磁盘部分正如您所猜测的,是您的物理磁盘或驱动器及其上的分区。 左室厚度是缩写逻辑卷管理器。它将多个分区分组到一个逻辑卷中,以更好地管理磁盘空间。 只读存储器您的 CD-ROM 或 DVD-ROM 驱动器是否名为“sr0”。

如何检测使用的内核版本?

您可以通过在终端中输入以下命令来检测当前正在使用的内核:

uname -a

那么这意味着我的 /boot 分区已完全满了?

事实上,你的启动分区已经完全满了,这将阻止 ubuntu 安装新版本的内核。

我的问题是:我可以安全地删除所有旧内核版本(未使用的版本)以释放 /boot 中的空间吗?

您可以尝试从系统中删除旧的软件包,这应该会从引导分区中释放旧的内核。在终端中输入此命令,提供管理员密码,然后回答“y”以删除旧软件包:

sudo apt autoremove

这将安全地删除旧的内核版本并更新您的启动选项和 initram-fs。

答案2

如果 apt 不起作用尝试,dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo dpkg -P

除了当前正在运行的内核之外,这还会清除每个带有标头的内核。如果您不确定您可以先查看dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'哪些软件包将被清除

答案3

我确定 Ubuntu 方式是使用 GUI 包管理器,但我只是在命令行上执行。

首先,准确找出安装的软件包名称 -

dpkg -l | grep linux-image

找出实际运行的内核

uname -a

然后使用

sudo apt-get autoremove PackageName

其中 PackageName 是您要删除的内核映像包的名称 - 它可能类似于 linux-image-4.4.0-21-generic。这将删除内核映像(您的 /boot 目录文件)、/lib/modules/kernel_version 目录结构、内核头包等。根据需要重新配置 grub 等。

相关内容