Как открыть dump файл linux
Использование дампов ядра для диагностики сбойных программ
Дампы ядра часто применяются для диагностики и поиска ошибок в Линуксовых и Юниксовых программах. Они помогут системному администратору выяснить, отчего рухнула та или иная программа, например, Lighttpd, Apache или PHP-CGI. Файл дампа ядра генерируется всякий раз, когда программа нештатно завершается из-за ошибки, нарушения политики безопасности операционной системы, попытки записывать данные вне отведенной ей области памяти и так далее. В этой статье рассказано, как подключить генерацию файлов дампов ядра и отслеживать с их помощью ошибки в программах.
Как подключить создание файлов дампа ядра
Как просмотреть текущие настройки файлов дампа ядра
Нулевой вывод команды означает, что файлы дампов не создаются.
Как изменить настройки
Как подключить генерацию файлов дампа ядра для рухнувших программ и ошибок сегментации
Найдите в /etc/profile строку
И измените ее, чтобы получилось:
Также следует внести изменения в файл /etc/sysctl.conf. В этот файл следует дописать три строки:
Не забудьте сохранить отредактированные файлы.
Что означают последние три записи?
Совершив все вышеописанные действия, запустите дампирование при помощи команды (Redhat и подобные дистрибутивы):
И запишите настройки в /etc/sysctl.conf при помощи следующей команды:
Как инициировать создание дампов ядра для конкретного демона
Например, для демона lighttped, в файл /etc/init.d/lighttped нужно добавить строку:
Сохраните файл. Затем перезапустите демон:
Правильный вывод последней команды:
Имейте в виду, что эта вышеприведенная строка является специфичной только для Redhat. Для всех остальных дистрибутивов конфигурацию прописывают строками:
Все, теперь можно отправлять дамп ядра разработчикам или распространителям программы.
Linux dump резервное копирование и восстановление
Для системного администратора самой трудоёмкой, скрупулёзной и ответственной работой является (что непрерывно подтверждается практикой) не установка и наладка систем, программного обеспечения и т. д., а организация и проведение процедуры резервного копирования системы. Даже небольшие организации располагают своими, пусть и небольшими, но локальными сетями, обслуживаемыми серверами. Это позволяет значительно упростить и ускорить (при грамотном подходе, конечно) рутинную работу по специфике деятельности всей организации. Потеря информации, хранящейся даже в таких сетях и даже для небольших организаций, предприятий (или даже офиса) — в большинстве случаев наносит трудно поправимый ущерб с длительным и дорогостоящим восстановлением. Чего уж говорить о гигантских компаниях или корпорациях. В подавляющем большинстве случаев потеря информации стоит гораздо дороже, чем само оборудование.
Поэтому информацию обязательно следует защищать и самым надёжным способом для этого является резервное копирование данных. В Linux-системах на базовом уровне предусмотрена специализированная утилита dump. Она была разработана специально для осуществления резервного копирования. Наряду с ней для данной задачи можно также использовать команду tar – это будет практически также эффективно, однако dump конечно же, гораздо более удобна.
Использование команды dump
Утилита dump обладает рядом особенностей, благодаря чему многие системные администраторы используют именно её для резервного копирования данных:
Команда dump в автоматическом режиме определит, какие файлы изменились со времени прошлого резервного копирования, формирует соответствующий список и именно эти файлы направит для копирования на внешний носитель. Надо заметить, что dump способна «понимать» исходную файловую систему на довольно низком уровне — для определения файлов для резервирования используется чтение таблицы индексных дескрипторов. Вместе с тем у утилиты dump имеются и незначительные ограничения:
Кстати, утилита dump также уверенно работает с именами файлов произвольной длины, т. е. ей абсолютно не важна глубина иерархии каталогов файловой системы.
Создание резервных копий
Итак, для создания резервной копии утилитой dump нужно дать следующую команду:
Или для варианта с ленточным носителем:
Восстановление файлов из резервных архивов
В приведённом примере показан наиболее общий и «суровый» случай, когда нужно восстановить архив с удалённого ленточного носителя по SSH. Здесь также используется перемотка ленты командой mt для перехода к нужному архиву — это тот случай, когда на одной ленте их несколько. В качестве параметров команде mt передаются: удаленное устройство и параметры перемотки — fsf 3, т. е. лента должна быть перемотана вперёд на 3 файла. Если архив умещается на одной ленте, то на запрос «Specify next volume #:» нужно ввести 1. Также нужно определить, должен ли текущий каталог соответствовать корневому каталогу текущей ленты и если восстанавливается не вся файловая система целиком, то можно ответить «n» — нет. Восстановление производится в текущий каталог /var/restore.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Получаем образ оперативной памяти

Содержание оперативной памяти является очень важной информацией при изучении предыдущих действий с машиной. Оперативная память может содержать как части самих исполняемых процессов, так и части удаленных файлов, пользовательских сессий, криптографических ключей. При современном распространении сложных систем защиты информации, основанных на криптовании восстановление их ключей становиться чуть-ли не одной из основных задач для исследования. В защищенных системах зачастую оперативная память это единственное место где могут сохраниться защитные ключи и другая временная, но очень важная информация.
Процесс получения информации, которая содержится в оперативной памяти состоит из двух этапов: изъятие содержимого оперативной памяти
и
анализ полученных во время изъятия данных.
Обращая внимание на первый этап стоит заметить, что изъятие оперативной памяти может быть выполнено с помощью ряда средств: непосредственный доступ к памяти с использованием специальных плат расширения, порта FireWire, и даже физическом изъятии запоминающего устройства оперативной памяти (потребует замораживания плат),
но в данном материале мы рассмотрим программные средства, которые позволяют изъять содержимое оперативной памяти защищенных машин путем так называемой «горячей» перезагрузки и запуска машины в Live-режиме.
Для выполнения этой задачи будем использовать специальный дистрибутив Ubuntu CyberPack (IRF) 1.0, состоящий из минимального набора компонент, а именно, только те, которые необходимы для изъятия данных из памяти. Соответственно отсутствует и графический интерфейс.
Использование такого подхода к изъятию содержимого оперативной памяти имеет ряд преимуществ и недостатков сравнительно с другими перечисленными выше средствами.
Плюсы:
— использование Live-дистрибутива позволяет проводить действие не зависимо от того какая операционная система установлена на исследуемой машине;
— отсутствуют затраты на приобретение дорогостоящих специальных устройств, кабелей, плат, и др.
Недостаток:
— содержимое оперативной памяти будет неполным — ее часть будет перезаписана данными, необходимыми для запуска Live-дистрибутива (приблизительно 125 Мб).
Для использования доступны специально собранные дистрибутивы для машин с памятью объемом до 3 Гб (і386) и свыше 3 Гб (amd64). С их помощью можно создать загрузочный CD/DVD-диск или загрузочный USB-диск.
Замечания:
— второго шанса система нам не дает — у нас есть только одна попытка. т. е. при повторной перезагрузке исследуемого компьютера большая вероятность того что мы уже не найдем необходимой информации. Отсюда следует что не надо перезагружать его несколько раз, экспериментировать, прицеливаться.
Необходимо заранее подготовится и знать как компьютер себя поведет после перезагрузки.
Большинство современных компьютеров позволяют прямо при старте указать откуда производить загрузку, но если этого нет, тогда необходимого настроить BIOS машины на загрузку с CD/DVD-привода или USB-привода/накопителя, после чего загрузить Live-дистрибутив с указанного устройства.
Перезагружаем компьютер.
ВАЖНО: перезагрузка ни в коем случае не должна быть холодной (путем нажатия кнопки «ресет» или выключение\включение питания), а именно — перезагрузка должна быть осуществлена средствами самой работающей системы (например нажатием кнопок Ctrl-Alt-Del или путем выбора пункта «перезагрузка» в системе)
После загрузки дистрибутива пользователю доступна привычная строка консоли Linux, и краткая информация для запуска модуля.
Замечание: Для дальнейших действий понадобиться примонтировать заранее подготовленный носитель (внешний жесткий диск, флеш-накопитель) с файловой системой ext2/3/4, в который будет сохраняться файл с содержимым оперативной памяти.
Для того, что бы узнать какой идентификатор присоединенному носителю присвоила система, необходимо после его подключения к компьютеру ввести следующую команду:
# dmesg | tail (Команда выводит на экран информацию буфера сообщений ядра. Нас будет интересовать последняя запись.)
Как например вот это:
[16091.995428] sd 9:0:0:0: Attached scsi generic sg2 type 0
[16091.995996] sd 9:0:0:0: [sdb] 32096120 512-byte logical blocks: (16.4 GB/15.3 GiB)
[16091.998192] sd 9:0:0:0: [sdb] Write Protect is off
[16091.998205] sd 9:0:0:0: [sdb] Mode Sense: 0b 00 00 08
[16091.999433] sd 9:0:0:0: [sdb] No Caching mode page found
[16091.999447] sd 9:0:0:0: [sdb] Assuming drive cache: write through
[16092.003486] sd 9:0:0:0: [sdb] No Caching mode page found
[16092.003495] sd 9:0:0:0: [sdb] Assuming drive cache: write through
[16092.004251] sdb: sdb1
(где «sdb» — присвоенное обозначение физического накопителя, а «sdb1» — присвоенное обозначение логического раздела накопителя).
Далее следует примонтировать логический раздел накопителя к папке /tmp загруженной в Live-режиме операционной системы:
# mount /dev/sdb1 /tmp
(где
«mount» — команда монтирования устройства
«/dev/sdb1» — адрес файла логического раздела присоединенного накопителя
«/tmp» — папка в которую необходимо подключить накопитель).
Все подготовительные шаги сделаны — можно переходить к изъятию содержимого оперативной памяти:
И ждем…
В результате удачного выполнения команды, мы получим сообщение похожее на это:
521453568 bytes (521 MB) copied, 158.405 s, 3.3 MB/s
(где
«521453568 bytes (521 MB) copied» — объем скопированной информации
«158.405 s» — время в течении которого проводилась операция
«3.3 MB/s» — скорость при которой проводилась операция)
В результате мы получили содержимое оперативной памяти машины в файле «ram-image.mem» на накопителе. Теперь его можно обрабатывать в т.ч. извлекая части исполняемых процессов, удаленных файлов, информацию о пользовательских сессиях, криптографических ключах и многое другое.
P.S.
Также стоит обратить внимание что все современные системы используют в своей работе и swap-память (так называемый «файл подкачки»)
Файл подкачки – это своеобразное дополнение к оперативной памяти (которая занимается временным хранением данных для быстрой доставки их на обработку процессору) Вашего компьютера. Даже не столько дополнение, сколько её уширение или, можно сказать, продолжение. Дело в том, что когда не хватает оперативной памяти система может переносить данные из памяти на диск (так называемая дополнительная память), в котором соответственно также хранятся данные.
И для полной картины анализа памяти необходимо также получить и их.
Различные операционные системы используют разные способы их хранения.
В случае с Windows это обычно файлы в корне на системном диске С:
pagefile.sys для Win XP и Win 7 и достаточно просто скопировать файл
Для MacOS необходимо скопировать все файлы из директории /private/var/vm/swapfile*
Обработка и анализ полученных результатов (как дампа оперативной памяти так и swap-памяти) может проводиться как в ручную с помощью например HEX-редактора, так и с помощью ряда программ о которых будет рассказано в следующий раз.
Creating and debugging Linux dump files | Opensource.com
Knowing how to deal with dump files will help you find and fix hard-to-reproduce bugs in an application.
Subscribe now
Get the highlights in your inbox every week.
Crash dump, memory dump, core dump, system dump … all produce the same outcome: a file containing the state of an application’s memory at a specific time—usually when the application crashes.
Knowing how to deal with these files can help you find the root cause(s) of a failure. Even if you are not a developer, dump files created on your system can be very helpful (as well as approachable) in understanding software.
This is a hands-on article, and can you follow along with the example by cloning the sample application repository with:
How signals relate to dumps
When you quit a running application, the application will usually receive the SIGTERM signal. Because this type of exit signal is expected, this action will not create a memory dump.
The following signals will cause a dump file to be created (source: GNU C Library):
Creating dump files
The application should exit in state 4 with an error:
dump_written.png
«Abgebrochen (Speicherabzug geschrieben)» roughly translates to «Segmentation fault (core dumped).»
Whether it creates a core dump or not is determined by the resource limit of the user running the process. You can modify the resource limits with the ulimit command.
Check the current setting for core dump creation:
To disable creating core dumps’ type:
The number specifies the resource in kilobytes.
What are core dumps?
The way the kernel handles core dumps is defined in:
I’m running Fedora 31, and on my system, the file contains:
shows all available dump files saved on your system.
The memory addresses: main() and freeSomething() are quite low compared to subsequent frames. Due to the fact that shared objects are mapped to an area at the end of the virtual address space, you can assume that the SIGABRT was caused by a call in a shared library. Memory addresses of shared objects are not constant between invocations, so it is totally fine when you see varying addresses between calls.
In the source code, you can see (even without any knowledge of C++) that it tried to free a pointer, which was not returned by a memory management function. This results in undefined behavior and causes the SIGABRT :
You can find more information about coredumpctl on its man page.
Compiling with debug symbols
Open the Makefile and comment out the last part of line 9. It should now look like:
You will get a floating-point exception. Open the dump in GDB with:
This time, you are pointed directly to the line in the source code that caused the error:
Type list to get a better overview of the source code:
Use the command info locals to retrieve the values of the local variables from the point in time when the application failed:
In combination with the source code, you can see that you ran into a division by zero:
Conclusion
Knowing how to deal with dump files will help you find and fix hard-to-reproduce random bugs in an application. And if it is not your application, forwarding a core dump to the developer will help her or him find and fix the problem.
10.4.3. Команды dump и restore
10.4.3. Команды dump и restore
Пара утилит — dump и restore — это самое распространенное средство резервирования и восстановления данных в UNIX-системах. Они обслуживают файловую систему ext2 (ext3), то есть для архивирования ваших Windows-разделов их использовать не удастся. Эти утилиты входят в состав пакета dump, который в дистрибутивах Red Hat устанавливается по умолчанию; если в вашем дистрибутиве этого пакета нет, то скачайте его с http://dump.sourceforge.net.
Программа dump позволяет организовать инкрементное резервирование, сжимать полученный архив и разбивать его на тома, когда его размер превышает емкость внешнего носителя. Формат вызова:
dump [-уровень] [ключи] список_файлов
В качестве списка файлов можно указывать не только файлы и каталоги на смонтированных файловых системах, но и файл устройства, на котором находится файловая система, в данный момент размонтированная. Единственное ограничение — такую файловую систему можно архивировать только полностью (уровень 0).
Полный список ключей команды dump вы найдете на ее man-странице. Вот наиболее важные из них:
? -f — список имен файлов, разделенный запятыми. Тома многотомного архива выводятся в указанные файлы в порядке их перечисления. Это могут быть файлы на диске, файлы устройств, стандартный вывод (символ «-»);
? -y — после успешного архивирования отметить дату и уровень в файле /etc/dumpdates;
? -x[уровень_сжатия] — сжимать выводимый архив средствами библиотеки zlib. Значение уровня сжатия по умолчанию равно 2; другой уровень нужно указывать без пробела.
Программа restore восстанавливает отдельные файлы и файловые системы. архивированные программой dump. Формат команды:
restore [режим] [ключи]
Важнейших режимов два:
? -i — интерактивное восстановление отдельных файлов и каталогов. Подкоманды этого режима (список которых можно получить по подкоманде help) позволяют перемещаться по архиву, оглавление которого прочитано с ленты, как по обычному дереву каталогов, и выбирать файлы для восстановления. Выбранный файл добавляется в список восстановления подкомандой add. Список восстановления извлекается с ленты подкомандой extract.
? -r — полное восстановление файловой системы. Пострадавшую файловую систему нужно сначала отформатировать командой mkfs (п.2.3), смонтировать и переместиться в ее корневой каталог. Потом восстановить с ленты архив уровня 0, а потом — все инкрементные архивы в порядке возрастания номера уровня.
Данный текст является ознакомительным фрагментом.
Продолжение на ЛитРес
Читайте также
Сервисы и команды
Сервисы и команды Информация о командах их параметрах сгруппирована по сервисам. Все команды, описанные в этом разделе, могут использоваться для подготовки конфигурационного файла перед запуском программы. В то же время большинство из них может быть указано при
Сервис Dump.ru
Сервис Dump.ru Сервис Dump.ru интересен тем, что совершенно бесплатен и не требует обязательной регистрации. Впрочем, если вы намерены постоянно пользоваться этим ресурсом, смысл в бесплатной регистрации есть — вы сможете загружать на сервер файлы с максимальным размером не в
5.1.6. r-команды
5.1.6. r-команды В Linux есть так называемые r-команды: rlogin, rsh, rcp, rsync, rdist. Мы не будем их рассматривать, потому что все они создают большие проблемы в безопасности. Если Telnet-клиент нужен для тестирования сервисов, то эти команды я включил в обзор только для того, чтобы вы удалили их
13.5.4. dump
13.5.4. dump Все предыдущие команды, которые мы рассматривали в данной главе, не являются специализированными командами резервирования. Это просто команды копирования и архивирование файлов. Утилита dump предназначено именно для создания резервной копии файловой системы
4.6.7. Команды more и less
4.6.7. Команды more и less Команда cat позволяет вывести на стандартный вывод (на экран) содержимое любого файла, однако она используется для этих целей очень редко, разве что для вывода очень небольших по объему файлов. Дело в том, что содержимое большого файла мгновенно
19.1. Общие команды
19.1. Общие команды Цель данной главы — вспомнить «хорошо забытое старое». Из современных пользователей ОС Linux мало кто пользовался или вообще знает о существовании таких программ как mail, fastmail, locate, which. Эти небольшие программы позволяют сделать многие операции намного
14.4 Команды FTP
14.4 Команды FTP Какие команды можно передавать по управляющему соединению? Существуют команды аутентификации, дающие возможность пользователю указать идентификатор, пароль и регистрационную запись для работы с FTP.Команды пересылки файлов позволяют:? Копировать
5.4. iptables-restore
5.4. iptables-restore Утилита iptables-restore используется для восстановления (загрузки) набора правил, который ранее был сохранен утилитой iptables-save. Набор правил утилита получает со стандартного ввода и не может загружать его из файла напрямую. Команда имеет следующий
6.3. Команды
6.3. Команды Ниже приводится список команд и правила их использования. Посредством команд мы сообщаем iptables что мы предполагаем сделать. Обычно предполагается одно из двух действий – добавление нового правила в цепочку или удаление существующего правила из той или иной
Команды, команды и команды
Команды, команды и команды Что именно делает ваша первая программа? Она печатает на экран слова «Hello World». Каким образом она это делает? Она использует команды. В нашей программе мы написали только одну команду —echo «Hello World». Что именно тут команда?echo. Эта программа
Интерактивные команды
Интерактивные команды Вы можете интерактивно вводить три вида команд или операторов в подсказке SQL>.* Операторы SQL определения данных (DDL), такие как CREATE, ALTER, DROP и REVOKE. Эти операторы создают, изменяют или удаляют метаданные и объекты или управляют полномочиями доступа
Команды SHOW
Команды SHOW Команды SHOW используются для отображения метаданных, включая таблицы, индексы, процедуры, триггеры и привилегии. Они могут отображать список имен всех объектов указанного типа или предоставлять детальную информацию о конкретном объекте, заданном в


