On 09/15/2010 12:03 PM, [email protected] wrote: > Forgive the noob question, but what is it that makes a container know what > architecture (x86 vs x86_64) it is? > > I guess the question is equally valid for any chroot or container (LXC, > OpenVz, etc, etc). > > I know it works, but I'd like to know why ? >
The container knows the architecture because this one is tied with the calling process 'personality'. The 'uname' information is build in the kernel with the utsname structure but the architecture value is overridden by the calling process personality. If running on a x86_64, the first process of the system (aka init) will have a 64bits personality and the child processes will inherit this personality. At any time a process can change its personality and become a 32bits process, hence all its childs will be 32bits too, this is what does 'setarch' or 'linux32'. In a container context, running a 32bits container on a 64bits host can lead to a problem when updating the package (will download the wrong the packages arch). In order to fix that, a option lxc.arch=x86 (1) can be set, so the processes running inside the container will be 32bits processes and they will see the guest system as a 32bits system. I am not sure I answer your question but I hope that helps. Thanks -- Daniel (1) note this option will be available for 0.7.3 which is not yet out. ------------------------------------------------------------------------------ Start uncovering the many advantages of virtual appliances and start using them to simplify application deployment and accelerate your shift to cloud computing. http://p.sf.net/sfu/novell-sfdev2dev _______________________________________________ Lxc-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/lxc-users
