跳至正文
Wener Notes

MUSL FAQ

约 3 分钟阅读
标签:FAQ
symbol not founddesc
posix_fallocate6464位文件偏移版本的 posix_fallocate,musl 使用统一实现
fcntl6464位文件偏移版本的 fcntl,musl 使用统一实现
__sched_cpufreeglibc 内部函数,释放 CPU 集合内存
__getpagesizeglibc 内部函数,获取内存页大小
malloc_trimglibc 扩展,释放堆顶部未使用内存给系统
__cxa_thread_atexit_implC++ ABI 内部函数,线程退出时析构函数支持
__sched_cpuallocglibc 内部函数,分配 CPU 集合内存
dlvsymglibc 扩展,按版本查找动态库符号
  • libjvm.so

malloc

DNS

  • 目前已经支持 DNS over TCP,大部分 DNS 问题已经解决
  • musl libc 1.2.4 - tcp dns - 解决 udp dns 不能返回太多解析的问题

resolv 不支持 dns over tcp/edns, 因此一次 resolve 最多返回 一个包,512 bytes,有时候解析会因此出现问题。

bash
# 监控 DNS 请求
tcpdump -ni eth0 port 53

# 完整查询内容例如 |03|www|07|example|03|com
# 使用 match-set 禁用 AAAA
iptables -N AAAA
# iptables -I FORWARD 1 -p udp -s 192.168.0.0/16 --dport 53 -j AAAA
iptables -I OUTPUT 1 -p udp --dport 53 -j AAAA
# drop 会导致超时 - 最好是返回 NXDATA 或者 NXDOMAIN
iptables -A AAAA -m string --algo bm --from 40 --hex-string '|001c|' -j DROP

pthread_attr_setaffinity_np

pthread_rwlockattr_setkind_np

gcompat

  • 解决一部分兼容问题
bash
apk add gcompat
export LD_PRELOAD=/lib/libgcompat.so.0

symbols

bash
# 基础
apk add libstdc++ libgcc

posix_getdents: symbol not found

  • 可以通过 preload fix
bash
apk add gcompat

cat << EOF > posix_getdents_fix.c
#define _GNU_SOURCE
#include <dirent.h>
#include <sys/syscall.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>

ssize_t posix_getdents(int fd, void *buf, size_t count) {
	return syscall(SYS_getdents64, fd, buf, count);
}
EOF
gcc -shared -fPIC -O2 -o posix_getdents_fix.so posix_getdents_fix.c

# 增加 preload 来处理
LD_PRELOAD="/lib/libgcompat.so.0:/home/username/posix_getdents_fix.so" xyz

关联信息

反向链接、本文链接的其他页面和外部资料。

反向链接

  • musl
    笔记 · DNS 问题已经解决 · dns

    malloc 大场景性能弱 - 性能要求高的场景使用 jemalloc 或 mimaloc · 不支持 utmp/wtmp - last,who,users 命令部分功能不可用 · 安全考虑、隐私考虑 · 需要实现 suid/sgid 修改 记录

  • 为什么选择 Alpine Linux?
    故事 · 常见的 Musl 问题

    Small. Simple. Secure. · Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.

参考资料

GitHub11 条
其他外链18 条
最近更新commit 1378096编辑