Решение проблемы с «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. То есть получится, что система у вас новая, а все пользовательские файлы на том же самом месте — как и до переустановки.


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

27 комментариев to Решение проблемы с «error: attempt to read or write outside of disk «hd0″»

  1. Max:

    Alexey! Мы от всего сердца благодарим тебя за этот труд. СПАСИБО ТЕБЕ ЗА ЭТУ ОЧЕНЬ НУЖНУЮ И ИНТЕРЕСНУЮ ТЕМУ. СПАСИБО!!!

  2. Max:

    Alexey привет!  Благодаря твоим урокам я наконец то смог установить kali linux туда куда хотел - на жесткий диск, которого раньшен  не видела моя система. Но столкнулся с еще одной проблемой. Я никак не могу обновить kali linux. Обновление останавливается на появлении окна - "Настраивается wireshark-common" с неактивной кнопкой "Ок". Что делать подскажи пожалуйста! Как исправить эту проблему? Да, и чтобы не отнимать у тебя время в дальнейшем, я распишу весь ход действий которые я проделал. Как только я вошел в систему первым делом я проверил репозитории. С ними оказались проблемы, но я исправил. После я ввел команды чтобы обновить систему - apt-get update и apt-get dist-upgrade. После неудачной попытки обновления я  попробовал их исправить командой dpkg --configure -a затем попытался привести систему с нарушенными зависимостями в норму командой sudo apt-get install  -f -y. Затем sudo apt-get autoremove -y. К сожалению ничего не помогает. Остается только просить помощи у тебя))) Кстати с этой проблемой, судя по обсуждениям на различных форумах сталкиваются очень многие, но никакого ответа там я не нашел. Alexey помоги пожалуйста!

    • Alexey:

      А вы её как, мышкой кликаете? Это консоль, для переключения на саму кнопку используйте клавишу TAB, а для нажатия Пробел или ENTER.

  3. Max:

    Alexey спасибо дорогой друг за ответ!! Я сейчас обязательно попробую!!!

  4. Max:

    Alexey если честно, то я уже почти совсем отчаялся.. У меня еще появились проблемы, что отсутствуют адаптеры wifi … То есть заходишь в параметры, а там пишет, что "Адаптеры wifi не найдены" Ты уж прости что так много вопросов…. Просто когда я устанавливал на внешний жесткий диск, то в этой вкладке уже отображались доступные wifi сети… Может в этом тоже подскажешь?! Пожалуйста!!

    • Alexey:

      Не совсем понимаю, где именно смотрите. В правом верхнем углу есть иконка для управления сетями — посмотрите, видны ли там сети Wi-Fi. Это для подключения к Wi-Fi сетям.

      Чтобы просто посмотреть, какие Wi-Fi адаптеры подключены к системе, выполните в консоли команду:

      iw dev

      Если ничего не показано, значит действительно проблемы с адаптерами.

  5. Max:

    Дорогой Alexey!! Спасибо тебе за эту подсказку про кнопку Tab, ну где была неактивна кнопка "ОК". Сколько я промучался… СПАСИБО ТЕБЕ ОГРОМЕННОЕ!! А по поводу wifi, я сейчас пропробую сделать так как Вы сказали… Просто раньше я нажимал на значок гаечного ключа, (там где кнопка звука открывается меню), окрывались адаптеры wifi и был список всех доступных сетей, а сейчас его просто нет… Но я сейчас сделаю как Вы сказали.

  6. Max:

    Alexey, после введения команды iw dev вот что получилось:

    iw dev
    phy#0
        Interface wlan0
            ifindex 3
            wdev 0x1
            addr 67:dd:92:24:2d:8e
            type managed
            txpower 0.00 dBm

  7. Max:

    Alexey, привет еще раз! В общем покопался еще на форумах и вот что посоветовали по поводу "Адаптеры wifi не найдены. Убедитесь, что wifi адаптер вставлен в разъем и включен"… Прошу тебя оцени и вынеси свой вердикт правильно это или нет - Решение:
    1)apt-get install wicd
    2)service network-manager stop
    3)update-rc.d network-manager disable
    4)update-rc.d wicd enable
    5)service wicd start
    Перезагрузить

    Или:

    ifconfig
    iwconfig
    cd ~/Desktop
    wget http://linuxwireless.org/download/com
    tar -jxvf compat-wireless-2010-06-26-p.tar.bz2
    ls
    cd compat-*
    ls
    make unload
    make load
    clear
    iwconfig

    • Alexey:

      Судя по командам — им уже восемь лет, надеюсь, вы их не выполняли на своей системе — особенно второй набор, где надо что-то загрузить и установить. Эти команды совершенно лишние, вообще не надо ничего устанавливать, всё уже есть в системе.

      Адаптер найден, предыдущая команда показывает имя его сетевого интерфейса wlan0. По какой-то причине, адаптер в состоянии DOWN (как бы выключен).

      Попробуйте перевести адаптер в состояние UP (включить) следующей командой:

      sudo ip link set wlan0 up

      По идее, адаптер должен включаться автоматически, если запущен NetworkManager. А он в Kali Linux работает по умолчанию, если вы делали какие-то «кастомизации и тюнинги».

  8. Max:

    Уважаемый Alexey! По моему у меня проблема с адаптером wifi на основной машине. Потому как на другом ноутбуке kali linux видит абсолютно все сети. Alexey спасибо Вам огромное за советы и вообще))) 

  9. Max:

    Alexey привет уважаемый человек! После команды включения wifi адаптера вот что вышло - RTNETLINK answers: Operation not possible due to RF-kill Наверное все-таки дело в самой основной машине…(((

     

    • Alexey:

      Эта команда должна помочь:

      sudo rfkill unblock wlan

      Затем

      sudo ip link set wlan0 up

      Если не сработает, то дайте знать - проблема пустяковая, разберёмся.

  10. Max:

    Alexey вот что получилось в итоге -

    RTNETLINK answers: Operation not possible due to RF-kill

    • Alexey:

      Может быть тогда

      sudo rfkill unblock all

      (не помню уже точно)

      Ещё напишите, что выводит

      sudo rfkill --output-all
      
  11. Max:

    Alexey все сделал вот результат -

    sudo rfkill --output-all
    rfkill: нераспознанный параметр «--output-all»
    Try 'rfkill --help' for more information.

  12. Alexey:

    Значит в Kali Linux

    sudo rfkill list

    Команда sudo rfkill unblock all не помогла?

  13. Max:

    Alexey я сейчас собрался переустановить вообще систему своей основной машины. Купил новый диск, а потом обязательно тебе напишу! Alexey спасибо тебе огромное за твои драгоценные для меня советы!

  14. Max:

    Alexey привет! Оказывается вся проблема была в основной машине - не работал wifi адаптер.

  15. Max:

    Alexey, а ты не поможешь советом с проблемой в windows 7? Уже перелопатил кучу информации, но к сожалению без помощи профессионала мне не обойтись. Alexey, подскажи пожалуйста что делать когда windows не может выключиться и не может перезагрузиться даже после полной установки? На вирусы проверял в безопасном режиме всеми возможными антивирусами от имени администратора. Не помогло… Полностью переустановил систему, тоже не помогло. Все также не выключается и не перезагружается. Помоги пожалуйста Alexey!

    • Alexey:

      У меня тоже была похожая проблема — я нажимал кнопку выключить, система вроде как собиралась выключаться, а потом сразу опять выбрасывало на рабочий стол. Правда, там была очень многострадальная система: с ноутом шла Windows 8, потом обновилась до Windows 8.1, потом до Windows 10. Потом ноут помер — я конвертировал диск из GPT в MBR и поставил в старый компьютер. После покупки нового ноута я вставил системный диск в SATA-USB переходник и стал уже загружаться на новом ноуте. В общем, этой системе уже больше пяти лет и она повидала слишком многое. В том числе ушатывание до нерабочего состояния и последующую реанимацию. Это я к тому, что если система является проблемной с новья — то лучше поискать другую сборку. Может, что-то авторы «переоптимизировали».

      Так вот, в какой-то момент у меня была проблема с выключением. Для нормального завершения работы я использовал команду:

      shutdown -s -f

      Спустя некоторое время проблема сама ушла — может быть, что-то обновилось в системе.

  16. Max:

     Alexey привет! Спасибо огромное что ответил. Скажи пожалуйста, а как действительно научиться разбираться в KALI LINUX, так же как и ты? Очень много информации везде, а выделить то что действительно нужно для полного понимания системы не могу понять. Дай совет пожалуйста)))

    • Alexey:

      Не считаю что как-то особенно в этом разбираюсь — я и сам в начале процесса обучения (в моём случае самообразования). А так действия очень простые: читать и пробовать, читать и пробовать, читать и пробовать… и продолжать это постоянно.

      По поводу растерянности что слишком много информации – то это всегда так, когда начинаем изучать что-то из новой для нас области. Нужно просто продолжать изучать и обязательно хотя бы часть пробовать — чтобы не было что в одно ухо влетело, а в другое вылетело. Если заниматься новой темой достаточно долго, то через некоторое время в мозгу сама начнёт выстраиваться система и придёт более глубокое понимание значения новой информации, также появятся свои интересы и приоритеты. Там дальше уже выясниться, что, на самом деле, информации по интересующим вопросам не так уж и много: что-то слишком устарело, что-то слишком поверхностное, что-то дублирует уже изученное или другие источники.

      Вывод: главное продолжать изучение и практиковаться.

  17. Max:

    Многие советуют параллельно изучать английский язык. Ты что думаешь по этому поводу?

    • Alexey:

      Чёрт, я писал длинный комментарий, а потом решил, что он слишком длинный и обрезал. Ладно, вот вырезанная концовка:

      «Лучше если есть базис из знаний об администрировании Linux и о работе компьютерных сетей. Если такого базиса нет, то всё равно это нужно изучать, хотя бы параллельно с изучением инструментов.

      Ну и обязательно учить английский: вся актуальная документация появляется на английском и в моей формуле из первого абзаца «читать и пробовать» - читать лучше оригинальную документацию на английском».

  18. Max:

    Уважаемый Alexey! Еще раз спасибо за ответ. Мне сейчас кажется что это все будет очень долго, но тем не менее желание изучать есть огромное. Буду стараться работать в этом направлении -  изучать и пробовать.

  19. Алексей друг сердечный,а подскажи пожалуйста если данное происшествие

    error : attemp to read or write outside of disk 'hd0' случилось на уже установленной системе,на отдельном диске для системы ,но после того как я поклацал в UEFI ни чего не изменяя,система загрузилась,но очень долгий процесс,дольше обычного на минуту.А ранее до этого момента всё загружалось за 25 секунд.Не могу понять что надо делать,у меня Дебиан.

    Подскажи дорогой.

Добавить комментарий для Max Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *