Почему cgconfig.conf не читается при перезагрузке 14.04?

Недавно я обновил выпуск с 12.04 до 14.04 и обнаружил, что мой файл cgconfig.conf больше не читается при запуске.

Файл представляется правильным, в том смысле, что я могу явно загрузить его

sudo cgconfigparser -l /etc/cgconfig.conf

но это не происходит автоматически при перезагрузке, что означает, что другие сценарии запускаются при неудачном запуске (потому что они полагаются на cgexec с группами, определенными в cgconfig.conf).

Что мне нужно сделать, чтобы файл автоматически использовался? (т.е. установить какой-то пакет) Должен ли я каким-то образом конвертировать этот файл в какой-то другой?

До обновления это работало корректно, поэтому я не понимаю, что может быть не так.

Пакет "cgroup-lite", который, я думаю, должен за это отвечать, также установлен.

Заранее спасибо.

1 ответ

Решение

Это похоже на регрессию из-за исправления ошибки # 1096771. Были некоторые сценарии инициализации в cgroup-bin в 12.04, которые были удалены в 13.04. /etc/init/cgconfig.conf служебный файл содержал это в pre-start script строфа:

/usr/sbin/cgconfigparser -l $CGCONFIG

Так было cgconfig сервис от cgroup-bin пакет, который фактически настраивает вашу конфигурацию cgroup. cgroup-lite не сильно изменился между этими выпусками, так что я предполагаю, что он не предназначен для чтения этой конфигурации. Я рекомендую вам открыть отчет об ошибке (и, возможно, написать новую службу Upstart (или скопировать старую), поскольку вряд ли это изменится в выпуске LTS).


Поскольку 12.04 по-прежнему поддерживается, вы можете использовать индекс пакетов, чтобы загрузить более старую версию пакета. Я воспроизвел /etc/init/cgconfig.conf здесь для удобства:

description "cgconfig"
author "Serge E. Hallyn <serge.hallyn@ubuntu.com>"

start on runlevel [2345]

console output

pre-start script
    test -x /usr/sbin/cgconfigparser || { stop; exit 0; }

    CREATE_DEFAULT="yes"
    CGCONFIG=/etc/cgconfig.conf
    if [ -r /etc/default/cgconfig ]; then
        . /etc/default/cgconfig
    fi

    # If we've already run, don't do it again!
    if grep -q /sys/fs/cgroup /proc/mounts; then
        stop
        exit 0
    fi

    [ -r $CGCONFIG ] || { echo "$CGCONFIG is empty"; stop; exit 0; }

    mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroups /sys/fs/cgroup
    /usr/sbin/cgconfigparser -l $CGCONFIG
    if [ "$CREATE_DEFAULT" = "yes" ]; then
        /usr/sbin/create_default_cgroups
    fi
end script

post-stop script
    if [ -x /usr/sbin/cgclear ]
    then
        /usr/sbin/cgclear
    fi
    umount /sys/fs/cgroup || true
end script
Другие вопросы по тегам