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

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

26 комментариев 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 Alexey:

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

  3. Max:

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

  4. Max:

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

    • Alexey 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 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 Alexey:

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

      sudo rfkill unblock wlan

      Затем

      sudo ip link set wlan0 up

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

  10. Max:

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

    RTNETLINK answers: Operation not possible due to RF-kill

    • Alexey 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 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 Alexey:

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

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

      shutdown -s -f

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

  16. Max:

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

    • Alexey Alexey:

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

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

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

  17. Max:

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

    • Alexey Alexey:

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

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

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

  18. Max:

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

Добавить комментарий

Ваш e-mail не будет опубликован.