七月#

vDSO#

领域

Linux

维基

📖 VDSO

vdso(7),即 virtual ELF dynamic shared object,是一个很小的动态链接库(Shared library),在用户进程启动时会被 linux kernel 自动映射到进程的地址空间里。

vDSO 被设计用来用来加速一些 频繁被调用不涉及数据安全问题 的系统调用,例如 gettimeofday(2)getpid(2) 等,随架构不同有所不同。用户基本上不需要知道 vDSO 的存在,这部分的细节被 glibc 隐藏了。

ldd(1) 可以看到每个程序都依赖了 linux-vdso.so.1,并且这个 so 并不存在于磁盘上:

$ ldd /bin/ls
        linux-vdso.so.1 (0x00007ffde9bae000)
        libcap.so.2 => /usr/lib/libcap.so.2 (0x00007fd45ef0c000)
        libc.so.6 => /usr/lib/libc.so.6 (0x00007fd45ed00000)
        /lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fd45ef6e000)

Linux vDSO 概述 讲解了快速系统调用的发展历程和 vDSO 的相关细节。

Linux 5.18+ 因声卡驱动问题无法休眠#

日期

2022-07-08

dmesg 输出:

[ 3940.276311] sof-audio-pci-intel-tgl 0000:00:1f.3: ------------[ DSP dump start ]------------
[ 3940.276317] sof-audio-pci-intel-tgl 0000:00:1f.3: Firmware boot failure due to timeout
[ 3940.276320] sof-audio-pci-intel-tgl 0000:00:1f.3: fw_state: SOF_FW_BOOT_IN_PROGRESS (2)
[ 3940.276471] sof-audio-pci-intel-tgl 0000:00:1f.3: invalid header size 0xffffffff. FW oops is bogus
[ 3940.276475] sof-audio-pci-intel-tgl 0000:00:1f.3: unexpected fault 0x00000000 trace 0x00000000
[ 3940.276478] sof-audio-pci-intel-tgl 0000:00:1f.3: ------------[ DSP dump end ]------------
[ 3940.276481] sof-audio-pci-intel-tgl 0000:00:1f.3: error: failed to boot DSP firmware after resume -5
[ 3940.276515] sof-audio-pci-intel-tgl 0000:00:1f.3: error: PM_GATE ipc error -19
[ 3940.276539] sof-audio-pci-intel-tgl 0000:00:1f.3: failed to set requested target DSP state 0 substate 1
[ 3940.276542] sof-audio-pci-intel-tgl 0000:00:1f.3: error: setting dsp state 0 substate 1
[ 3940.276544] sof-audio-pci-intel-tgl 0000:00:1f.3: error: failed to power down DSP during suspend -19
[ 3940.276546] sof-audio-pci-intel-tgl 0000:00:1f.3: PM: pci_pm_freeze(): snd_sof_suspend+0x0/0x20 [snd_sof] returns -19
[ 3940.276579] sof-audio-pci-intel-tgl 0000:00:1f.3: PM: dpm_run_callback(): pci_pm_freeze+0x0/0xc0 returns -19
[ 3940.276593] sof-audio-pci-intel-tgl 0000:00:1f.3: PM: failed to freeze async: error -19

根据 Arch Linux 论坛的讨论 ,新建 /etc/modprobe.d/sof.conf 文件,内容为

options snd_sof sof_debug=128

可以临时修复此问题。

中年人的第一台 NAS#

日期

2022-07-08

https://twitter.com/hywallove/status/1536054160994738176

万幸,我现在只油了三分之一。#

好同事 👤WangLeonard 把他退役的一台群晖 NAS 借我玩了两周,型号是 ds218+ ,双盘位,双核 2GHz,内存 6 GB。 虽然我没有很强的存储需求,可这是一台性能还不错的 x86 Linux 主机诶!而且 群晖的套件 用起来比 折腾树莓派 轻松多了。 遂以一个很优惠的价格淘了下来,感觉占人家便宜了 Q_Q。

装系统

将 NAS 插上网线连上路由器,接通电源,NAS 会自动通过 DHCP 获取 IP。

📦 synology-assistant 提供了一个 GUI 程序用来探测局域网中群晖 NAS 的地址 ,方便我们连上管理界面。Wayland 用户如果遇到发现程序 crash 了(qt.qpa.plugin: Could not find the Qt platform plugin "wayland" in "")可以试试 unset QT_QPA_PLATFORM 再执行程序。

组内网

tailscale 一步到位,基于 user-space 的 WireGuard 实现,操作简单,节点之间能直连。 单用户 20 台设备以下免费。

评论

如果你有任何意见,请在此评论。 如果你留下了电子邮箱,我可能会通过 回复你。