Основні деталі робочої системи:
Я використовував серверний компакт-диск Ubuntu 12.04 для встановлення сервера.
У мене є 4 диски. На всіх дисках я зробив наступне, подібне до цього способу :
- створив розділ обміну 2 ГБ
- створив розділ 256 Гб / завантаження
- створив розділ RAID10 на 64 ГБ (для root)
- створив великий розділ RAID10, зайнявши решту місця
Я відформатував завантаження як ext3. Я встановив RAID10 на кореневих та великих розділах. Я відформатував корінь один ext4. Я створив логічний том на великому і відформатував його ext4.
Отримана система працює добре, а черевики - чудово.
Деталі проблеми:
Тоді я вирішив задокументувати процедуру відмови. В якості першого кроку я вирішив переустановити grub.
# grub-install /dev/sda
warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
error: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
# grub-install /dev/sdb
warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
error: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
Таким чином, схоже, що він не вдався, але також здається, що він здався і не вніс змін. Тому я перезавантажився. Завантаження не вдалося. Він просто висить на чорному екрані з миготливим курсором приблизно на 4 лінії вниз. Якщо я завантажую, утримуючи "Shift", я отримую слово "GRUB" зліва від курсору, але інтерактивного запиту немає.
У цей момент я використовував завантажувальний ремонт-диск для створення цього звіту: http://paste.ubuntu.com/966531/
Зауважте у вищезгаданому звіті, він говорить, що завантажувач не вказує на правильний сектор для core.img. (sda - це віртуальний cd; sdb - це завантажувальний диск; sdc - це дзеркало sdb, але завантаження не є дзеркальним відображенням, просто окремий неспоріднений розділ є та відформатований ext3; sdd та sde мають місце для завантаження, але він не відформатований)
Потім я завантажився з компакт-диска сервера Ubuntu, запустив систему порятунку і видав наступні команди, які виконані без помилок (де sda - це віртуальний компакт-диск, а b, c, d, e - диски, які були a, b, c , d у попередніх командах grub):
# parted /dev/sdb set 2 bios_grub on
# parted /dev/sdc set 2 bios_grub on
# grub-install /dev/sdb
# grub-install /dev/sdc
У цей момент я використовував завантажувальний ремонт-диск для створення цього звіту: http://paste.ubuntu.com/966561/
Зауважте, що у наведеному вище звіті проблема з core.img відсутня. Здається, це вказує на правильний сектор.
Тепер, якщо я спробую завантажитися, я отримую запит на груб. Якщо я запускаю "set", я бачу, що корінь знайдений і встановлений. Якщо я запускаю "ls /", я бачу свою кореневу директорію з тома raid, включаючи файл ядра vmlinuz. Якщо я набираю "ls / vmlinuz", він говорить "помилка: файл не знайдено." Він говорить про ту саму помилку, якщо я використовую команду "linux", щоб спробувати завантажити ядро. Файл vmlinuz не вказаний, якщо я використовую "ls -l /".
Надмірно деталізовані деталі, якщо ви хочете дотримуватися:
Я помітив, що також немає /boot/grub/grub.cfg, тому я побіг
# grub-mkconfig -o /boot/grub/grub.cfg
Але проблема залишається.
Якщо я використовую інструмент "gptsync", в цій поведінці змін не буде.
Завантажувально-відновний диск не буде ремонтувати систему, тому що він хоче завантажуватись із біозаписом із підтримкою EFI. Я коротко вивчив це, але не знаю, як це працює. Я знайшов оболонку UEFI в своїх варіантах завантаження, але я нічого не знаю про це, і не бачу, як змінити запуск звідти (наприклад, для завантаження CD з цієї оболонки EFI).
Я також читав цю сторінку , але Ubuntu не поставляється з командою "grub", тому я не можу точно слідувати за нею. Я міг би просто встановити цю команду, але мені цікавіше дізнатись, як інсталятору Ubuntu вдалося встановити її, а не іншим налаштуванням. Він використовував блокові списки?
Ось вихід розлученого під час завантаження на завантажувальний ремонт-диск (де тут sdb - перший жорсткий диск, sda при завантаженні з диска, а "boot" змінюється на "bios_grub" у 2-й посилання вставки):
Model: ATA Hitachi HUA72303 (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 2000MB 2000MB linux-swap(v1) swap1
2 2000MB 2256MB 256MB ext3 boot1 boot (this says bios_grub in 2nd link)
3 2256MB 66.3GB 64.0GB root1 raid
4 66.3GB 3001GB 2934GB data1 raid
Ось непов’язана супер-стара віртуальна машина для порівняння (для всіх, хто не знає завантажувальний ремонт-диск ): http://paste.ubuntu.com/966799/
Ось остання паста із проблемної системи після запуску вищезгаданого grub-mkconfig, а також встановлення "bios_grub" назад до "boot". http://paste.ubuntu.com/966808/
Порівнюючи обидві, це виглядає цікаво:
sdb2: __________________________________________________________________________
File system:
Boot sector type: Grub2's core.img
Boot sector info:
Mounting failed: mount: unknown filesystem type ''
md/bcserver8:0: ________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 12.04 LTS
Boot files: /boot/grub/grub.cfg /etc/fstab /boot/grub/core.img
Схоже, у рейду є завантажувальні файли, а sdb2 не відформатований. (незважаючи на це, система завантажилася перед запуском grub-install). З рятувального компакт-диска "mount -t ext3 / dev / sdb2 / boot" виходить з ладу. Але має сенс, що це заплутає речі, оскільки grub використовує розділ 2 явно (2 в команді parted, для якої bios_grub увімкнено).
Тому я зробив щось подібне:
# mkfs.ext3 -L boot1 /dev/sdb2
# mv boot boot_on_root
# mkdir boot
# mount /dev/sdb2 boot
# rsync -avHP boot_on_root/ boot/
# parted /dev/sdb set 2 bios_grub on
# parted /dev/sdc set 2 bios_grub on
# grub-install /dev/sdb
# grub-install /dev/sdc
Потім перезавантажився, і у мене знову чорний екран, жодного запиту. http://paste.ubuntu.com/966848/
Отже, на даний момент я здогадуюсь, що коли біос_груб встановлений, grub встановлюється не в MBR, а не в файлову систему ext3 на ext3, а на сам розділ, як ніби це EFI ... що, очевидно, буде безлад до файлової системи ext3. І з мого короткого читання про EFI, це звучало так, що EFI передбачає, що перший розділ - це завантаження, але в моєму випадку перший - своп, а також він повинен бути FAT, а не чимось незмінним ... так що це робить мало / ні сенс, я все ще повністю втрачений без підказки. [EDIT: тепер у мене є поняття ... пропустіть трохи для оновлення]
І тепер, коли я натискаю ремонт на завантажувальному-ремонтному диску , він запитує щось інше. Востаннє помилка була захована під вікном, і мені довелося перетягнути іншу, щоб побачити її. Цього разу головне вікно відсутнє, а нове вікно говорить:
GPT detected. You may want to retry after creating a
BIOS-Boot partition (>1Mo, flag). Do you want to continue?
Тож я натиснув так, і він сказав, що він успішно відреставрувався, і створив іншу пасту: http://paste.ubuntu.com/966862/
Але в мене все ще є чорний екран із миготливим курсором.
Тепер моя теорія полягає в тому, що завантаження перезаписане нежирним не-EFI, що є лише грубим кодом, який інакше був би в секторах 0-63 раніше. На щастя я наткнувся на дуже чітку заяву на цій сторінці, яка, ймовірно, завершила моє розуміння того, що все це означає. А потім після того, як я це виявив, Джеремі опублікував відповідь, яка, якщо це правда, підтверджує, що це ключова концепція, яка відсутня. http://blog.psych0tik.net/2011/08/grub-embedding-blocklists-and-bios_grub-partitions/
Запитання:
Що відбувається? Чому груб не повинен завантажуватися? Чому на ньому написано "файл не знайдено"?
Чому grub не хоче встановити без цього налаштування, яке я встановив з розділеним (який не встановлений установщиком Ubuntu)? Я подумав, що все, що мені потрібно для його встановлення, - це окремий / завантажувальний механізм, який не є в LVM, ані в програмному RAID, оскільки мій корінь знаходиться в RAID, а таблиця розділів - GPT.
Як установник Ubuntu CD встановлює його без цієї проблеми та без налаштування bios_grub?
Я також розглядаю можливість використання ІФІ. Якщо це гарна ідея, і є стандартний спосіб її налаштувати, я завжди готовий до вивчення нових речей.
Найшвидшою відповіддю, яка зробила б мене щасливим, навіть не відповідаючи на всі мої запитання, - це набір команд, які я можу запустити з рятувального компакт-диска, щоб виправити завантажувач таким же чином, як це зробив установочний компакт-диск. Було б також дуже приємно, якби я міг запускати їх із завантаженою системою замість CD.