LINUX.ORG.RU

grub2 не видит ext2


0

1

Продолжаю эпопею по приучению загрузки системы с flash (точнее с MicroSD). Обычная карточка, 32G. Нормально пишется/читается. fsck прогоняется. Признак загрузки на ext2 установлен.

По техническим причинам разделы на ней созданы: 30G fat 32 и 2G ext2 под boot. Раздел создал в gparted, там же форматировал. Потом даже пробовал вручную mkfs.ext2 -t ext2 /dev/mmcblk0p2. Копируем туда файлы с текущего /boot. Устанавливаем grub2.

grub2-install --recheck --no-floppy --modules=«part_msdos fat ext2» /dev/mmcblk0p2

Выполняется. Перестраиваю конфиг. Гружусь.

error: unknown filesystem.

И всё... ls показывает два раздела на hd0 (карточка) и три на hd1 (ssd ноута). Команда ls (hd0,msdos1)/ показывает пустоту, что логично, fat32 раздел пуст. И это всё. ls (hd0,msdos2)/ - снова ошибка. Почему он не видит ext2? У него там нет случайно никакого дуратского ограничения в стиле старого lilo из серии «гружусь только с первой тысячи цилиндров»?

★★★★★

1. Почему 2 Gb? 50Mb хватает с головой.
2. Я бы попробовал убрать --no-floppy, но это ИМХО.
3.

ls (hd0,msdos2)/ - снова ошибка.

Кто вам сказал, что это msdos? Не fat же! В grub`е в командной строке (e) при наборе (hd0, Нажмите два раза TAB и узрите, как называется раздел.

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

Еще мысль:

menuentry 'Debian GNU/Linux, с Linux 3.0.0-1-486' --class debian --class gnu-linux --class gnu --class os {
	insmod gzio
	insmod part_msdos
	insmod ext2
	set root='(hd0,msdos2)'
	search --no-floppy --fs-uuid --set=root bcfea129-105a-4efb-adca-21ab4fdc49d8
	echo	'Загружается Linux 3.0.0-1-486 ...'
	linux	/vmlinuz-3.0.0-1-486 root=UUID=3aa242c2-fe07-4d22-bc03-58ff609942ca ro  quiet
	echo	'Загружается начальный ramdisk ...'
	initrd	/initrd.img-3.0.0-1-486

Конфиг груба покажите. Может от setroot не туда ставит.

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

Кто вам сказал, что это msdos?

msdos - это тип раздела. Т.е. стандартная таблица. Там ещё есть в арсенале у grub2 gpt и прочие.

Конфиг груба покажите.

Конфиг grub нормальный. Тут до него даже не доходит, вот в чём дело. Т.е. grub ругается не на ошибки в конфиге, а на то, что не может его найти.

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

Блин, я так и пробовал, разумеется. Иначе бы не заработало. Это я здесь копипастой ошибся...

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

Только без p. Чтобы в mbr карты поставить.

atrus ★★★★★
() автор топика

Любопытно. Ограничения там нет, грузи откуда хочешь. Запили модуль hexdump и проверь 1-й блок второго раздела.

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

Если можете, fdisk -l с карточки.

Disk /dev/mmcblk0: 32.5 GB, 32462864384 bytes
255 heads, 63 sectors/track, 3946 cylinders, всего 63404032 секторов
Units = секторы of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000e85cc

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/mmcblk0p1            8192    59209727    29600768    b  W95 FAT32
/dev/mmcblk0p2   *    59209728    63404031     2097152   83  Linux
atrus ★★★★★
() автор топика
Ответ на: комментарий от gadfly

Любопытно. Ограничения там нет, грузи откуда хочешь.

А вот есть, как выяснилось. Пользуясь тем, что linux был свежеустановленный я переустановил систему. После получил тоже самое, но уже с карточкой, сделанной anaconda. Если учесть, что вариант «раздел в начале» отрабатывал без вопросов, то явно имеется какой-то баг.

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

Мне таблица не нравится, но сегодня не осилю. Спать хочу. Копните таблицу по физическим параментрам. За темой слежу.

Andreitsch
()
Ответ на: комментарий от atrus

Ах да, у второго граба есть волшебная переменная debug.

set debug=all, а после он выдает кучу отладочной инфы. Мож пригодится.

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

Я вот удивлен, что он у тебя вообще ее видит. SD/MMC не часто биос читает.

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

Собственно оно работает, но в другом варианте. Когда ext2 раздел идёт первым. Но тогда на такую карточку ругается уже венда, не читает второй fat32 и просит форматнуть карту. :) Хочется найти какой-то компромисс.

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

Написал выше. Если ext2 идёт первым, то всё грузится. Но тогда такую карту не получается вставить в венду.

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

Собственно оно работает, но в другом варианте. Когда ext2 раздел идёт первым. Но тогда на такую карточку ругается уже венда, не читает второй fat32 и просит форматнуть карту. :) Хочется найти какой-то компромисс.

Оба в fat32 или ntfs

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

Не поможет. Но я поборол проблему и сейчас опишу решение, если кому-то пригодится.

Во первых венда (я говорю о семёрочке). Похоже её разработчики считали, что SD - это такие димкеты, что на них разделов не бывает. Т.е. менеджер дисков в венде разделы там видет, а вот автомоунтер нет. Венда тупо пытается примонтировать первый раздел SD-карты, не обращая внимания на остальных. Даже если вы зададите, что буква монтирования у другого раздела - это будет произнорированно. Более того, если вы дадите команду форматировать второй и далее разделы на SD, реально будет отформатирован первый!

С Linux ситуация похожа старой ситуации с загрузчиком lilo, старые версии которого не могли читать HDD за пределом 1024 цилиндра (см. википедию). По этому /boot размещали в начале диска.

Решение оказалось извращённым, но очевидным. Создаём раздел ext2 в начале диска и большой fat32 вторым. Затем открываем карту в обычном fdisk, записываем номера блоков с листинга таблицы разделов, затем удаляем все разделы и создаём их в обратном порядке!

Т.е. раздел fat32 по прежнему находится в конце карты, но запись о нём в таблице разделов становится первой. А запись об ext2-разделе - второй, хотя сам раздел по факту распологается в начале.

Теперь все довольны. grub грузит систему, венда бодро монтирует свой «первый» fat32. :)

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

Решение оказалось извращённым, но очевидным. Создаём раздел ext2 в начале диска и большой fat32 вторым. Затем открываем карту в обычном fdisk, записываем номера блоков с листинга таблицы разделов, затем удаляем все разделы и создаём их в обратном порядке!

Т.е. раздел fat32 по прежнему находится в конце карты, но запись о нём в таблице разделов становится первой. А запись об ext2-разделе - второй, хотя сам раздел по факту распологается в начале.

Я то же самое делал без ручного ковыряния в блоках, через gparted. Там важен порядок, в котором создаются разделы: сначала раздел для винды, оставляя свободное место в начале, а потом линуксовый раздел на этом свободном месте.

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

Это потому, что gparted пишет таблицу через, ну вы поняли. За что его не люблю.

Да, меня такое поведение тоже слегка обескуражило сначала. Но потом, вот, даже пригодилось.

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

Дело привычки. Мне явно указать привычней. Я уважаю чужой выбор.

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