Kernel
rootfs 分區上沒有剩餘空間可用於升級核心
我想將Linux核心從. 不幸的是,由於分區上沒有空間,我執行安裝失敗。還剩117MB ,需要**174MB。
3.16``4.3``aptitude install linux-image-4.3.0-1-amd64``rootfs
我沒有舊核心要刪除以釋放更多磁碟空間(我現在正在使用的除外):
root@host:/# aptitude search linux-image | grep ^i ip linux-image-3.16.0-4-amd64 - Linux 3.16 for 64-bit PCs
我嘗試使用,來釋放空間,但它沒有幫助,因為它是一個單獨的分區。AFAIK 這些命令會刪除目錄的內容,因此無濟於事。
aptitude clean``apt-get autoremove``/var``/var/cache/apt/archives
我考慮過暫時
mount --bind / /home/rootfs
(如建議here),但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
內容移動到另一個分區並創建指向它們的符號連結是否安全?
450MB 對於現代 amd64 系統上的 root+boot 分區來說並不多。如果你想安裝多個核心,你將不得不重新組織你的分區。即使你不這樣做,它也很緊。
鑑於您現在擁有的分區,我建議將根分區移至 now
/var
。由於您要移動根分區,因此請從應急媒體(例如SystemRescueCD)啟動。安裝/dev/sda6
and/dev/sda8
,對/media/sda6
and說/media/sda8
。然後:
- 創建
/var
目錄:mkdir /media/sda8/var
- 將舊
/var
分區中的所有內容移動到這個新子目錄:(mv /media/sda8/* /media/sda8/var
將/var
跳過其本身)- 將除
/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。它更加靈活。