- summary Перенос корневой ФС на SD
Отладку удобней выполнять на SD - с ней проще работать на host-системе, к тому же вы не нарушите содержимое NAND c "заводской" прошивкой что актуально для начинающих - достаточно установить перемычку NAND CS и система загрузится с "заводскими" установками. Пример разметки, форматирования SD карты и перенос на нее ФС собранной в buildroot. Модуль SK-SAM9G45-OEM загружается с microSD (разъем находится на самом модуле).
Все действия будем выполнять в консоли. При работе на виртуальной машине потребуется USB-кардридер. Чтобы диск обнаружился в гостевой ОС нужно разрешить для нее отображать USB-кардридер - нажать правую кнопку мышки на иконке с изображением USB-коннектора в правом нижнем углу окна в котором запущена виртуальная машина (третья по счету слева иконка) и отметить ваш кардридер, например у меня
чтобы узнать название диска - смотрим выхлоп dmesg в терминале - нас интересуют последние записи
в данном случае мой диск - sdb с двумя первичными разделами sdb1, sdb2. Размонтируем диски (ОС по умолчанию автомонтирует разделы)
или тоже самое одной командой
Удаляем таблицу разделов
создаем новую таблицу разделов
смотрим какие есть команды
смотрим нашу пустую таблицу разделов
Создаем первичный раздел 16M
Создаем второй первичный раздел. В случае, если двух разделов достаточно, можно отдать под него всё оставшееся место, но может возникнуть ситуация, когда нужен swap раздел (например, при работе с rootfs, созданных на базе универсальных дистрибутивов), в этом случае, следует оставить соответствующее место для третьего раздела. Третий раздел создаётся так же.
Назначаем тип первому разделу
Назначаем тип второму разделу
Если сделали раздел для swap, назначаем тип ему.
Cмотрим новую таблицу разделов (показано без раздела swap)
сохраняем изменения и выходим из программы.
Форматируем первый раздел в fat32
Второй раздел в ext2
Третий раздел, если есть, подготавливаем, как swap
копируем загрузчик, ядро и корневую ФС на SD
Чтобы загрузка пошла с microSD - удалите перемычку NAND CS на модуле.
Несколько замечаний.
1. Название ядра, в данном случае, uImage, должно соответствовать тому, что определено в BOOT.BIN. Загрузчик может предполагать использование и какого-то другого названия.
2. Строка параметров для ядра задаётся в загрузчике, но ядро может быть собрано с параметром CONFIG_CMDLINE_FORCE=y, в этом случае, строка параметров из загрузчика будет проигнорирована, и будет использован набор параметров, заданный при сборке ядра.
_(Строку параметров и название ядра можно поправить прямо в BOOT.BIN посредством какого-нибудь редактора, который допускает работу с бинарными файлами (например, *hiew*, или *mc* в режиме просмотра). Надо только помнить, что нельзя выйти за границу старой строки. Завершаться строка должна нулевым байтом.)_
3. Надо обратить внимание на права файлов в rootfs. Например, в архиве, распространяемом сейчас с http://starterkit.ru, файлы пренадлежат не root, и установлен бит suid. Чтобы эта rootfs получилась работоспособной, надо, до *`sudo umount /mnt`*, выполнить
Следует помнить, что могут быть rootfs с более сложным набором прав, и там нельзя бездумно менять пользователя и группу на root.
4. Второй раздел, возможно, лучше отформатировать в ext3 по причине проблемы с запуском fsck на некоторых платах из-за принудительного монтирования в rw:
5. Может быть, следует почитать про оптимизацию деления SD-карты на разделы.
Например http://blogofterje.wordpress.com/2012/01/14/optimizing-fs-on-sd-card/