LINUX.ORG.RU

qemu-arm-static и cmdline

 


0

1

Как объяснить qemu что не надо себя пихать в cmdline процесса и занимать argv[0] процесса именем запущенного бинарника? А то из-за этого куча всякой всячины не работает в армовой rootfs. Мелочь, но неприятно.

lxc контейнер, в нём фактически развёрнут debian-arm, в binfmt_misc, как и положено, засунуто про qemu и на что его натравливать, чтобы armel ELF запускать. Всё было бы изумительно, если бы не эта qemu'овая лажа с argv[0]. Из-за этого софтинки, которые работают по-разному, если их под разными именами запускать, работают, очевидно, неправильно, ибо не понимают, что им делать, если они называтся qemu-arm-static или именем бинарника.

ЗЫ: Это в основном касается /proc/$PID/cmdline

Всё даже ещё хуже: Вот кусок кода который например в login работает:

        /*
         * The argv[0]'th entry is usually the path name, but
         * for various reasons the invoker may want to override
         * that.  So, we determine the 0'th entry only if they
         * don't want to tell us what it is themselves.
         */
        if (arg == (char *) 0) {
                (void) snprintf (arg0, sizeof arg0, "-%s", Basename ((char *) file));
                arg0[sizeof arg0 - 1] = '\0';
                arg = arg0;
        }

        /*
         * First we try the direct approach.  The system should be
         * able to figure out what we are up to without too much
         * grief.
         */
        (void) execle (file, arg, (char *) 0, envp);

login запускает указанный в passwd shell, но в качестве argv[0] указывает -shell, чтоб shell прочёл /etc/profile и всё такое. А qemu, вместо того, чтобы после запуска shell вернуть всё взад - и cmdline, и argv[0], записывает в argv[0] то, что он запустил, а cmdline вообще не трогает. В результате, в argv[0] вместо -shell лежит /bin/shell, в cmdline /usr/bin/qemu-arm-static /bin/shell, ну и т.д.

В общем, надо как-то qemu-то рога пообломать....

★★★★★

Последнее исправление: Stanson (всего исправлений: 6)

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.