HackWare.ru

Решение проблемы с «error: attempt to read or write outside of disk "hd0"»

После установки Linux при первой загрузке вы можете столкнуться с упомянутой в теме ошибкой.

Чтобы понять причину, буквально пара слов о процессе загрузки. Всё начинается с того, что БИОС инициализирует устройства, в том числе жёсткие диски; после этого БИОС передаёт управление загрузчику GRUB, указывая место на диске, где тот должен прочитать конфигурационный файл и другие необходимые для него файлы.

БИОС — довольно старое изобретение и у него есть ряд ограничений. Например, ни один БИОС не способен работать с дисками более 2 Терабайт. Поэтому если вы установили систему на такой диск, то вполне возможно, что БИОС не справится с загрузкой операционной системы.

Но это не всё — некоторые БИОСы сделаны особенно неудачными — они не могут указать GRUB на файлы, которые расположены слишком далеко от начала диска — необязательно за пределами 2 Терабайт, возможно, намного ближе.

Как происходит запись на диск

Это кажется контринтуитивным, но информация на диск не записывается последоватльно — то есть если на диске занято 10% места, это не означает, что заняты именно первые 10% - информация может быть разбросана как угодно. Умные диски специально записывают информацию в разные области — чтобы диск изнашивался равномерно.

Поэтому, когда вы делаете установку операционной системы, то папка /boot может оказаться в любом месте — даже ближе к концу диска.

Ошибка «попытка записи за пределами диска "hd0"»

Итак, в результате стечения ряда обстоятельств:

  • используется БИОС (а не EFI)
  • большой размер диска
  • неудачный БИОС
  • папка /boot записалась слишком далеко от начала диска

можно получить ошибку:

error: attempt to read or write outside of disk "hd0"

Отсюда следуют выводы:

  • при установке на один и тот же диск ошибка может возникнуть, а может и не возникнуть (в зависимости от того, на какое место на диске записана папка /boot)
  • переустановка GRUB, которую советуют на некоторых сайтах, может помочь, а может и не помочь — опять же, в зависимости от того, куда будет перезаписана папка /boot
  • если ваш компьютер поддерживает EFI, то вы с этой ошибкой никогда не столкнётесь
  • проблемный диск вполне может загрузиться на другом компьютере (есть нюансы — на другом компьютере может быть EFI или такой же неудачный БИОС)

И самый главный вывод — если папку /boot записать на отдельный раздел и расположить этот раздел в начале диска, то это почти наверняка разрешит проблему.

Как разместить папку /boot на отдельном разделе.

Я покажу на примере Debian и производных (Kali Linux, например). С другими дистрибутивами действия сходные — но вам нужно предварительно поискать информацию, как в процессе установки вынести папку /boot в отдельный раздел.

Особо отмечу, если у вас компьютер поддерживает EFI (а этом большинство компьютеров, выпущенных за последние лет 8-10), то с этой проблемой вы не столкнётесь и вам не нужно беспокоиться.

Итак, в начале установка выполняется как обычно.

Затем, когда вы дойдёте до разметки диска — выберите «Ручную разметку»:

Выберите диск для разметки:

Выбираем Да:

Выберите Свободное место:

Создаём новый раздел:

Делаем не очень большой размер — 1 Гигабайта хватит более чем. На самом деле, будет использовано менее 100 Мегабайт. На всякий случай лучше выделить более 200 Мегабайт:

Первичный:

Обязательно Начало — иначе бессмысленно:

Перейдите на Точку монтирования:

Выберите /boot — статические файлы системного загрузчика:

Поставьте метку Загрузочный. Выбираем Настройка раздела закончена:

Теперь переходим на свободное место и создаём ещё один раздел:

Далее как с первым размером — установите размер. Выберите Логический раздел.

В качестве точки монтирования должен быть указан / - этот символ означает корневую файловую систему:

Получаем:

Кстати, под основной раздел вы можете использовать не всё свободное место — можете оставить место на диске под другие нужды. Также вы можете выделить Гигабайт 10 под SWAP — раздел подкачки (используется когда не хватает оперативной памяти). Для этого, когда устанавливаете свойства диска, выберите «Использовать как», а там «раздел подкачки».

Далее установка операционной системы вновь продолжается в обычном режиме.

Заключение

Проблема может возникнуть как с внутренним жёстким диском, так и с внешним USB диском. Проблема может возникнуть внезапно — даже на диске, который до этого работал нормально — всё дело в «везении» - куда именно будет записана папка /boot. Показанный в этой заметке способ позволит не полагаться на везение, а полностью предотвратить эту проблему.

Кстати, если вы уже всё равно залезли в ручную разметку диска, то рекомендуется выделить ещё один раздел и выбрать его для монтирования папки /home. В результате получится, что система будет на одном разделе, а папка /home, в которой размещены файлы пользователей — на другом. Поэтому при следующей переустановке системы файлы из папки /home не будут удалены (если вы не сделаете это вручную). И вы вновь сможете подключить этот раздел для монтирования в качестве /home. То есть получится, что система у вас новая, а все пользовательские файлы на том же самом месте — как и до переустановки.

История обновлений

No update history yet.

Рекомендуется:
↑