我正在进行更新,它说驱动器已满。
这是 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-server
或linux-image
。请务必保留当前版本号。对“linux-headers”执行相同操作
您已一切就绪!
另外,附注...如果您仍然需要管理磁盘空间和内核版本的教程,您可以重新考虑管理 Ubuntu 服务器。您尝试过 Ubuntu 桌面吗?
答案2
看来您有两个问题。
您的 /boot 分区已满 - 如果您多次更新内核并且没有删除旧内核,就会发生这种情况。最好保留至少一个旧内核,以防您发现某些内核无法与更新的内核配合使用,但您不需要超过三个。您使用 GRUB 启动吗?您有多少个内核选项?
没有根(即顶部条目“/”)文件系统位置的条目。它显示您有一个 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 权限,因此系统将提示您输入密码。