Пропустить / сократить чтение таблицы разделов на сломанном диске

Используйте printfвместо echo:

.
$ cat 442817.sh
#!/bin/bash
numbers=(120,900 1160,001 80,730 600,165 6,310 1111,203)
for n in "${numbers[@]}"; do
  printf "%10s\n" "$n"
done
$./442817.sh
   120,900
  1160,001
    80,730
   600,165
     6,310
  1111,203
0
16.04.2020, 13:20
1 ответ

Кажется, я уже отвечал на этот вопрос, но сейчас не могу его найти...

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

При полной установке Linux практически невозможно предотвратить сканирование диска на наличие разделов, UUID и других метаданных при каждом его подключении. Ядро определяет таблицы разделов, udev создает ссылки disk/by -uuid и так далее.

Однако поддержка таблицы разделов не является обязательной в ядре (CONFIG_*_PARTITION, *является одним из MSDOS, EFI, MAC,... ). Таким образом, вы можете скомпилировать собственное ядро, которое не поддерживает ни одно из них или отключает их все, а затем (, чтобы также предотвратить сканирование UUID и тому подобное ), использовать его с минимальной средой initramfs, которая содержит только ddrescue.

Это также запрещает вам доступ к разделам на любом из ваших других дисков, если вы не эмулируете его с помощью losetupи смещения / размера, или, альтернативно, сопоставителя устройств (dmsetup). Так что вам придется обойти отсутствие разделов в целом.

  • to limit the number of retries?

Не уверен, что он делает какие-либо повторные попытки, что вы можете сделать, это установить тайм-ауты (в /sys/block/*/device/timeouts), которые, я думаю, будут полезны только в том случае, если диск вообще не отвечает.

Для встроенных -несъемных -устройств можно также использовать параметр ядра libata.force=<port.device>:disable, чтобы полностью отключить его.

0
19.03.2021, 02:28

Теги

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