/boot 分区满导致 apt-get upgrade出错,依赖关系出问题的解决方案
1.查看当前使用内核版本
uname -a
root@ubuntu:~$ uname -a
Linux server117 3.16.0-38-generic #52~14.04.1-Ubuntu SMP Fri
May 8 09:43:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
当前内核版本 3.16.0-38-generic
2.手动删除旧的内核
root@ubuntu:/boot$ cd /boot
root@ubuntu:/boot$ ls
abi-3.16.0-30-generic config-3.16.0-31-generic initrd.img-3.16.0-31-generic
memtest86+_multiboot.bin vmlinuz-3.16.0-30-generic
abi-3.16.0-31-generic config-3.16.0-33-generic initrd.img-3.16.0-33-generic
System.map-3.16.0-30-generic
vmlinuz-3.16.0-31-generic
abi-3.16.0-33-generic config-3.16.0-34-generic initrd.img-3.16.0-34-generic
System.map-3.16.0-31-generic
vmlinuz-3.16.0-33-generic
abi-3.16.0-34-generic config-3.16.0-36-generic initrd.img-3.16.0-36-generic
System.map-3.16.0-33-generic
vmlinuz-3.16.0-34-generic
abi-3.16.0-36-generic config-3.16.0-37-generic initrd.img-3.16.0-37-generic
System.map-3.16.0-34-generic
vmlinuz-3.16.0-36-generic
abi-3.16.0-37-generic config-3.16.0-38-generic initrd.img-3.16.0-38-generic
System.map-3.16.0-36-generic
vmlinuz-3.16.0-37-generic
abi-3.16.0-38-generic config-3.16.0-41-generic lost+found System.map-3.16.0-37-generic
vmlinuz-3.16.0-38-generic
abi-3.16.0-41-generic grub memtest86+.bin System.map-3.16.0-38-generic
vmlinuz-3.16.0-41-generic
config-3.16.0-30-generic
initrd.img-3.16.0-30-generic
memtest86+.elf System.map-3.16.0-41-generic
可以看出有很多旧的内核。
以删除3.16.0-30-generic的为例:
列出:
root@ubuntu:/boot$ ll *3.16.0-30-generic
-rw-r--r-- 1 root root 1207386 Jan 16
2015 abi-3.16.0-30-generic
-rw-r--r-- 1 root root 171768 Jan 16
2015 config-3.16.0-30-generic
-rw-r--r-- 1 root root 20380509 Mar 7 19:35
initrd.img-3.16.0-30-generic
-rw------- 1 root root 3511040 Jan 16
2015 System.map-3.16.0-30-generic
-rw------- 1 root root 6345104 Jan 16
2015 vmlinuz-3.16.0-30-generic
删除/boot下的内核文件:
root@ubuntu:/boot$ sudo rm -rf *3.16.0-30-generic
删除/lib/modules下的内核文件:
root@ubuntu:/boot$ cd /lib/modules
root@ubuntu:/lib/modules$ ls
3.16.0-30-generic 3.16.0-33-generic
3.16.0-36-generic
3.16.0-38-generic
3.16.0-43-generic
3.16.0-31-generic 3.16.0-34-generic
3.16.0-37-generic
3.16.0-41-generic
3.16.0-45-generic
root@ubuntu:/lib/modules$ sudo rm -rf 3.16.0-30-generic
修改/boot/grub/grub.cfg文件,删除其中相应的项目:
修改文件权限:
root@ubuntu:~$ cd /boot/grub
root@ubuntu:/boot/grub$ sudo chmod 777
grub.cfg
root@ubuntu:/boot/grub$ cp grub.cfg ~/grub.cfg.bak #备份文件
root@ubuntu:/boot/grub$ vi grub.cfg
删除以menuentry开头的, 以‘Ubuntu, with Linux
3.16.0-30-generic’为关键字的段落,一共 两个,注意相对的{} , 不要误删。
内核删除完毕
reboot
重启之后的效果
root@ubuntu:~$ uname -a
Linux server117 3.16.0-38-generic #52~14.04.1-Ubuntu SMP Fri
May 8 09:43:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
root@ubuntu:~$ df -h
Filesystem Size
Used Avail Use% Mounted on
/dev/mapper/server117--vg-root 5.6G
4.1G 1.3G 78%
/
none 4.0K 0 4.0K 0%
/sys/fs/cgroup
udev 2.0G 4.0K
2.0G 1% /dev
tmpfs 396M 680K
395M 1% /run
none 5.0M 0 5.0M 0%
/run/lock
none 2.0G 0 2.0G 0%
/run/shm
none 100M 0 100M 0%
/run/user
/dev/sda1 236M
200M 24M 90%
/boot
内核依然是 3.16.0-38-generic
/boot 分区已经下降了10%
重复删除旧版本内核。
命令总结:
sudo rm -rf /boot/*3.16.0-33-generic
sudo rm -rf /lib/modules/3.16.0-33-generic
vi /boot/grub/grub.cfg
然后这样内核删除的差不多了
Last login: Wed Aug 19 17:55:08 2015
root@ubuntu:~$ df -h
Filesystem Size
Used Avail Use% Mounted on
/dev/mapper/server117--vg-root 5.6G
3.7G 1.6G 70%
/
none 4.0K 0 4.0K 0%
/sys/fs/cgroup
udev 2.0G 4.0K
2.0G 1% /dev
tmpfs 396M 680K
395M 1% /run
none 5.0M 0 5.0M 0%
/run/lock
none 2.0G 0 2.0G 0%
/run/shm
none 100M 0 100M 0%
/run/user
/dev/sda1 236M
139M 85M 63%
/boot
我们开始装新的内核,并解决依赖关系:
root@ubuntu:~$ sudo apt-get -f install
[sudo] password for web2admin:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no
longer required:
linux-headers-3.16.0-30
linux-headers-3.16.0-30-generic
linux-headers-3.16.0-31
linux-headers-3.16.0-31-generic
linux-headers-3.16.0-33
linux-headers-3.16.0-33-generic
linux-headers-3.16.0-34
linux-headers-3.16.0-34-generic
linux-headers-3.16.0-36
linux-headers-3.16.0-36-generic
linux-headers-3.16.0-37
linux-headers-3.16.0-37-generic
linux-headers-3.16.0-43
linux-headers-3.16.0-43-generic
linux-image-3.16.0-30-generic
linux-image-3.16.0-31-generic
linux-image-3.16.0-33-generic
linux-image-3.16.0-34-gener
。。。
Found initrd image: /boot/initrd.img-3.16.0-41-generic
Found linux image: /boot/vmlinuz-3.16.0-38-generic
Found initrd image: /boot/initrd.img-3.16.0-38-generic
Found linux image: /boot/vmlinuz-3.16.0-37-generic
Found initrd image: /boot/initrd.img-3.16.0-37-generic
Found linux image: /boot/vmlinuz-3.16.0-36-generic
Found initrd image: /boot/initrd.img-3.16.0-36-generic
Found linux image: /boot/vmlinuz-3.16.0-34-generic
Found initrd image: /boot/initrd.img-3.16.0-34-generic
Found memtest86+ image: /memtest86+.elf
Found memtest86+ image: /memtest86+.bin
done
Setting up linux-image-3.16.0-43-generic
(3.16.0-43.58~14.04.1) ...
Running depmod.
让他自动清理一下无用的内核文件.
sudo apt-get autoremove
Removing linux-image-3.16.0-41-generic (3.16.0-41.55~14.04.1)
...
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools
3.16.0-41-generic /boot/vmlinuz-3.16.0-41-generic
update-initramfs: Deleting
/boot/initrd.img-3.16.0-41-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub
3.16.0-41-generic /boot/vmlinuz-3.16.0-41-generic
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.16.0-45-generic
Found initrd image: /boot/initrd.img-3.16.0-45-generic
Found linux image: /boot/vmlinuz-3.16.0-43-generic
Found initrd image: /boot/initrd.img-3.16.0-43-generic
Found memtest86+ image: /memtest86+.elf
Found memtest86+ image: /memtest86+.bin
done
sudo apt-get autoremove 结束显示,表示成功。