LINUX.ORG.RU
ФорумAdmin

grub2 out of disk gpt

 , ,


0

1

Привет ЛОР! Имеется диск на 3ТБ с GPT, и МП с классическим BIOS:

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            4095   1024.0 KiB  EF02  BIOS boot partition
   2            4096      5860533134   2.7 TiB     8300  Linux filesystem

Grub установлен в MBR.

При загрузке получаю сообщение:

error: out of disk.
grub rescue>

Делаю:

ls (hd0,gpt2)/
Получаю список директорий.

Делаю:

ls (hd0,gpt2)/boot

Получаю:

error: out of disk.

Делаю:

ls (hd0,gpt2)/bin
Получаю список.

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

Вопрос: как сказать ФС, чтоб: нашла 28 мегабайт в пределах первых двух терабайт для каталога /boot/* и разместила его содержимое там?

ЛОР, не предлагай мне создать /boot партицию вначале... - Это я и сам знаю что решит проблему.

★★★★★

Последнее исправление: DALDON (всего исправлений: 1)

gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.6

Partition table scan:
  MBR: hybrid
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with hybrid MBR; using GPT.
Disk /dev/sda: 11702087680 sectors, 5.4 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 6D4DEE1F-9616-4C2D-99D2-E31ACD1BE0EF
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 11702087646
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            4095   1024.0 KiB  EF02  BIOS boot partition
   2            4096        41947135   20.0 GiB    0700  Linux/Windows data
   3        41947136     11702087646   5.4 TiB     8E00  Linux LVM

/boot на sda2 (grub2), корень на LVM

vel ★★★★★
()
Ответ на: комментарий от DALDON

Когда-то там был rootfs, а сейчас там лежит загрузчик и resque ядро со своим initrd.

И мне не жалко 20Gb на 5Tb диске :)

vel ★★★★★
()
Ответ на: комментарий от vel

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

Это уже НЕ ИМЕЕТ ОТНОШЕНИЕ к теме, это уже про отдельный раздел:

Может подкажете вот чего:

Например:

Пусть:

md0 - raid1 /boot

md1 - raid5 /

Каким образом мне правильно поставить загрузчик с LiveCD?

Я понимаю что надо сделать с LiveCD:

mount /dev/md1 /mnt/raid5
mount /dev/md0 /mnt/raid5/boot
mount -o bind /dev /mnt/raid5/dev
...
chroot /mnt/raid5
grub-install /dev/sda
grub-install /dev/sdb
grub-install /dev/sdc
grub-mkconfig -o /boot/grub/grub.cfg
update-initramfs -u

Каким образом grub поймёт что /boot ему надобно брать с /dev/md0? Я так понимаю, что он прописывает некий mduid (я смотрел через set в консоли grub)... - Там какая-то прям скриптовая магия при генерации конфигов для grub...

И нужен ли update-initramfs? Что он даёт в данной ситуации? Я забыл его сделать, и у меня такое ощущение что из-за этого, md девайс не может подцепиться и груб кричит, что нет у него девайса для запуска. Как при этом grub соображает где ему искать boot и какие модули для поиска boot пользовать?

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

Дык он смотрит на какой фс находится /boot и определяет какой девайс используется. Так он определяет какие модули ему нужно собрать в свой имидж (fs & disk модули). Если он о чем-то не может догадаться, то ему можно явно указать в прараметрах список модулей. Ты запусти «sh -x grub-install ...» и все увидишь (запуск grub-mkimage).

Не знаю как сейчас, но раньше grub знал только про raid0/1.

Про update-initramfs - ничего не скажу, т.к. у меня такого нет. mkinitrd - более простая и понятная вещь. Если ядро не меняется, то и mkinitrd запускать не нужно.

Если поддержка rootfs,md,dm,root_driver вкомпилена в ядро, то при загрузке оно найдет и соберет рейд ( правда имя у него будет не md0, а md127), а иначе нужно в initrd подпихнуть mdadm.conf и после того как все нужные модули загрузятся, будут найдены с собраны рейды указанные в mdadm.conf.

Зачем использовать mount -o bind ... и chroot? Ему все можно объяснить.

grub-install --boot-directory=/mnt/raid5/boot /dev/...

Все howto на эту тему говорят - нужна маленькая партиция в начале диска для загрузчика. Это избавляет от кучи проблем. Если есть возможность, то переразбей диск.

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от vel

Дык он смотрит на какой фс находится /boot и определяет какой девайс используется. Так он определяет какие модули ему нужно собрать в свой имидж (fs & disk модули). Если он о чем-то не может догадаться, то ему можно явно указать в прараметрах список модулей.

Спасибо. Я предполагал также.

Зачем использовать mount -o bind ... и chroot? Ему все можно объяснить.

Кхм... Ну тоже логично. Скорее всего выходит будет достаточно всего навсего одного параметра: --boot-directory, хотя врядли... Оно потом скорее всего запутается. Будет искать /boot по кривому пути. Надо проверять.

Не знаю как сейчас, но раньше grub знал только про raid0/1.

Насколько я понял уже умеет почти всё на свете.

Спасибо!

DALDON ★★★★★
() автор топика
Ответ на: комментарий от vel

Все howto на эту тему говорят - нужна маленькая партиция в начале диска для загрузчика. Это избавляет от кучи проблем. Если есть возможность, то переразбей диск.

Я создал ему партицию в 1мб. Всё отлично.

DALDON ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.