Archlinux loong64 2022.09
xen0n
凌莞 通过 initrd=path 传入给内核的 initrd 路径不会被加载,只能通过 bootloader 把 initrd 喂给内核
systemd-boot 使用的加载方式是前者,而 grub 是后者。现在安装 grub 之后就可以正常启动了
REDEAST
(AT_FDCWD, "/home/arch/.local/share/TelegramDesktop/tdata/emoji/cache_24_0",
AT_STATX_SYNC_AS_STAT|AT_SYMLINK_NOFOLLOW|AT_NO_AUTOMOUNT, STATX_ALL, {stx_mask=STATX_ALL|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=4096, ...}) = 0
statx(AT_FDCWD, "/home/arch/.local/share/TelegramDesktop/tdata/emoji/cache_24_0", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT, STATX_ALL, {stx_mask=STATX_ALL|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=4096, ...}) = 0
+++ killed by SIGABRT (core dumped) +++
Aborted (core dumped)
tg编译过了,一运行就出错,求高手支招,谢谢!
Yuno
@yetist 使用makepkg编译软件时,会报如下错,会不会与glibc有关?
yetist
一开始我也认为跟glibc有关,今天研究之后,应该是跟makepkg在生成debug包时的处理方式有关,等pacman升级到 6.0.2 版本之后就没有这个输出了。
它们是这么来的:
gcc -g -o a a.c
readelf a --debug-dump 2>/dev/null | awk '/DW_AT_name +:/{name=$NF}/DW_AT_comp_dir +:/{{if (name == "<artificial>") next}{if (name !~ /^[<\/]/) {printf "%s/", $NF}}{print name}}'
debugedit --no-recompute-build-id --list-file /dev/stdout a |strings
目前使用的是 readelf 来查源文件,后面会用 debugedit 来查源文件,并处理好源文件不存在的情况。
现在这个输出不影响,它不应该去 cp 这3个文件的。
weilinfox
首次尝试了安装。在 qemu 虚拟机安装完成后重启,引导直接进到 UEFI Shell 了。但是手动运行 grubloongarch64.efi 又可以正常引导。不知道是不是安装过程中哪里姿势不对。
这是我的 grub-install 命令行: grub-install --target=loongarch64-efi --efi-directory=/boot --bootloader-id=archlinux
感谢 😃
REDEAST
weilinfox
直接试试
grub-install /dev/sda
Maria Bombardier
weilinfox 用旧版本ISO,你试的情况我也有,用旧版的就能正常进系统了
yetist
在 qemu 虚拟机安装完成后重启,引导直接进到 UEFI Shell 了。
这个问题的原因是使用虚拟机的话,efibootmgr 无法将启动项信息写到固件中去导致的,在物理机上没有问题。
另外,systemd-boot 时,会在已安装自己启动项的基础上,同时把 efi 文件复制到默认位置:/EFI/BOOT/BOOTLOONGARCH64.EFI
,而 grub 不会多做这一步,所以之前使用 systemd boot的iso安装完可以正常启动,而 grub 安装完不能正常启动,自动进到 UEFI Shell了。
解决办法:
- 如果使用grub的话,安装完之后,把 .efi 文件复制一份到默认位置:
<esp>/EFI/BOOT/BOOTLOONGARCH64.EFI
- 像x86那样,给la的虚拟机也加上可保存引导信息的flash参数,如:
-drive if=pflash,format=raw,unit=1,file=OVMF_VARS.fd
,x86的这个文件一般来自于/usr/share/edk2-ovmf/x64/OVMF_VARS.fd
,la上我不知道它在哪里。
weilinfox
另外又试图用 pacstrap 在 x86_64 做一个 chroot 环境,能正常进去但是遇到如图的报错。
OS: Arch Linux x86_64
Kernel: 5.15.78-1-lts
qemu-loongarch64 version 7.1.0
凌莞
weilinfox 另外又试图用 pacstrap 在 x86_64 做一个 chroot 环境,能正常进去但是遇到如图的报错。
看起来和这位是一个问题
shangyatsen
error: failed retrieving file 'fio-3.32-1-loong64.pkg.tar.zst' from mirrors.wsyu.edu.cn : SSL certificate problem: certificate has expired
镜像站证书过期了 😀
weilinfox
直接 grub-install /dev/xxx
似乎不行,因为我直接拿 efi 分区做了 /boot ?
试了试用 systemd-boot 套了个娃,让 systemd-boot 去引导 grub 的 efi ,又是可以的(systemd-boot 这个比较符合预期的样子)
$ cat /boot/loader/entries/grub.conf
title Archlinux
efi /EFI/archlinux/grubloongarch64.efi
淡炒番茄
他这个应该是efibootmgr没有把grub加到bios启动项里面。
杜比
sudo pacman -Syy
:: Synchronizing package databases...
testing.db failed to download
error: failed retrieving file 'testing.db' from mirrors.wsyu.edu.cn : SSL certificate problem: certificate has expired
error: failed retrieving file 'testing.db' from mirrors.wsyu.edu.cn : SSL certificate problem: certificate has expired
error: failed to synchronize all databases (download library error)
寻找繁星
weilinfox 我的grub-install也报这个错。不过你这个套娃方案我这里失败了,bios的boot manager里的linux boot manager(应该是systemd-boot对应的启动项)进去直接黑屏。
liangyongxiang
我使用有一定概率没法进入real rootf,硬件是7A2000
yetist
你这是什么机器?用的是最新固件吗?
yetist
对了,最新固件有个legacy 模式开关,打开可以跑旧世界,跑新世界6.0以上内核的话需要关闭,不知道你是不是这种情况。
梁息
yetist 如果使用grub的话,安装完之后,把 .efi 文件复制一份到默认位置: <esp>/EFI/BOOT/BOOTLOONGARCH64.EFI
用 --removable
参数也可以吧
yetist
理论上可以的,我还没试过
gdzsyk
7A2000新固件有两个模式开关Mode Control Select 和IOMMU ,打开可以跑旧世界,不是都能启动