LINUX.ORG.RU

Загрузка с SD


0

0

Доброго времени суток, ЛОРовчане! Имеем Acer Aspire One 110 с установленным Арчем на внутреннем SSD. Имеем второй Grub, который его стартует.

Захотелось попробовать последнюю Ubuntu Netbook Remix. Загрузил с флэшки, посмотрел, понравилось. Решил поставить на зверька, чтобы побаловаться более подробно. Разумеется, с сохранением рабочей системы. Установка много времени не заняла (что интересно, вопросов было задано меньше, чем когда-то задавала винда), в качестве места назначения указал /dev/mmcblk0p1 (первый и единственный раздел на SD карте), grub поставил на /dev/mmcblk0 (т.е. в MBR SD карты). Думалось, что проблем не будет, но не тут-то было. Рабочий grub не видит SD карты. Решил, что нужно просто подгрузить нужный модуль (навроде mmc_core для ядра), однако безотказный обычно гугль дал мне от ворот поворот :(. Посмотрел, что Ubunta предложила в своем конфиге grub'a - там вообще ересь.

После нескольких часов поисков было найдено вот это решение - http://www.a110wiki.de/wiki/Booting_from_SD. Однако, похоже, оно не работает (или мой бубен недостаточно крут для него).

Итак, внимание, вопрос: Каким образом заставить grub увидеть карту SD, или ядро новой системы придется загружать с внутреннего SSD и потом уже переключаться в новую систему? (Совсем не представляю, как это сделать).

З.Ы. В AAO110 НЕ поддерживается загрузка с SD карт средствами BIOS. Кардридеры висят на PCI, если мне не изменяет память

★★

Вынести /boot на ssd или руками скопировать ядро в арчевский бут и добавить в арчевскую загрузку пункт для убунты.

vga ★★
()

>или ядро новой системы придется загружать с внутреннего SSD и потом уже переключаться в новую систему? (Совсем не представляю, как это сделать).
Кидаем куда-нибудь в видимое рабочим грабом место ядро и initramfs, прописываем его, не забывая о корректном root. Естественно, в ядре или initramfs должна быть поддержка SD, но она там скорее всего есть. А в чём проблема?

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

С этого я и начинал

<quote>Вынести /boot на ssd или руками скопировать ядро в арчевский бут и добавить в арчевскую загрузку пункт для убунты.</quote> Это было первое, что я сделал

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

Мой grub.cfg

set timeout=1
set default=0

# (0) Arch Linux
menuentry "Arch Linux" {
set root=(hd0,1)
insmod 915resolution
915resolution 5c 1024 600
linux /boot/vmlinuz-one-dev root=/dev/disk/by-uuid/<мой UUID SSD> ro video=intelfb vga=604
initrd /boot/kernel26-one-dev.img
}

# (1) Arch Linux standart
menuentry "Arch Linux standart" {
set root=(hd0,1)
linux /boot/vmlinuz26 root=/dev/disk/by-uuid/<мой UUID SSD> ro
initrd /boot/kernel26.img
}

# (0) Ubuntu
menuentry "Ubuntu" {
#set root=(hd0,1)
linux /boot/vmlinuz-2.6.32-21-generic root=/dev/disk/by-uuid/<UUID моей SD карты> ro init=/kexec-sd
initrd /boot/initrd.img-2.6.32-21-generic
insmod ext2
}

Содержимое /kexec-sd:

#!/bin/sh

# Start udevd so that new /dev/mmcblk* devices appear dynamically.
udevd &

# Load the required modules for SD card access.
modprobe mmc_core
modprobe mmc_block
modprobe vcrdrm

# Wait until the /dev/mmcblk* devices appeared (but at most 10 seconds).
udevsettle --timeout=10

# Mount the /boot partition of the SD card on /mnt.
mount -t ext4 /dev/disk/by-uuid/<UUID моей SD> /media/dvd

# Load the kernel and the respective initrd from the SD card.
kexec -l /media/dvd/boot/vmlinuz-2.6.32-21-generic --append="root=/dev/disk/by-uuid/<UUID моей SD> cryptopts=target=crypt0,source=/dev/disk/by-uuid/<UUID моей SD>,lvm=vg--whole-lv--root" --initrd=/media/dvd/boot/initrd.img-2.6.32-21-generic

# Now boot the kernel.
kexec -e

Тот vmlinuz и initrd, что в grub.cfg - они дефолтные ubuntu

dumal ★★
() автор топика
Ответ на: Мой grub.cfg от dumal

inux /boot/vmlinuz-2.6.32-21-generic root=/dev/disk/by-uuid/<UUID моей SD> ro

initrd /boot/initrd.img-2.6.32-21-generic

Вот так не срабатывает? Если не срабатывает, надо модули для карты в инитрд впихнуть. Но не помню как.

vga ★★
()
Ответ на: Мой grub.cfg от dumal

>#set root=(hd0,1)
Зачем #? Где граб будет искать ядро?

root=/dev/disk/by-uuid/<UUID моей SD карты> ro init=/kexec-sd

root=/dev/disk/by-uuid/<UUID моей SD> cryptopts=target=crypt0,source=/dev/disk/by-uuid/<UUID моей SD>,lvm=vg--whole-lv--root


И что из этого кривое?
На тему mkinitcpio или что там в убунте должна быть статья в бубунтовике.
Кстати, в принципе, можно запустить бубунту с арчевым ядром.

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

Re

[qoute] Кстати, в принципе, можно запустить бубунту с арчевым ядром. [/qoute]

Кажется, это из области извращений :)

[qoute] inux /boot/vmlinuz-2.6.32-21-generic root=/dev/disk/by-uuid/<UUID моей SD> ro

initrd /boot/initrd.img-2.6.32-21-generic [/qoute]

Нет, это не срабатывает. Груб не видит мою карту, не может распознать ее UUID, поэтому пытаюсь сделать через внешний kexec-sd.

Буду пробовать делать так: На внутреннем SSD создам маленький раздел, туда пропишу /boot ubunt'ы, все ее остальное содержимое поставлю на SD, авось прокатит.

dumal ★★
() автор топика
Ответ на: Re от dumal

>Груб не видит мою карту, не может распознать ее UUID
Грубу пофиг твоя карта и её UUID, он грузит ядро со своего /boot. Рут на UUID — это задача ядра, а точнее init'а, расположенного в initcpio.

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

спс

Спасибо, буду пробовать. Видимо, придется еще пересобирать ядро Ubuntu, чтобы модули, необходимые для SD, были вкомпилены в него статически

dumal ★★
() автор топика
Ответ на: спс от dumal

Только вот вопрос: как заставить груб увидеть рут систему на SD? Какие параметры передать ядру, чтобы он грузил именно ее?

dumal ★★
() автор топика
Ответ на: спс от dumal

Да не ядро, initrd, как тебе два раза уже написали. Конфиг в /etc/initramfs-tools. Там есть файл modules, ЕМНИП надо вписать список модулей для sd (тот, что у тебя в скрипте) и сделать update-initramfs. Затем скопировать новый инитрд к себе на ССД. Но это все по памяти, убунты нет у меня сейчас.

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

Спасибо всем, получилось. С SD, правда, тормозно очень, но на безрыбье...

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