为什么我的硬盘安装在 /boot 上?

为什么我的硬盘安装在 /boot 上?

我正在进行更新,它说驱动器已满。

这是 df-h:

Filesystem            Size  Used Avail Use% Mounted on
                       78G  2.7G   72G   4% /
none                  242M  184K  242M   1% /dev
none                  247M     0  247M   0% /dev/shm
none                  247M   48K  247M   1% /var/run
none                  247M     0  247M   0% /var/lock
none                  247M     0  247M   0% /lib/init/rw
/dev/sda1             228M  225M     0 100% /boot

这是 fdisk -l:

Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00035711

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          32      249855   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              32        1045     8136705    5  Extended
/dev/sda3            1045       10444    75498496   83  Linux
/dev/sda5              32        1045     8136704   8e  Linux LVM

这里是安装:

/dev/mapper/sprintsftp-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
/dev/sda1 on /boot type ext2 (rw)

这是 /etc/fstab:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
/dev/mapper/machine-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=08ddfaa4-0da2-405e-95b2-b228a95dc761 /boot           ext2    defaults     $
/dev/mapper/machine-swap_1 none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0

我该如何修复 /dev/sda1 被挂载到 /boot 上?

答案1

正如我在评论中所说,也许你唯一的问题是/boot分区已满。由于你使用的是 LVM,所以你在 fstab、mount 等中发布的输出看起来不错。

释放空间的最佳方法/boot是删除旧内核版本。如果您是新手,我建议使用软件中心:

  • 搜索“linux-image”。记下最新的一个(您当前的内核),并删除所有以前的版本。只删除带有版本号的版本linux-image-3.2.0-xx-server,例如,不是删除“main”linux-image-serverlinux-image。请务必保留当前版本号。

  • 对“linux-headers”执行相同操作

您已一切就绪!

另外,附注...如果您仍然需要管理磁盘空间和内核版本的教程,您可以重新考虑管理 Ubuntu 服务器。您尝试过 Ubuntu 桌面吗?

答案2

看来您有两个问题。

  1. 您的 /boot 分区已满 - 如果您多次更新内核并且没有删除旧内核,就会发生这种情况。最好保留至少一个旧内核,以防您发现某些内核无法与更新的内核配合使用,但您不需要超过三个。您使用 GRUB 启动吗?您有多少个内核选项?

  2. 没有根(即顶部条目“/”)文件系统位置的条目。它显示您有一个 80GB 的分区,但没有显示挂载点。这是我的:

DF-H:

kevin@nx-6325:# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5              20G  9.6G  8.8G  53% /
none                  434M  280K  434M   1% /dev
none                  438M  252K  438M   1% /dev/shm
none                  438M  208K  438M   1% /var/run
none                  438M     0  438M   0% /var/lock
none                  438M     0  438M   0% /lib/init/rw
/dev/sda2             244M  197M   35M  86% /boot
kevin@nx-6325:#

如您所见,我的根文件系统安装在 /dev/sda5 上。另请注意,我的 /boot 已使用 197M - 这是 4 个内核,因为我懒得删除旧内核!

请发布输出

sudo fdisk -l

并且

mount

如果您需要帮助删除旧内核,请回复或谷歌搜索 - 这非常容易。

编辑:正如 MestreLion 所说,您唯一的问题似乎是 /boot 分区已满,导致您无法升级内核。要删除除最新两个之外的所有文件,我使用以下脚本。原始脚本在此处:http://ubuntuforums.org/showthread.php?t=1634760&page=2我所做的只是添加了几行代码,以便在启动之前告知您哪些内容将保留以及哪些内容将删除(并且您也可以选择中止)。我刚刚运行了它,删除了五个内核中最老的三个,运行正常。

复制以下所有文本并将其保存在您的主目录中作为 purge-kernel.sh:

#!/bin/bash
# Get a list of the kernels that are installed.
kernelList=$(cd /;ls boot/vmlinuz*)
# Make a list of the kernels to keep. These are the kernels linked to by /vmlinuz,
# /vmlinuz.old, and the currently running kernel.
keepList="$(readlink -q /vmlinuz) $(readlink -q /vmlinuz.old) boot/vmlinuz-$(uname -r)"
# Change the list of file names to list of package names.
kernelPkg=$(sed 's@boot/vmlinuz-@linux-image-@g' <<<$kernelList)
keepPkg=$(sed 's@boot/vmlinuz-@linux-image-@g' <<<$keepList)
# Create a list of packages to purge. This is the list of installed kernels with the kernels
# to keep removed.
purgePkg=${kernelPkg}
for keep in $keepPkg
do
    eval purgePkg=\${purgePkg/$keep}
done
purgePkg=$(echo $purgePkg)  # Remove extra white space
echo -ne "\nWill keep the following kernels: $keepPkg\n\n"
echo -ne "Will remove the following kernels: $purgePkg\n\n"
read -p "Press enter to continue, <Ctrl>-C to abort..."
# If there are any kernels to remove then purge them and update grub;
if [ -n "${purgePkg}" ]
then
tmpfile=$(mktemp)
chmod +x $tmpfile
echo "dpkg --purge ${purgePkg};update-grub"
echo "dpkg --purge ${purgePkg};update-grub" > $tmpfile
sudo -s $tmpfile
sleep 1  # following 'rm' fails otherwise.
rm -f $tmpfile
else
echo "No kernels to purge."
fi
exit

通过运行使其可执行

chmod +x purge-kernel.sh

通过在你的主目录中打开一个终端来运行它:

./purge-kernel.sh

由于脚本需要 root 权限,因此系统将提示您输入密码。

相关内容