linux chroot systems like cross compilation

See below Russian version

Some time ago I have found that my binaries can't work on old systems (where old GLIBC placed).
That was the day when I have tried chroot to emulate cross compilation.
It is really suitable. Usually you have system image (WMVare, QEmu etc.) that your client use on stage. Or you know, how to install this system (for example some Suse 10.3, that use glibc 2.6, gcc 4.1.2).
But some other custamer may use Suse 11.3 (glibc 2.8, gcc 4.2 ...). And cerating a lot of VMWare instances not the best way.
This why on my gentoo system I placed full Suse 10.3 into directory (on my system it is /home/builder/suse103). So if I have to create binaries - it is just
# sudo chroot /home/builder/suse103
and we have libraries and compilers (gdb, ddd, config files) that uses customer.

This is really suitable. You need 5-th operation systems, and you can use one computer without reloading.

I also used CruiseControl, so - I don't need to do chroot manual. Just use Web Interface - and create builds by it. (Deploying from Cruise Control? It is possible).

Unfortunately I have found, that we can't run Elf64, under Elf32. And that's make me really sad. I will try vice-verse example, but my current hardware does not allow this, so tests will be provided on Virtual Machine.
But if you have 32bit applications that should be started on different machines with different glibc... You can try chroot way. It is really simple, and it is really works.

----------------------------------------------------------------------------------

Совсем недавно, я узнал, что некоторые мои исполняемые файлы - не запускаются на старых системах (мешает старый GLIBC).
Это время когда я попробовал chroot для эмуляции кросс-сборки.
Это очень удобно. Обычно у нас есть либо образ системы (WMVare, QEmu etc.), который используется вашим клиентом. Либо у вас есть инфомрация о системе, где будет производится запуск (например Suse 10.3, в котором glibc 2.6, gcc 4.1.2).
К сожалению, другие клиенты могут захотеть Suse 11.3 (а там уже glibc 2.8, gcc 4.2 ...). И в таком случае создание множества виртуальных машин не лучший путь. Оперативная память всё так ограничена.
Поэтому на моей gentoo, в отдельно стоящий каталог я разместил Suse 10.3 (у меня вся система находится в /home/builder/suse103). Таким образом, если мне необходимо скоппилить исполняемые файлы для неё, мне достаточно ввести:
# sudo chroot /home/builder/suse103
где уже используются необходимые версии бибилотек и компиляторов (gdb, ddd, config files), которые используются клиентом.

Это очень удобно. Если вам необходимо получить 5-ть операционных систем, у вас есть один компьютер и нет желания перезагружаться, то это как раз то, что вам надо.

Ели же внутри разместить CruiseControl, то вам не прийдётся компилировать в chroot вроучную. Просто используйте Веб-Интерфейс - и создавайте билды через него. (Поставка продукта с помощью Cruise Control? Это тоже реально).

К сожалению, я узнал. Что у нас не получится использовать 64-х битную систему внутри 32-х битной. И это очень грустно. Я попробую использовать наоборот. Но в текущий момент моё железо не позволяет мне так сделать, так, что прийдётся использовать Виртуальную машину.
Но если у вас только 32-х битные приложения, которым надо запускаться в различных системах с разными glibc. Попробуйте путь chroot. Это просто, и это работает.

0 комментария(ев):