加载论坛时出错,请强制刷新页面重试。

Archlinux loong64 2022.09

xen0n

凌莞 通过 initrd=path 传入给内核的 initrd 路径不会被加载,只能通过 bootloader 把 initrd 喂给内核

systemd-boot 使用的加载方式是前者,而 grub 是后者。现在安装 grub 之后就可以正常启动了

https://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git/commit/?id=0f24d0a33c887fc61766e2ffa302b855c23cbc81


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

Yuno

一开始我也认为跟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

weilinfox

在 qemu 虚拟机安装完成后重启,引导直接进到 UEFI Shell 了。

这个问题的原因是使用虚拟机的话,efibootmgr 无法将启动项信息写到固件中去导致的,在物理机上没有问题。
另外,systemd-boot 时,会在已安装自己启动项的基础上,同时把 efi 文件复制到默认位置:/EFI/BOOT/BOOTLOONGARCH64.EFI,而 grub 不会多做这一步,所以之前使用 systemd boot的iso安装完可以正常启动,而 grub 安装完不能正常启动,自动进到 UEFI Shell了。

解决办法:

  1. 如果使用grub的话,安装完之后,把 .efi 文件复制一份到默认位置: <esp>/EFI/BOOT/BOOTLOONGARCH64.EFI
  2. 像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

REDEAST

直接 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

liangyongxiang

你这是什么机器?用的是最新固件吗?


yetist

liangyongxiang

对了,最新固件有个legacy 模式开关,打开可以跑旧世界,跑新世界6.0以上内核的话需要关闭,不知道你是不是这种情况。


梁息

yetist 如果使用grub的话,安装完之后,把 .efi 文件复制一份到默认位置: <esp>/EFI/BOOT/BOOTLOONGARCH64.EFI

--removable参数也可以吧


yetist

梁息

理论上可以的,我还没试过


gdzsyk

7A2000新固件有两个模式开关Mode Control Select 和IOMMU ,打开可以跑旧世界,不是都能启动


« 上一页 下一页 »

知识共享许可协议
本站文章除其作者特殊声明外,一律采用CC BY-NC-SA 4.0许可协议进行授权。
进行转载或二次创作时务必以相同协议进行共享,严禁用于商业用途