Восстановите раздел начальной загрузки EFI

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

В то время как все все еще в порядке, можно сделать это:

sleep 1000 | sleep 1000
PID=12345 # PID of one of the sleep processes
ls -l /proc/$PID/fd
# output [...]
l-wx------ 1 hl hauke 64 15. Apr 19:11 1 -> pipe:[108237859]
# output [...]
lsof -n | grep 108237859 # gives you all processes which have access to this pipe
sleep     12928     hl    1w     FIFO     0,8     0t0  108262866 pipe
sleep     12929     hl    0r     FIFO     0,8     0t0  108262866 pipe

Редактирование 1

Если lsof не доступен:

for dir in /proc/[1-9]*; do
  test -r "$dir"/fd || continue
  if ls -ln "$dir"/fd | grep -q 108355662; then
    echo "PID: ${dir#/proc/}"
  fi
done
6
13.04.2017, 15:37
6 ответов

Честно говоря, звучит немного глупо.

grep -Ev "[[]"

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

grep -Ev "tty"

- то же самое в бледно-синем цвете. Он исключает процессы, имеющие последовательность «tty» где-то на их линии вывода ps . Сюда входят процессы с открытым оконечным устройством (но не процессы, чем с открытым псевдотерминалом (!)), поэтому это звучит как ограничение вывода демонизированными задачами.

Однако, как и в вышеупомянутом случае, это также исключит процессы, которые появляются в выходных данных ps как:

pid ?    R+  310:03 /home/pwned_user/bin/rootkit_tty[_rofl crack root-password

То есть, вам очень повезло, что вы нашли что-либо, и вы не можете быть действительно уверены, что нашли все. Учитывая ваш вопрос имеет «корпоративный сервер безопасности» в начале приводит его еще на один уровень вверх (или вниз, если хотите).

-121--128954-

Вот выходные данные apt-cache search ltsp на raspbian (Debian Wheezy скомпилирован для armv6 малины pi):

fts-ltsp-ldap - LDAP LTSP module for the TFTP/Fuse supplicant
fts-opsi - LDAP LTSP module for the TFTP/Fuse supplicant
ldm - LTSP display manager
ldm-server - server components for LTSP display manager
ldm-themes - Collection of themes for the LTSP login manager
ltsp-client - complete LTSP client environment
ltsp-client-core - basic LTSP client environment
ltsp-controlaula - classroom management tool - LTSP client version
ltsp-docs - LTSP Documentation
ltsp-server - basic LTSP server environment
ltsp-server-standalone - complete LTSP server environment
ltspfs - Fuse based remote filesystem for LTSP thin clients
ltspfsd - Fuse based remote filesystem hooks for LTSP thin clients
ltspfsd-core - Fuse based remote filesystem daemon for LTSP thin clients

Пакет ltsp-server-standalone упоминается здесь ", если вы хотите получить полный LT Итак, ответ на ваш вопрос «Как использовать ARM в качестве сервера LTSP?»: Точно так же, как вы это делаете в любом другом месте . У них даже есть вики .

То есть, если вы хотите использовать малиновый pi, или банановый pi, или любую другую систему ARM с низкой мощностью для этой цели, вы почти наверняка будете разочарованы. Эти машины могут поддерживать рабочий стол для себя, но у них просто нет мощности или оперативной памяти , чтобы сделать это для нескольких клиентов. Конечно, я могу ошибаться - удачи!

-121--175324-

Забыть grub полностью - это не что иное, как отвлечение внимания. Это даже не загрузчик ; в системах EFI загрузчик встроен в встроенное ПО. grub является просто загрузочным менеджером в этом контексте - и почти определенно полностью избыточным. Более того - вероятно, именно установка grub сломала все в первую очередь.

Это те вещи, которые вам нужны:

  1. FAT-отформатированный GPT-раздел типа ef00 .
  2. UEFI-совместимое ядро системы, расположенное в этом разделе (например, ядро linux) .
  3. Путь к этому ядру системы сохраняется в переменной среды UEFI (обычно Boot0000- {UUID} , но это также зависит от значения BootOrder- {UUID} ) .

Строго говоря, это все. Вышеуказанную настройку можно выполнить с помощью инструментов командной строки gdisk и efibootmgr .

Прагматично, boot-manager имеет смысл - но grub является самым сложным из всех доступных. Как и в других рекомендуемых случаях, rEFInd , вероятно, лучший из группы.

Я написал пошаговое руководство по разделению, форматированию и настройке системного раздела EFI с поддержкой rEFInd перед здесь . Здесь также еще один ответ на эту тему, в котором вы можете найти некоторые дополнительные объяснения относительно утверждений, которые я делаю здесь.

8
27.01.2020, 20:23

Когда я переустановил свой ESP и личинку, я использовал, повторно найдите: http://sourceforge.net/projects/refind/files/?source=navbar (вариант карты флэш-памяти) для начальной загрузки в мое распределение.

После начальной загрузки монтируют ваш ESP в/boot/efi

mount -t vfat /dev/yourESPdev /boot/efi

Затем, необходимо смочь переустановить личинку с этим каталогом EFI.

grub-install --efi-directory=/boot/efi

Это должно восстановить личинку. Если ваш ESP был удален, и необходимо было воссоздать его, то необходимо будет обновить, это - UUID в/etc/fstab. Использовать blkid для списка UUID устройств. После обновления UUID вашего устройства в/etc/fstab, выполненном личинка обновления .

необходимо будет, вероятно, также создать новую запись efi для личинки. Использовать что-то вроде:

efibootmgr -c -d /dev/yourHD -p ESP_PartionNumber -L "Boot Title" -l '\\EFI\\DIST\\grubx64.efi' -u "root=/dev/yourRootFS"

, Где ESP_PartitionNumber является количеством вашего ESP на жестком диске (/dev/sda1 был бы 1), и DIST папка, имя которой характерно для вашего дистрибутива, если вы не создали его. Папка находится в/boot/efi/EFI. Заголовок начальной загрузки является просто заголовком, который вы хотите для своей записи EFI.

прошло некоторое время, так как я переустановил свой ESP, таким образом, я не могу протестировать ни одну из этих команд снова. Вам, возможно, понадобится больше параметров для некоторых, но я вполне уверен, это было всем.

3
27.01.2020, 20:23
  • В зависимости от распределения вы загружаетесь от:

    • для Ubuntu / Debian :

       APT-Get-Get install --reinstall Grub-EFI-AMD64
      
      Или альтернативно:
      apt-get install --reinstall grub-efi
      Update-grub.
      
      Если вышеизложенное даст вам личинка, но не загружаемая
       
    • Для Федора (до 16, может работать для других):

       yum reestall grub-efi
       

      В следующей команде вам необходимо заменить SDX с устройством, которое имеет Раздел EFI, с которого вы хотите загрузить. В - Часть y Вы должны заменить Y С числом разбиения EFI (как в / dev / sdxy ).

       efibootmgr -c --disk / dev / sdx --part y
      efibootmgr -v # проверить новую запись под названием Linux, есть
       
      • Теперь типа Ctrl + D , чтобы выйти из Chroot, размонтируйте все и перезагрузите:

      для i в / sys / proc / dev / pts / dev; DO SUDO UOUNT / MNT $ I; сделано sudo umount / mnt / boot / efi # Пожалуйста, сделайте это. Поврежденные разделы EFI не приятно sudo umount / mnt Sudo Reboot

Вам может потребоваться адаптировать это к вашим потребностям

Источник: SU

1
27.01.2020, 20:23

Когда вы не уверены в таких вещах, как разметка, попытайтесь спасти то, что вы можете и стереть диск (или, по крайней мере, LVM/GPT метаданные, по крайней мере, некоторые из них находятся не только в начале блочного устройства IIRC). Это может сэкономить вам немного времени (в прошлом веке BIOS, PTBL и MBR имели три различных представления о том, что такое геометрия диска).

Если бы вы действительно могли повернуть ситуацию вспять, вы бы здесь не спрашивали (не обижайтесь, я тоже прострелил себе ногу этой книгой на "Next").

Если вы все равно захотите с этим замутить, начните со спасательного изображения (бесстыдная вилка: я бы использовал эту ) и посмотрите на

  • efibootmgr
  • blkid /dev/sdX

Вы тоже можете найти Книги Рода на EFI полезными.

Удачи.

1
27.01.2020, 20:23

Это небольшое, но важное замечание:

В большинстве случаев, когда вы получаете Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables. , это связано с тем, что вы не загрузились с использованием UEFI. Эти переменные отображаются только при загрузке системы с UEFI, с помощью CSM они не включены... так что это проблема курицы и яйца, чтобы настроить UEFI, нужно загрузиться с UEFI! :)

Так что попробуйте настроить как можно больше, затем возьмите образ rEFInd usb или CD и используйте его для загрузки системы в первый раз. После этого завершите настройку без проблем.

0
27.01.2020, 20:23

Это высоко в Google, но все остальные только частично полный, по крайней мере, для кого-то в моей ситуации.

Мой компьютер уже дважды (и еще больше, зная мою удачу) потерял информацию о том, что моя установка Debian 8.2 существует. Это может как-то быть вызвано ошибкой в ​​моей прошивке UEFI и/или использованием слота SATA, которого официально не существует... или, может быть, какая-то программа мешает разделу или самому SSD подозрительно... не знаю.

Во всяком случае, в первый раз я так рано все настроил, что просто полностью переустановил. Это исправило это. Но это было немного кувалдой.

На этот раз это невозможно. Я потратил слишком много времени на свою конфигурацию!

Сегодня мой более диагностический подход показал, что (по крайней мере, на этот раз) причина была не — или не только — прошивка «забыла» о существовании раздела EFI — но также указанный раздел каким-то образом был поврежден. Опять же, я не могу это объяснить: это может быть дрянная прошивка, ужас несвязанной файловой системы или что-то совсем другое. Я просто должен иметь дело с этим, я думаю.

Симптомы были следующие:

  • Мой UEFI внезапно перестал знать о существовании debian загрузочного раздела EFI
  • Удобный efibootmgr теперь сообщал о диске как о старом типе BIOS, не EFI
  • Я не мог просто монтировать как /boot/efi, так как...
  • ...надежный fsck пожаловался на то, что загрузочный сектор отличается от намерения/резервной копии, и на поврежденный корневой узел FAT (термин dat) или что-то в этом роде
  • Почти все было заполнено, в общем, вот что я имею в виду .

Итак, вот полный и аргументированный список того, что я сделал, чтобы это исправить (на данный момент?):

  • скачал захватывающий rEFIt @http://refit.sourceforge.net /
  • использовал качественную программу Win32 Disk Imager, известную как «продолжение без названия» @ http://sourceforge.net/projects/win32diskimager/ на заимствованном ПК, чтобы записать rEFIT на USB-накопитель
  • , который принес очень приятную новость о том, что мой раздел / все еще не поврежден
  • загрузил указанный раздел
  • переформатировал ошибочный раздел EFI как mkdosfs -F 32 /dev/sdXN - замените свой собственный KNAME - и избегайте их во всех случаях, кроме временных ситуаций во время выполнения, потому что они вызывают проблемы, если диски перемешаны
  • переустановил GRUB на недавно отформатированный раздел с помощью grub -install /dev/sdXN
  • перезагрузился из моего воскресшего раздела EFI - застрял в режиме восстановления, потому что он все еще был в файле /etc/fstab со своим старым UUID, вызывая systemd для отказа от зависимостей
  • переписал /etc/fstab для ссылки на пути типа /dev/disk/by-id/ata-EVILCORP-C3PO-partN для всех дисков - поскольку (A) KNAME является рискованным и (B) UUID меняются, если вам вдруг придется переформатировать, как бедный я...
  • волшебным образом вернулся к адекватности нормально загружаемого Debian. на данный момент.

Как говорится, «до следующего раза» — пожалуй, буквально. Может быть, это поможет какой-нибудь другой заблудшей душе, лихорадочно ищущей в Google какой-нибудь неисправный одолженный ПК.

0
27.01.2020, 20:23

Теги

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