Summary: | sys-kernel/dracut-046-r1: initramfs is missing ld symlink | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Andrius Štikonas <andrius> |
Component: | Current packages | Assignee: | Patrick McLean <chutzpah> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | alexander, floppym, slyfox, toolchain |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | ARM64 | ||
OS: | Linux | ||
See Also: | https://github.com/dracutdevs/dracut/pull/471 | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: |
dracut_debug
simplify ldd parsing logic |
Description
Andrius Štikonas
2018-10-04 18:20:04 UTC
@toolchain: Which path is canonical for the runtime linker on arm64? As defined today gentoo installs things into /lib64 for 64-bit targets (multilib or not), defined by multilib_env(). Having said that gcc defaults to /lib on aarch64: gcc/config/aarch64/aarch64-linux.h #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1" Same for clang: lib/Driver/ToolChains/Linux.cpp case llvm::Triple::aarch64: LibDir = "lib"; Loader = "ld-linux-aarch64.so.1"; Thus I think having a /lib -> /lib64 symlink is the correct way to express it. (It's also what crossdev happens to generate for me) Andrius: Can you reproduce this problem with dracut-0.48? If that version works, we can just stabilize it. If that version is also broken, can you run a quick test and attach the output? mkdir /tmp/root /usr/lib/dracut/dracut-install -l -a -D /tmp/root --debug /lib/systemd/systemd Created attachment 549400 [details] dracut_debug 048 doesn't work. I already mentioned it in comment #0. We don't need to stabilize yet anyway, this is arm64. dracut-install: ldd: ' /lib/ld-linux-aarch64.so.1 => /lib64/ld-linux-aarch64.so.1 (0x0000007f96631000) dracut-install: ' dracut-install: dracut_install('/lib64/ld-linux-aarch64.so.1', '/lib64/ld-linux-aarch64.so.1') dracut-install: dracut_install('/lib64/ld-2.26.so', '/lib64/ld-2.26.so') dracut-install: dracut_install ret = 0 dracut-install: cp '/lib64/ld-2.26.so' '/tmp/root//lib64/ld-2.26.so' dracut-install: cp ret = 0 dracut-install: dracut_install ret = 0 dracut-install: ln -s '..//lib64/ld-2.26.so' '/tmp/root//lib64/ld-linux-aarch64.so.1' dracut-install: Lib install: '/lib64/ld-linux-aarch64.so.1' dracut-install: dracut_install('/lib64/ld-linux-aarch64.so', '/lib64/ld-linux-aarch64.so') dracut-install: dracut_install('//ld-linux-aarch64.so.1', '//ld-linux-aarch64.so.1') dracut-install: dracut_install('//ld-linux-aarch64.so', '//ld-linux-aarch64.so') amd64 for comparison. dracut-install: ldd: ' /lib64/ld-linux-x86-64.so.2 (0x00007f4d7955e000) dracut-install: ' dracut-install: dracut_install('/lib64/ld-linux-x86-64.so.2', '/lib64/ld-linux-x86-64.so.2') dracut-install: dracut_install('/lib64/ld-2.27.so', '/lib64/ld-2.27.so') dracut-install: dracut_install ret = 0 dracut-install: cp '/lib64/ld-2.27.so' '/var/tmp/dracut.7pwXAX/initramfs/lib64/ld-2.27.so' dracut-install: dracut_install ret = 0 dracut-install: ln -s 'ld-2.27.so' '/var/tmp/dracut.7pwXAX/initramfs/lib64/ld-linux-x86-64.so.2' dracut-install: Lib install: '/lib64/ld-linux-x86-64.so.2' dracut-install: dracut_install('/lib64/ld-linux-x86-64.so', '/lib64/ld-linux-x86-64.so') dracut-install: dracut_install('//ld-linux-x86-64.so.2', '//ld-linux-x86-64.so.2') dracut-install: dracut_install('//ld-linux-x86-64.so', '//ld-linux-x86-64.so') Created attachment 549402 [details, diff]
simplify ldd parsing logic
Please give this patch a try.
(In reply to Mike Gilbert from comment #7) > Created attachment 549402 [details, diff] [details, diff] > simplify ldd parsing logic > > Please give this patch a try. It worked for me! Great, I have opened a pull request upstream. (In reply to Sergei Trofimovich from comment #2) > Thus I think having a /lib -> /lib64 symlink is the correct way to express > it. > (It's also what crossdev happens to generate for me) I think it would really make more sense to put the library where gcc expects it. I don't think it needs to exist in /lib64 at all. The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6093c44b4abfabbdd98b92aaf0faaf10c0646acc commit 6093c44b4abfabbdd98b92aaf0faaf10c0646acc Author: Mike Gilbert <floppym@gentoo.org> AuthorDate: 2018-10-09 19:23:34 +0000 Commit: Mike Gilbert <floppym@gentoo.org> CommitDate: 2018-10-09 19:23:34 +0000 sys-kernel/dracut: simplify ldd parsing logic in dracut-install Closes: https://bugs.gentoo.org/667752 Package-Manager: Portage-2.3.50_p14, Repoman-2.3.11_p21 Signed-off-by: Mike Gilbert <floppym@gentoo.org> sys-kernel/dracut/dracut-048-r1.ebuild | 154 +++++++++++++++++++++ ...dracut-install-simplify-ldd-parsing-logic.patch | 41 ++++++ 2 files changed, 195 insertions(+) |