2.6.13 / cannot set up LDT for thread-local storage
A message that is not in the archive (sent off-list or not yet received): [email protected]
A message that is not in the archive (sent off-list or not yet received): [email protected]
On 9/13/05, Blaisorblade <[email protected]> wrote:
(cut)
Quoted 4 lines
Quoted 2 lines
What should I try? Do I need a patch?
mv
/lib/tls/lib/tls.away, after loop-mounting the filesystem on the host , or booting with init=/bin/bash (not sure the second will work).
I did some tests. I just found out that
In Debian the best solution is to run:
# echo "LD_ASSUME_KERNEL=2.4.1" >> etc/environment
in the chroot.
(See http://people.redhat.com/drepper/assumekernel.html)
I found something in this thread:
http://lists.debian.org/debian-user/2005/01/msg04226.html
---------------------------------------
Quoted 5 lines · --- "Todd A. Jacobs
Quoted 1 line · On Fri, Jan 28, 2005 at 10:43:44PM -0500, [email protected] wrote:
Is the file
/etc/environment_documented_ *anywhere*???It's a highly non-standard, non-portable file that is source by PAM (and possibly other applications) on a Debian system.
That is as maybe, but /etc/environment is the only shell-agnostic file there is, and where it can be used, it certainly serves a good purpose.
---------------------------------------
I did 2 equivalent tests
1) patching init/main.c to add the variable to the environment
2) using a wrapper to /sbin/init
but it seems the environment is just discarded before running what is in inittab (I'm not sure, I should read the sources later).
sysvinit should have a way to add a variable to the environment. Can it be done in intitab?
With : cd /etc && grep "/etc/environment" * -RH 2>/dev/null
Among others, I found pam.d/login
# This module parses /etc/environment (the standard for setting
# environ vars) and also allows you to use an extended config
- Do they mean standard in Debian?
BTW,
- when is NPTL (not) supported in UML?
I'm sending for your consideration a small patch for the FAQ
(that may need some update. I'll do it as I learn more about
this issue).
Thanks,
Nelson.-
--
Homepage : http://geocities.com/arhuaco
The first principle is that you must not fool yourself and you are the easiest person to fool.
-- Richard Feynman.
538a539,589
Quoted 51 lines
<a name="kernel Panic, cannot set up thread-local storage"/><table width="100%" bgcolor="#e0e0e0">
<tr> <td> <b> <font color="black">kernel Panic, cannot set up thread-local storage</font> </b> </td> </tr> </table><blockquote>
Your UML kernel doesn't support Native Posix Thread Library and the binaries you're running are being dynamically linked to the NTPL libraries. <br><br>
You can boot moving the NTPL libraries away.
<ul>
<li> <font color="black"># mountroot_fsmnt-uml/ -o loop</font> <li> <font color="black"># mv mnt-uml/lib/tls mnt-uml/lib/tls.away</font> <li> <font color="black"># umount mnt-uml</font>
</ul>
If you're running Debian, you can get away with:
<pre><font color="black"># mount root_fs mnt-uml/ -o loop # echo "LD_ASSUME_KERNEL=2.4.1" >> /mnt-uml/etc/environment # umount mnt-uml/ </font></pre>It seems that using
/etc/environmentis Debian specific,
as <a href="http://lists.debian.org/debian-user/2005/01/msg04226.html">discussed here</a>.The LD_ASSUME_KERNEL=2.4.1 environment variable precludes the dynamic linker from using the NTPL libraries, as explained <a href="http://people.redhat.com/drepper/assumekernel.html">here</a>.
If you decide to move away
/lib/tls/and you're running Debian, you might prefer to use dpkg-divert.
<pre><font color="black"># export LD_ASSUME_KERNEL=2.4.1 # mount root_fs mnt-uml/ -o loop # chroot mnt-uml # mkdir /lib/tls.off # cd /lib/tls # pwd # for f in *; do dpkg-divert --divert --local --rename --divert /lib/tls.off/$f --add /lib/tls/$f; done # exit # umount mnt-uml </font></pre> </blockquote>
Quoted 3 lines · Nelson Castillo
On 9/13/05, Blaisorblade <[email protected]> wrote:
sysvinit should have a way to add a variable to the environment. Can it be done in intitab?
I just fixed the patch for the FAQ. It's much simpler (and correct, I hope) now.
-------------
I tried with the patched init/main.c and:
inittab:
1:2345:respawn:/usr/bin/env LD_ASSUME_KERNEL=2.4.1 /sbin/getty 38400 tty1
(w/o the LD_ASSUME_KERNEL=2.4.1 the entry in/etc/environment).
And it dies just after I log in, but I don't get a panic, just another password prompt. So I guess it's bash who is not taking the environment that /sbin/init sets...
And that's why things work when I set
the variable in "/etc/environment"
(and also send a modified environment to/sbin/init .... with LD_ASSUME_KERNEL=2.4.1.
You must do both, I said that setting/etc/environment was enough in my previous
email and I was quite wrong. Sorry).
Regards.
Signature · 5 lines
Homepage : http://geocities.com/arhuaco
The first principle is that you must not fool yourself
and you are the easiest person to fool.
-- Richard Feynman.538a539,574
Quoted 36 lines
<a name="kernel Panic, cannot set up thread-local storage"/><table width="100%" bgcolor="#e0e0e0">
<tr> <td> <b> <font color="black">kernel Panic, cannot set up thread-local storage</font> </b> </td> </tr> </table><blockquote>
Your UML kernel doesn't support Native Posix Thread Library and the binaries you're running are being dynamically linked to the NTPL libraries. <br><br>
You can boot moving the NTPL libraries away.
<ul>
<li> <font color="black"># mountroot_fsmnt-uml/ -o loop</font> <li> <font color="black"># mv mnt-uml/lib/tls mnt-uml/lib/tls.away</font> <li> <font color="black"># umount mnt-uml</font>
</ul>
If you're running Debian, you might prefer to use dpkg-divert. <pre><font color="black"># export LD_ASSUME_KERNEL=2.4.1 # mount root_fs mnt-uml/ -o loop # chroot mnt-uml # mkdir /lib/tls.off # cd /lib/tls # pwd # for f in *; do dpkg-divert --divert --local --rename --divert /lib/tls.off/$f --add /lib/tls/$f; done # exit # umount mnt-uml </font></pre> </blockquote>
Quoted 7 lines · Nelson Castillo
Quoted 3 lines · Nelson Castillo
On 9/13/05, Blaisorblade <[email protected]> wrote:
sysvinit should have a way to add a variable to the environment. Can it be done in intitab?I just fixed the patch for the FAQ. It's much simpler (and correct, I hope) now.
Hey, cool:
./linux rootfstype=hostfs rw init=/bin/sh LD_ASSUME_KERNEL=2.4.1
Just gave my a shell prompt in skas0 mode on ubuntu. Using unmodified 2.6.13.1 with the .config I posted earlier.
---
sh-3.00# mount -t proc /proc /proc
sh-3.00# cat /proc/cpuinfo
processor : 0vendor_id : User Mode Linux
model name : UML
mode : skas
host : Linux driftwood 2.6.10-5-386 #1 Tue Apr 5 12:12:40 UTC 2005
i686
bogomips : 1268.12
sh-3.00#
---
Coolness. :)
Rob
-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
Quoted 9 lines · Nelson Castillo
On 9/13/05, Blaisorblade <[email protected]> wrote:
(cut)That is as maybe, but
/etc/environmentis the only shell-agnostic file there is, and where it can be used, it certainly serves a good purpose.
---------------------------------------
Quoted 7 lines
I did 2 equivalent tests
1) patchinginit/main.cto add the variable to the environment
2) using a wrapper to/sbin/initsysvinit should have a way to add a variable to the environment. Can it be done in intitab?
It can be done via adding LD_ASSUME_KERNEL=2.4.1 to the kernel command line.
Quoted 1 line
- Do they mean standard in Debian?
No idea about that - but I've never seen this file, so I assume it's Debian specific.
Quoted 7 lines
BTW,
- when is NPTL (not) supported in UML?
I'm sending for your consideration a small patch for the FAQ
(that may need some update. I'll do it as I learn more about
this issue).
I've not yet read the patch, and likely I won't before you generate it with -u.
Sorry but I've not the time to learn that format (nor the will), especially since patches with -u provide more info both to "patch" and to patch readers.
Quoted 2 lines
Thanks,
Nelson.-
Signature · 23 lines
Inform me of my mistakes, so I can keep imitating Homer Simpson's "Doh!". Paolo Giarrusso, aka Blaisorblade (Skype ID "PaoloGiarrusso", ICQ 215621894) http://www.user-mode-linux.org/~blaisorblade ___________________________________ Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB http://mail.yahoo.it ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ User-mode-linux-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
Quoted 2 lines · Nelson Castillo
1) patching
init/main.cto add the variable to the environment
2) using a wrapper to/sbin/init
Better to just add the variable to the kernel command line.. any XX=something string on the command line is set as environment variables to init.
Quoted 3 lines
but it seems the environment is just discarded before running what is in inittab (I'm not sure, I should read the sources later).
It is not, but mingetty/login cleans up the environment on interactive logins. Many other commands is also very restrictive about what is preserved in the environment when starting childprocesses so relying on LD_ASSUME_KERNEL to be globally set for all processes in the whole system is generally not a good idea.. (very hard to guarantee).
Quoted 2 lines
sysvinit should have a way to add a variable to the environment. Can it be done in intitab?
Not that I know of. But as the environment can be specified on the kernel command line this isn't really needed.
Quoted 4 lines
# This module parses
/etc/environment(the standard for setting# environ vars) and also allows you to use an extended config- Do they mean standard in Debian?
No idea what stadard they refer to. It is not in the UNIX standard from what I can see.
Regards
Henrik
-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel