Похоже, что загрузчик grub УСТАНОВЛЕН на жесткий диск, НО grub не может найти файл grub.cfg или в нем есть ошибка.
Самый простой способ заменить файл grub.cfg - это загрузиться с компакт-диска или USB с помощью Super Grub Disk . Это позволит вам загрузиться в ОС сервера, где вам будет удобнее всего, и запустить команду grub-mkconfig
, чтобы заменить файл grub.cfg.
Вы можете использовать практически любую «живую» ОС Linux для загрузки, чтобы сделать то же самое, но помните о расположении ОС сервера и используйте правильные переключатели в grub-mkconfig
.
Похоже, здесь есть хорошее подробное руководство .
Я подозреваю, что вы ищете /proc/
. Вы можете увидеть карту программы плюс ее библиотеки. Если вы хотите получить доступ к содержимому каждой из этих областей, вы можете получить доступ к каталогу /proc/
, где имя каждого файла определяется диапазоном памяти каждого блока.
Больше информации об этом в man proc, ищите /proc/[pid]/map_files/
и следующие абзацы.
Вот пример (части) блоков использования памяти программы на основе X11:
Согласно документации, /proc/PID/pagemap
содержит одно 64-битное значение для каждой виртуальной страницы.
При 4096-байтовых страницах и 64-битном виртуальном адресном пространстве имеется 2**52
страниц. Таким образом, полный файл pagemap
будет состоять из 2**52
записей по 8 байт каждая. Это действительно большой файл. Чтобы все это вылечить, потребуется много времени. Не 2 минуты. Очень долгое время. Тест скорости на моем собственном компьютере показывает около 21 года.
И в основном он будет заполнен нулями (для всех виртуальных адресов, которые не отображаются в процессе). Куча вывода \0
на терминал не вызывает видимого эффекта. Он не завис, он делает то, что вы просили.
Это не текстовый файл, поэтому записи, отличные от нуля, вряд ли будут хорошо выглядеть на вашем терминале.
Правильный способ использования файла карты страниц — знать, какой виртуальный адрес вы ищете, найти его и прочитать 8 байтов.Или, если вам нужна информация для диапазона, прочитайте некоторое число, кратное 8 байтам. Если вам нужны все ненулевые записи, сначала прочитайте /proc/PID/maps
, чтобы узнать, какие диапазоны отображаются.
https://github.com/dwks/pagemap
Похоже, вы можете дополнительно прочитать файл /proc/<PID>/pagemap
между смещениями и получить информацию о карте страниц для необходимых виртуальных адресов.
$./pagemap 11405 0x400000 0x406000
0x400000 : pfn c1719 soft-dirty 0 file/shared 1 swapped 0 present 1
0x401000 : pfn c1718 soft-dirty 0 file/shared 1 swapped 0 present 1
0x402000 : pfn c1717 soft-dirty 0 file/shared 1 swapped 0 present 1
0x403000 : pfn c1716 soft-dirty 0 file/shared 1 swapped 0 present 1
0x404000 : pfn c171a soft-dirty 0 file/shared 1 swapped 0 present 1
0x405000 : pfn c16ef soft-dirty 0 file/shared 1 swapped 0 present 1
Ходьба mm_struct.pgd
через аварию — это простой способ. Вы увидите, что нижний адрес таблицы отличается, а верхний адрес одинаков.
debugfs
. /proc/$PID/maps
.