Как определить, какой скрипт инициализации запускает Zram?

Из-за ошибки zram, приводящей к зависанию машины , мне пришлось отключить zram.

Я думал, что dpkg --purge zram-config и комментирование любой ссылки из /etc/rc.local помогут, но модуль (и его зловещие предупреждения dmesg Buffer I/O error on device zram0, logical block 257912) продолжают загружаться.

Я набрал /etc/init и /etc/init.d для zram, и совпадений не было. Я даже переопределил mkswap, чтобы записать, как он вызывался (потому что «ошибки буфера» возникают, когда mkswap касается защищенной памяти) - удивительно, я не получил никаких звонков. Поэтому я не могу понять, что настраивает zram (вызывая mkswap + swapon).

Я взломал zram.ko, чтобы остановить его загрузку. Но я все еще хотел бы выяснить, какой конкретный скрипт инициализации загружает его. Любые идеи?

Обратите внимание, что я ищу ответы о том, как отследить, какой сценарий инициализации или запуска настраивает zram - я очень хорошо знаю, что ошибка уже может быть исправлена, что вы можете отключить zram в нескольких способы и т. д., и такие ответы будут не по теме.

3
задан 17 September 2013 в 11:04

2 ответа

Попробуйте это (адаптация initrd местоположения):

$ mkdir /tmp/x
$ cd /tmp/x
$ zcat /boot/initrd.img-3.8.0-31-generic | cpio -i
$ grep -lR zram .
./scripts/init-top/compcache
./lib/modules/3.8.0-31-generic/kernel/drivers/staging/zram/zram.ko
./lib/modules/3.8.0-31-generic/modules.dep
./lib/modules/3.8.0-31-generic/modules.dep.bin
./lib/modules/3.8.0-31-generic/modules.order
./sbin/compcache-enable
./etc/udev/rules.d/80-compcache.rules

Предпоследним является преступник, последний показывает параметры вызова. Сценарий /etc/init/zram-config.conf хочет сделать одно zram устройство на ядро, тот выше делает единственный с 50%.

Я могу подтвердить, что последний сектор является поврежденным в /dev/zram, вероятно, off-1 ошибка. Система с zram и настройками по умолчанию откажет, когда это попытается использовать тот сектор. Опции я вижу:

  1. Добавить swapoff /dev/zram0 кому: /etc/rc.local (Самый основной).

  2. Поместите в черный список zram (Но это разгрузит его сначала? Поскольку это загружается в начальной букве ramdrive).

    Иначе, если Вы хотите использовать zram, необходимо добавить -c к соответствующему mkswap, и надежда на лучшее, т.е. что все работает кроме последнего сектора. Ссылка: это сообщение

  3. Добавьте -c кому: sbin/compcache-enable из изображения initrd и переупаковки (потерянный с обновлениями ядра).

  4. Добавить -c кому: /etc/init/zram-config.conf. Вам также нужен a swapoff и rmmod перед modprobe, потому что zram уже установлен, когда он будет работать, так установка размера перестанет работать.

Я выбрал 3 на данный момент, но dmesg все еще загрязнен теми Буфер ошибки ввода-вывода. Я буду наблюдать за катастрофическими отказами, теперь по крайней мере, я знаю, куда они происходят из.

2
ответ дан 17 September 2013 в 11:04

Я предпочитаю отключить ZRAM, так как я уже использую раздел диска для подкачки. Я на 13.10 на одной машине и 12.0.4 на другой.

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

start on runlevel [2345]

на

start on runlevel [345]

Я использовал тот же трюк на /etc/init/tty1.conf, чтобы выйти из консоли загрузки сообщения для view.r.

0
ответ дан 17 September 2013 в 11:04

Другие вопросы по тегам:

Похожие вопросы: