Невозможно обновить конфигурацию grub внутри chroot

Я нашел другой ответ, который, вероятно, лучше подходит. Как оказалось, современные версии ядра Linux, помимо прямого и периодического восстановления, имеют медленное выделение памяти, когда kswapd просыпается после того, как не может выделить непрерывный кусок памяти.

После пробуждения kswapd проверяет водяные знаки зон. Однако, как оказалось, водяные знаки — это не статические номера уровней -зон, которыми они могли быть когда-то. Скорее, они специфичны для порядка распределения.

. При принятии решения о том, следует ли перебалансировать зону, kswapd учитывает порядок неудачного запроса на выделение, вызвавшего ее. Поэтому, если память достаточно фрагментирована, kswapd придется поработать.

При перебалансировке зоны у kswapd будет выбор между сокращением файлового кэша и кражей анонимных страниц из пользовательских процессов (, если подкачка не отключена полностью ). Итак, остается вопрос --, почему kswapd выбирает последний вариант. Я думаю, что ответ снова фрагментация. --Я думаю, что алгоритм восстановления может иметь способ узнать, что страницы, полученные в результате сжатия файлового кеша, могут физически не быть смежными.

Вообще говоря, не только в последних версиях ядра добавлена ​​дефрагментация памяти, но и грань между высвобождением кадров страниц и уплотнением памяти несколько размыта.

К сожалению, все классические учебники по ядру Linux были написаны на основе ядра версии 2.6 или более ранних, поэтому они могут вводить в заблуждение.

0
04.09.2021, 18:42
1 ответ

Если вы используете простую команду chroot, а не специфичную для дистрибутива -оболочку, такую ​​как arch-chroot, вам необходимо смонтировать виртуальные файловые системы /dev, /procи /sysперед chroot, иначе многие команды будут сообщать о странных ошибках, поскольку они не смогут получить доступ к тому, что им нужно.

В большинстве современных систем Linux, если корневая файловая система, требующая исправления, смонтирована в /mnt/arch/@/, следующие команды должны работать:

sudo mount -o rbind /dev /mnt/arch/@/dev
sudo mount -t proc none /mnt/arch/@/proc
sudo mount -t sysfs none /mnt/arch/@/sys
sudo chroot /mnt/arch/@

Чтобы отменить приготовления:

exit    # = come back out of the chroot
sudo umount /mnt/arch/@/sys
sudo umount /mnt/arch/@/proc
sudo umount /mnt/arch/@/dev
1
06.09.2021, 10:05

Теги

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