Из-за ошибки 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 в нескольких способы и т. д., и такие ответы будут не по теме.
Попробуйте это (адаптация 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 и настройками по умолчанию откажет, когда это попытается использовать тот сектор. Опции я вижу:
Добавить swapoff /dev/zram0
кому: /etc/rc.local
(Самый основной).
Поместите в черный список zram (Но это разгрузит его сначала? Поскольку это загружается в начальной букве ramdrive).
Иначе, если Вы хотите использовать zram, необходимо добавить -c
к соответствующему mkswap
, и надежда на лучшее, т.е. что все работает кроме последнего сектора. Ссылка: это сообщение
Добавьте -c
кому: sbin/compcache-enable
из изображения initrd и переупаковки (потерянный с обновлениями ядра).
Добавить -c
кому: /etc/init/zram-config.conf
. Вам также нужен a swapoff
и rmmod
перед modprobe
, потому что zram уже установлен, когда он будет работать, так установка размера перестанет работать.
Я выбрал 3 на данный момент, но dmesg
все еще загрязнен теми Буфер ошибки ввода-вывода. Я буду наблюдать за катастрофическими отказами, теперь по крайней мере, я знаю, куда они происходят из.
Я предпочитаю отключить 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
.