Итак, вы хотите найти во всех файлах .ksh
в вашем текущем каталоге строку gmail
и outlook
и исключить строки, начинающиеся с #
и записать вывод в a.log
.
Хорошо grep -P "^ (? = [^ #]) (. * Gmail. * |. * Outlook. *)" * .Ksh> a.log
Да, PCMemTest — это переработанный Memtest86+, который можно загрузить из UEFI. У него все еще есть одно ограничение при загрузке из UEFI :: если CSM не включен, клавиатуру нельзя использовать, что означает, что конфигурацию нельзя изменить.
Кроме того, само ядро Linux содержит инструмент проверки памяти :опция memtest
будет запускать проверку памяти с использованием до 17 шаблонов (в настоящее время ). Если вы добавите memtest
к параметрам загрузки вашего ядра, оно будет запускать все тесты при загрузке и резервировать любые сбойные адреса, чтобы они не использовались. Если вы хотите меньше тестов, вы можете указать количество шаблонов (memtest=8
, например ).
Это не так обширно, как тесты Memtest86+, но все же дает довольно хорошие результаты.
Некоторые ядра дистрибутива не включают эту функцию; вы можете проверить, доступен ли он, выполнив поискCONFIG_MEMTEST
в конфигурации вашего ядра (try/boot/config-$(uname -r)
). Ядро не будет жаловаться, если вы укажете memtest
, но оно его не поддерживает; когда он запустится, вы должны увидеть вывод, например
[ 0.000000] early_memtest: # of tests: 17
[ 0.000000] 0x0000000000010000 - 0x0000000000099000 pattern 4c494e5558726c7a
[ 0.000000] 0x0000000000100000 - 0x0000000003800000 pattern 4c494e5558726c7a
[ 0.000000] 0x000000000500d000 - 0x0000000007fe0000 pattern 4c494e5558726c7a
[ 0.000000] 0x0000000000010000 - 0x0000000000099000 pattern eeeeeeeeeeeeeeee
[ 0.000000] 0x0000000000100000 - 0x0000000003800000 pattern eeeeeeeeeeeeeeee
[ 0.000000] 0x000000000500d000 - 0x0000000007fe0000 pattern eeeeeeeeeeeeeeee
[ 0.000000] 0x0000000000010000 - 0x0000000000099000 pattern dddddddddddddddd
[ 0.000000] 0x0000000000100000 - 0x0000000003800000 pattern dddddddddddddddd
[ 0.000000] 0x000000000500d000 - 0x0000000007fe0000 pattern dddddddddddddddd
[ 0.000000] 0x0000000000010000 - 0x0000000000099000 pattern bbbbbbbbbbbbbbbb
[ 0.000000] 0x0000000000100000 - 0x0000000003800000 pattern bbbbbbbbbbbbbbbb
...
во время загрузки ядра (или в журналах загрузки, позже ).
Вы можете использовать QEMU, чтобы почувствовать это.:
qemu-system-x86_64 -kernel /boot/vmlinuz-$(uname -r) -append "memtest console=ttyS0" -nographic
(или тот, который qemu-system-...
подходит для вашей архитектуры ), и найдите «ранний _memtest». Чтобы выйти из QEMU после паники ядра, нажмите Ctrla , c , q , Enter .
Вы можете добавить бесплатную (бесплатную пиво )версию последней memtest86 в UEFI Grub2 на Ubuntu.
Основываясь на руководстве , я предпринял следующие шаги на удаленном сервере Ubuntu 16.04, чтобы добавить memtest86 в UEFI Grub2:
Во-первых, обратите внимание, что grub2 не показывает ни memtest86, ни memtest86+ :И это несмотря на то, что в моей загрузочной папке явно есть memtest86+. См. изображение ниже.
Скачать memtest86 -usb.zip на ноутбук
Отправьте zip-файл на удаленную машину, а затем разархивируйте его куда-нибудь (, например./home/<username>/memtest86-usb/
)
Нам нужно проанализировать memtest86 -usb.img, используя fdisk -lu memtest86-usb.img
, чтобы увидеть его смещение монтирования.Мы хотим смонтировать второе устройство, указанное в приведенном выше выводе, memtest86-usb.img2
. На изображении выше показано, что каждый сектор имеет размер 512 байт, а memtest86-usb.img2
начинается с сектора 514048. Следовательно, он начинается с 514048 *512 байт = 263192576 байт.
Создайте папку (, например./home/<username/memtest-tmp
)и установите его:
mkdir /home/<username>/memtest-tmp
sudo mount -o loop,offset=263192576 /home/<username>/memtest86-usb/memtest86-usb.img
Используйте lsblk для проверки сведений о разделе EFI, а также о смонтированном файле.img.На картинке выше мы отмечаем следующее:
/boot/efi
. legacy
или UEFI
в настройках BIOS.Ранее я установил для него значение legacy
, поэтому папки /boot/efi
не существовало. Изменение режима загрузки на UEFI
позволило мне увидеть папку /boot/efi
и убедиться, что раздел EFI смонтирован там. /home/<username>/memtest-tmp
. Далее проверяем, что точка монтирования содержит EFI/BOOT
папку `и просматриваем ее содержимое :
Затем мы одновременно копируем и переименовываем /home/<username>/memtest-tmp/EFI/BOOT
в /boot/efi/EFI/memtest86
(, предполагая, что целевая папка/boot/efit/EFI/memtest86
):
Затем мы создаем запись цепного загрузчика GRUB. Создайте файл /etc/grub.d/42 _memtest со следующим содержимым:
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry 'memtest86' {
insmod part_gpt
insmod fat
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 4418-37D3
else
search --no-floppy --fs-uuid --set=root 4418-37D3
fi
chainloader /EFI/memtest86/BOOTX64.efi}
На приведенном выше рисунке мы сделали set root='hd0,gtp1
, потому что наш раздел EFI был отмечен как имя устройства = sda1 . Согласно соглашению grub2...
insmod part_gpt
. Мы можем распознать тип метки диска как gpt с помощью команды fdisk -l
, а также из файла /boot/grub/grub.cfg
. Также обратите внимание, что мы использовали UUID раздела EFI , который можно получить с помощью команды blkid
, которая показывает UUID всех разделов на вашем компьютере.
Мы обновляем grub2 с помощью update-grub2
.