Closed WCIofQMandRA closed 2 years ago
有点好奇你的分区是什么情况?根分区是什么文件系统?因为我好像看到 ld
是会使用 /tmp
来存储临时文件的,不知道会不会与此有关。
可否贴一下 df -h
?
本轮实验不一定会继续进行 Raspberry Pi Linux kernel 的编译,不过我们确实会对相关情况进行注意的。
抱歉,没有及时跟进。
我昨日用当时遇到问题的设备编译了Linux 5.17.2,仍然有相同的问题。引起错误的命令是
ld -m elf_x86_64 -r -o vmlinux.o --whole-archive arch/x86/kernel/head_64.o arch/x86/kernel/head64.o arch/x86/kernel/ebda.o arch/x86/kernel/platform-quirks.o init/built-in.a usr/built-in.a arch/x86/built-in.a kernel/built-in.a certs/built-in.a mm/built-in.a fs/built-in.a ipc/built-in.a security/built-in.a crypto/built-in.a block/built-in.a lib/built-in.a arch/x86/lib/built-in.a lib/lib.a arch/x86/lib/lib.a drivers/built-in.a sound/built-in.a net/built-in.a virt/built-in.a arch/x86/pci/built-in.a arch/x86/power/built-in.a --no-whole-archive --start-group --end-group
进一步研究:把-o vmlinux.o
改成-o ~/vmlinux.o
、-o /media/zzc/SOFTWARE/vmlinux.o
或-o /media/zzc/PHOTO/vmlinux.o
都能正常链接。值得注意的是,后两个分区的文件系统也是NTFS,而且剩余空间更少。
部分分区信息:
$ df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda8 179555728 98706748 71685052 58% /
/dev/sda3 209698812 200231048 9467764 96% /media/zzc/PHOTO
/dev/sda5 209715196 159180932 50534264 76% /media/zzc/DATA
/dev/sda4 209715196 161974292 47740904 78% /media/zzc/SOFTWARE
$ df -i
文件系统 Inodes 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda8 11436032 1129212 10306820 10% /
/dev/sda3 9566068 60062 9506006 1% /media/zzc/PHOTO
/dev/sda5 50894712 242254 50652458 1% /media/zzc/DATA
/dev/sda4 49149928 306480 48843448 1% /media/zzc/SOFTWARE
注:
sda8的文件系统是ext4,sda3、sda4和sda5的文件系统是NTFS。
/tmp
目录和/home
目录都位于/dev/sda8
。
vmlinux.o
的大小是59278176字节,远小于四个列出的分区的剩余容量。
只有这个 ld 命令会触发 “空间不足” 信息吗?对 DATA 分区写入其他数据会不会造成这个错误呢?
我找到了一个页面,不知道有没有用。
我在今天尝试编译 Raspberry Pi 的 Linux 内核时发现了无法完成完成实验一的平台,助教可以考虑将它添加到 不同平台兼容性 中。
平台:Ubuntu 20.04.3+NTFS3G 实验:实验一 出错现象:
aarch64-linux-gnu-ld: 最后的链结失败: 设备上没有空间
原因分析:(暂不明确) 解决方案:一种可行的办法是把源代码放在ext4文件系统下,但这可以视为更换平台,所以暂时没有在原平台下的解决方案。编译的内核的版本:1.20220118 (未裁剪) 触发错误的命令和终端输出:
挂载选项:
/sbin/mount.ntfs /dev/sda5 /media/zzc/DATA -o rw,nodev,permissions,users,exec,suid
(这以为着完全与POSIX兼容,包括但不限于权限和文件名,比如,命令touch \\ && chmod 600 \\ && ls -l \\
的输出是-rw------- 1 zzc zzc 0 2月 26 16:23 '\'
) 分区的剩余空间:58.1GiB