alann 发表于 2022-1-27 22:39

linux低手求救!

今天升级archlinux提示boot分区不够了,我查了一下发现个怪事:
我划了512mb分区专门给boot,用lsblk命令能查到该分区,大小512mb;
但该分区挂载到/boot时,/boot目录只有100mb大小,这就是空间不够的原因!
用gparted也能显示有412mb未分配。但我用mount命令挂载这个分区到boot时boot目录就死活只能有100mb大,那剩下的400多mb就是不能给到boot目录。
请问我该怎么办?

nessaj 发表于 2022-1-27 22:49

manysun 发表于 2022-1-27 23:08

gparted显示未分配,应该是说boot的文件系统比分区小吧。分区有512mb,但是文件系统只有100mb。你试试扩容一下文件系统

citrus 发表于 2022-1-27 23:11

应该是分区分了512M,但文件系统只占据了100M吧

假设你/boot用的是ext3/4文件系统,那么用arch安装盘启动,用resize2fs命令修复一下就行了,具体怎么用可以man一下,应该是resize2fs /dev/sda2这样就行(当然要把/dev/sda2换成你的/boot对应的物理分区)

但是,一个内核可能就有一两百兆,boot分配512M太小了,建议如果有可能,扩到1-1.5G

alann 发表于 2022-1-27 23:15

我给boot分区用的是fat32格式,应该用什么命令?

5long 发表于 2022-1-27 23:22

说一个感觉可能性不大的情况:
有进程在向 /boot 下写入长期打开着的文件
然后这个文件被删了,但前面说的进程还在,那么这个打开着的文件所占的空间也就没法释放
可以用 lsof | grep -w deleted 看下有没有这类文件

这个情况多见于没能正确 rotate 的日志文件,但是在 /boot 下应该没有这么干的(吧

alann 发表于 2022-1-27 23:45

我打算把原来boot里面的东西拷出来,再把分区从fat32格式化成ext4,再把东西拷进去,这样可以吗,能安全启动吗?需要注意什么?

5long 发表于 2022-1-27 23:59

alann 发表于 2022-1-27 23:45
我打算把原来boot里面的东西拷出来,再把分区从fat32格式化成ext4,再把东西拷进去,这样可以吗,能安全启 ...

按照标准,ESP 的格式必须是 FAT
https://wiki.archlinux.org/title/EFI_system_partition#Format_the_partition
如果你真的要重建分区
那重建后确认文件系统的大小是 512MB 就行了,没必要再转换格式

alann 发表于 2022-1-28 00:06

我现在把boot分区格式化了,然后mount成boot,空间终于512mb了,但现在这个分区是空的,怎么重建boot啊

citrus 发表于 2022-1-28 00:07

alann 发表于 2022-1-27 23:15
我给boot分区用的是fat32格式,应该用什么命令?

FAT32那可能是你这只是个EFI启动器分区,不是传统意义上的/boot吧

把所有文件备份下来,重新用fat32格式化该分区,然后再把文件拷回去应该就行了。千万不要重格成ext4,否则可能BIOS识别不了,无法启动

如果任何操作导致不能启动,用安装盘启动,挂载相应分区,arch-chroot进去,把安装过程中initramfs和boot loader的部分重复一遍,应该就能修复启动了

alann 发表于 2022-1-28 00:10

citrus 发表于 2022-1-28 00:07
FAT32那可能是你这只是个EFI启动器分区,不是传统意义上的/boot吧

把所有文件备份下来,重新用fat32格式 ...

我拷文件都是图形化操作的,现在拷出来的文件拖不回去boot了,是不是因为boot是只读的?应该用什么命令把目录a里面的文件拷回boot?

alann 发表于 2022-1-28 00:26

拷完了,然后重启失败,看来不是简单的把boot里面的文件拷回去那么简单,因为格式化过,所以里面配置也变了,正在想办法恢复中

d2loader 发表于 2022-1-28 00:31

从来不用单独建boot的啊

plumlis 发表于 2022-1-28 00:42

从来不用单独建立boot的,因为你不知道哪天升级内核,这个分区就炸了

五月病少女 发表于 2022-1-28 02:52

plumlis 发表于 2022-1-28 00:42
从来不用单独建立boot的,因为你不知道哪天升级内核,这个分区就炸了

我记得boot得用fat分区,被迫分区

—— 来自 HUAWEI WLZ-AL10, Android 10上的 S1Next-鹅版 v2.5.2

calmer 发表于 2022-1-28 05:15

重建boot你拿启动盘chroot过去,重新安装linux grub这些包,然后生成一下grub配置感觉应该差不多了

—— 来自 HUAWEI NOP-AN00, Android 10上的 S1Next-鹅版 v2.5.2

nessaj 发表于 2022-1-28 07:20

Midnight.Coup 发表于 2022-1-28 09:00

本帖最后由 Midnight.Coup 于 2022-1-28 13:12 编辑

原来/boot只有100MB可能是fstab或者gpt分区表里写错了

拖boot分区的文件用图形化?这个Arch是楼主从头开始配置的还是一键脚本还是manjaro,用mv/cp命令就可以移动/拷贝文件
/boot分区按理论上来讲只要把之前的文件都复制回去就能用了(rEFInd和systemd-boot的配置文件都在efi里比较简单,而且根目录盘的uuid没变,配置文件都不用重新写)
在Arch ISO里先挂载后安装“linux”再重新执行一下grub的安装命令和配置命令应该就可以了

alann 发表于 2022-1-28 09:00

本帖最后由 alann 于 2022-1-28 09:01 编辑

昨天搞到凌晨也没解决。一开始是grub参数里面的boot分区uuid不对,我改了,但进去以后就一直提示权限不足,不能进控制台,也不给我输密码的机会,就一直死在那。
另外昨天有个小插曲,不知道是不是我火上浇油了。就是我把boot里备份的文件拷回boot文件夹的时候不小心把/boot输成了/root,拷到/root文件夹了,然后我就对照/boot里的内容,把/root里面相应的文件和文件夹都删了。不知道这有什么影响?在/root里面删除的文件大概是vmlinuz-linux、initramfs-linux.img,还有efi、grub两个文件夹。想请问arch用户,你们/root里面本来有这些文件或文件夹吗,是不是我删坏事了。
另外我在网上搜/root这个文件夹时,搜到的信息有时说/root是linux根目录,有时又说根目录是外面的/,那么/root和/到底谁才是根目录,它们是什么关系?以我这个win用户思维难以理解啊。

nessaj 发表于 2022-1-28 09:10

liwangli1983 发表于 2022-1-28 09:31

/boot是系统分区,本身应该是ext2/3/4,放kernel, initramfs和grub的一些文件的,如果是efi的bl,那efi分区(fat32)应该挂载在/boot/efi下,里面放efi格式的启动文件

radar 发表于 2022-1-28 09:37

楼主似乎在用win的思路在处理问题

nessaj 发表于 2022-1-28 09:48

RaidenII 发表于 2022-1-28 09:55

uefi的/boot是需要单独分区并且用fat32做文件系统的,不然不保证在任何机器上都能启动
lz开始的问题估计就是分区分了512但是文件系统没有扩展到分区大小,得用fatresize扩张,或者做个gparted livecd启动之后扩张
/root是root用户的家文件夹,里面东西删了正常情况下不影响启动,不过存的root的用户数据是没了
现在这情况,用arch的cd启动,cfdisk重建boot分区(设好efi system flag),mount硬盘的根文件系统到/mnt,boot分区到/mnt/boot,然后arch-chroot,重新装linux内核,然后配置systemd-boot应该就可以了

Magnesium 发表于 2022-1-28 10:34

其实只有 Arch Linux 一个系统的话,100MB 是足足够的…和 Windows 双系统也没问题,甚至能再塞几个内核。

一个内核一两百兆不知道是啥时候的老黄历了,Arch Linux 内核非必要的功能都用模块分出去了,还做了 zstd 压缩,现在也就是 10-30 MB 大。

lz 的问题是知道自己是低手还自作主张,谭友们让你 lsblk、lsof 贴出来看看,你一句也没听,全程直播自己的下饭操作。正确的做法是多提供一些信息,包括自己的分区结构、是否有双系统等等,让大家帮你定位问题了对症下药。

Arch Linux 问题建议去这里求助:https://t.me/archlinuxcn_group

KDN_Observer 发表于 2022-1-28 10:39

。。。所以为什么要装arch,不想用windows的话装个ubuntu系比arch省心多了

d2loader 发表于 2022-1-28 11:15

楼主,真心劝你不要单独分区boot

完全没必要,我日常arch3年了

—— 来自 Xiaomi Mi 10, Android 11上的 S1Next-鹅版 v2.4.3

liwangli1983 发表于 2022-1-28 11:44

nessaj 发表于 2022-1-28 09:48
/boot可以挂efi分区,arch支持efistub内核的启动
https://wiki.archlinux.org/title/EFI_system_partitio ...

啊,确实我自己自从进入uefi+gpt时代后,/boot就不单独分了

早期mbr时代,会单独分一个/boot,用ext2格式,那时grub能力有限

plume 发表于 2022-1-28 11:47

不是经验不足的应该用redhat跟debian系吗,上来就折腾arch

—— 来自 Xiaomi MI 8 SE, Android 10上的 S1Next-鹅版 v2.5.2

RaidenII 发表于 2022-1-28 12:02

liwangli1983 发表于 2022-1-27 22:44
啊,确实我自己自从进入uefi+gpt时代后,/boot就不单独分了

早期mbr时代,会单独分一个/boot,用ext2格 ...

没有单独的esp的话你uefi启动难道是直接读ext4的?

liwangli1983 发表于 2022-1-28 12:29

RaidenII 发表于 2022-1-28 12:02
没有单独的esp的话你uefi启动难道是直接读ext4的?

有单独的esp,一般挂到/boot/efi下面

—— 来自 samsung SM-G9910, Android 12上的 S1Next-鹅版 v2.5.2-play

macos 发表于 2022-1-28 12:33

RaidenII 发表于 2022-1-28 12:02
没有单独的esp的话你uefi启动难道是直接读ext4的?

esp其实没必要挂载吧,存在就行,他的内容和传统的boot内容也不重合

nessaj 发表于 2022-1-28 12:34

macos 发表于 2022-1-28 12:42

nessaj 发表于 2022-1-28 12:34
那当然是必须挂载的....

esp中文件其实对启动后的系统并没太大用处,没必要挂出来访问

nessaj 发表于 2022-1-28 12:53

macos 发表于 2022-1-28 12:57

本帖最后由 macos 于 2022-1-28 13:01 编辑

nessaj 发表于 2022-1-28 12:53
esp里有啥是根据你选的bootloader来定的
譬如现在你完全可以把initial ramdisk塞在esp里直接efistub内核启 ...

当然可以往esp塞各种文件,但对主板来说,里面有对应路径的efi就行,连配置引导顺序都可以用额外工具搞定,不是必须的,对系统来说efi没有需要,不用访问

nessaj 发表于 2022-1-28 13:06

Litccc 发表于 2022-1-28 13:08

双硬盘装双系统是最稳的,用哪个就启动哪个,互不干涉

liwangli1983 发表于 2022-1-28 13:18

macos 发表于 2022-1-28 12:33
esp其实没必要挂载吧,存在就行,他的内容和传统的boot内容也不重合

确实可以不用挂,除非要升级grub

d2loader 发表于 2022-1-28 13:18

RaidenII 发表于 2022-1-28 12:02
没有单独的esp的话你uefi启动难道是直接读ext4的?

问题是大部分人都是双系统

win10安装的时候自己会建立一个500MB的esp



—— 来自 Xiaomi Mi 10, Android 11上的 S1Next-鹅版 v2.4.3
页: [1] 2
查看完整版本: linux低手求救!