我想升级Linux内核从3.16
到4.3
。不幸的是,当我运行时,aptitude install linux-image-4.3.0-1-amd64
由于rootfs
分区上没有空间,安装失败。117MB左边,174MB需要。
我没有要删除的旧内核以释放更多磁盘空间(除了我现在正在使用的内核):
root@host:/# aptitude search linux-image | grep ^i
ip linux-image-3.16.0-4-amd64 - Linux 3.16 for 64-bit PCs
我尝试过了释放空间使用aptitude clean
, apt-get autoremove
,但它没有帮助,因为它/var
是一个单独的分区。 AFAIK 这些命令会删除/var/cache/apt/archives
目录的内容,因此它无济于事。
我考虑暂时mount --bind / /home/rootfs
(按照建议这里),但rootfs
可能无法安全地重新安装。
我的文件系统磁盘空间使用情况:
root@host:/# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda6 454M 310M 117M 73% /
udev 10M 0 10M 0% /dev
tmpfs 1,6G 19M 1,6G 2% /run
/dev/sda7 23G 13G 8,8G 59% /usr
tmpfs 3,9G 52M 3,9G 2% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup
/dev/sda4 250G 187G 64G 75% /media/Windows/C
/dev/sda5 500G 428G 73G 86% /media/Windows/D
/dev/sda2 96M 25M 72M 26% /boot/efi
/dev/sda8 7,3G 966M 5,9G 14% /var
/dev/sda9 14G 37M 13G 1% /tmp
/dev/sda11 126G 95G 25G 80% /home
tmpfs 797M 20K 797M 1% /run/user/112
tmpfs 797M 24K 797M 1% /run/user/1000
du -mx / | sort -n
结果:关联。
操作系统版本:
root@host:/# cat /etc/debian_version
stretch/sid
/boot
内容:
root@host:/# du -sh /boot/*
156K /boot/config-3.16.0-4-amd64
25M /boot/efi
8,8M /boot/grub
16M /boot/initrd.img-3.16.0-4-amd64
16M /boot/initrd.img-3.16.0-4-amd64.old-dkms
2,6M /boot/System.map-3.16.0-4-amd64
3,0M /boot/vmlinuz-3.16.0-4-amd64
- 是否有任何聪明且安全的方法来释放
rootfs
分区或暂时将当前内核移动到另一个分区? rootfs
将某些内容移动到另一个分区并创建指向它们的符号链接是否安全?
答案1
对于现代 amd64 系统上的 root+boot 分区来说,450MB 并不算多。如果您想安装多个内核,则必须重新组织分区。即使你不这样做,它也很紧。
鉴于您现在拥有的分区,我建议将根分区移动到现在的位置/var
。由于您要移动根分区,请从应急媒体启动(例如系统救援光盘)。安装/dev/sda6
和/dev/sda8
,说/media/sda6
和/media/sda8
。然后:
- 创建
/var
目录:mkdir /media/sda8/var
- 将旧
/var
分区中的所有内容移动到这个新的子目录:(mv /media/sda8/* /media/sda8/var
本身/var
将被跳过) - 将除旧 root 分区之外的所有内容移动
/boot
到旧 var 分区:mv /media/sda6/[^bv]* /media/sda6/bin /media/sda8/
- 旧的根分区上应该只有
/boot
一个空分区。/var
将所有内容移至/boot
分区的根目录:mv /media/sda6/boot/* /media/sda6
- 删除虚假目录:
rmdir /media/sda6/boot /media/sda6/var
并创建现在需要的目录:mkdir /media/sda8/boot
- 编辑该
fstab
文件(现在位于/media/sda8/etc/fstab
),删除 的条目/var
,添加 的条目,并根据需要/boot
更正 的条目。/
更新引导加载程序配置。正确的简单方法是运行
update-grub
脚本(重新生成grub.cfg
)和grub-install
(重新生成第一阶段引导加载程序,以便它知道在哪里可以找到其余部分,包括grub.cfg
)。但要做到这一点,您需要向其提供正确的目录树。mount --rbind /dev /media/sda8/dev mount --rbind /proc /media/sda8/proc mount --rbind /sys /media/sda8/sys mount --bind /media/sda6 /media/sda8/boot chroot /media/sda8 mount /usr update-grub grub-install /dev/sda
现在重新启动。
或者,您可以/boot
移至/var
;但这是一种不太常见的配置,因此您可能需要调整一些引导加载程序配置文件。
如今,分离/usr
已经/
毫无意义。分离/var
从来/
没有真正有用过(在大多数设置中它们都需要以读写方式安装)。
以后我推荐对Linux分区使用LVM。它更加灵活。