Инструменты пользователя

Инструменты сайта


клонирование_os_на_внешнюю_или_внутреннюю_sd_карту

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

клонирование_os_на_внешнюю_или_внутреннюю_sd_карту [2009/11/21 22:22] (текущий)
dik создано
Строка 1: Строка 1:
  
 +
 +======Клонирование системы на внутреннюю/​внешнюю карту======
 +
 +===АХТУНГ!!===
 +
 +Это уничтожит **ВСЕ** данные на вашей карте! не забудьте их **СОХРАНИТЬ** куда подальше
 +
 +**Вы делаете это все на свой страх и риск! ДАННЫЙ ПРИМЕР ДЛЯ ВНУТРЕННЕЙ КАРТЫ. ЗАМЕНИТЕ //mmcblk0// на //mmcblk1// и //INT// на //EXT// для внешней!!!**
 +
 +
 +
 +По сути вся операция идет в четыре этапа:
 +  - Разбиентие карты на партиции,​ форматирование
 +  - Монтирование флеша на одну папку и партиции карты на другую
 +  - Копирование из папки в папку :P
 +  - Настройка и установка бутлоадера
 +
 +Самый хреновый - первый. Начнём :)
 +
 +
 +====Разбиение карты а партиции====
 +
 +
 +Для ​ начала надо знать, какие ​ карты и что где вообще:​
 +
 +
 +  * ///​dev/​mtdblock4//​ - внутренний флеш, партиция 4(где наша система)
 +  * ///​dev/​mmcblk0//​ - внутренняя карта
 +    * ///​dev/​mmcblk0p1//​
 +    * ///​dev/​mmcblk0p2//​
 +    * ///​dev/​mmcblk0p3//​
 +    * ///​dev/​mmcblk0p4//​
 +  * ///​dev/​mmcblk1//​ - внешняя карта
 +    * ///​dev/​mmcblk1p1//​
 +    * ///​dev/​mmcblk1p2//​
 +    * ///​dev/​mmcblk1p3//​
 +    * ///​dev/​mmcblk1p4//​
 +
 +
 +Я разбил внутреннюю карту на 3 партиции(с помощью //fdisk//, не забыв про флаги совместимости):​
 +
 +  - vfat 512Mb ///​dev/​mmcblk0p1//​
 +  - ext2 1500Mb ///​dev/​mmcblk0p2//​
 +  - swap (все оставшееся от 2гб) ///​dev/​mmcblk0p3//​
 +
 +
 +Отформатировал:​
 +  mkfs.vfat /​dev/​mmcblk0p1
 +  mkfs.ext2 /​dev/​mmcblk0p2
 +  mkswap /​dev/​mmcblk0p3
 + 
 +
 +И подгрузил модули ядра для дальнейшей работы с картой:​
 +
 +  insmod /​mnt/​initfs/​lib/​modules/​2.6.21-omap1/​mbcache.ko
 +  insmod /​mnt/​initfs/​lib/​modules/​2.6.21-omap1/​ext2.ko
 +
 +На этом часть 1 кончилась :)
 +
 +
 +====Монтирование====
 +
 +
 +  mkdir /os
 +  mkdir /card
 +  mount /​dev/​mmcblk0p2 /card
 +  mount -t jffs2 -o ro /​dev/​mtdblock4 /os
 + 
 +
 +====Перенос====
 +
 +
 +  tar cf - -C /os . | tar xf - -C /card
 +  umount /os
 +  umount /card
 +  rmdir /os
 +  rmdir /card
 +
 +
 +====Бутлоадер====
 +
 +
 +Качаем утилиту [[http://​fanoush.wz.cz/​maemo/​initfs_flasher.tgz|initfs_flasher]]
 +
 +Распаковываем:​
 +  tar zxf initfs_flasher.tgz
 +
 +И редактируем конфиг:​
 +  vi bootmenu.conf.n8*.example
 +  mv bootmenu.conf.n8*.example bootmenu.conf
 +
 +
 +Вот в такой:
 +
 +  MENU_TIMEOUT=10
 +  MENU_MIN=1  ​
 +  MENU_1_NAME="​SD card, partition 2, ext2"
 +  MENU_1_ID="​mmc2"​
 +  MENU_1_DEVICE="​${INT_CARD}p2"​
 +  MENU_1_MODULES="​mbcache jbd ext2"
 +  MENU_1_FSTYPE="​ext2"​
 +  MENU_1_FSOPTIONS="​noatime"​
 +  [ -d "/​sys/​block/​${INT_CARD}/​${MENU_2_DEVICE}"​ ] || MENU_2_NAME="​(${MENU_2_NAME}) N/A"
 +  MENU_2_NAME="​Power off"
 +  MENU_2_ID="​off"​
 +  MENU_MAX=2
 +
 +
 +Шьём, запустив //​initfs_flash//​
 +  sudo chmod +x initfs_flash && sudo ./​initfs_flash
 +
 +
 +Отвечаем //yes// на все вопросы:​
 +
 +  * Are you sure to continue?
 +  * Remove unneeded extra (and factory testing) stuff?
 +  * bootmenu.conf found, do you want to add it to initfs? **(Если этого вопроса так и не было, значит что-то не так)**
 +  * Ready for flashing this image?
 +
 +
 +После прошики не ребутимся,​ а жмём //Ctrl+C//
 +
 +
 +Теперь надо настроить вызов бутменю. Если мы хотим, что бы оно появлялось всегда,​ то
 +
 +  sudo chroot /mnt/initfs cal-tool --set-root-device ask:mmc2
 +
 +иначе //ask:// надо убрать,​ тоесть
 +
 +  sudo chroot /mnt/initfs cal-tool --set-root-device mmc2
 + 
 +
 +Так мы поставили пункт меню по-дефолту. Если приспичит грузиться изнутри,​ жмем Home при включении и выбираем **Internal Flash**. Всё, //reboot// и девайс грузится с внутренней SD карты, наличие свопа (///​mmcblk0p3//​) проверяется командой //free//.
 +
 +Завершающий штрих:
 +
 +открываем '''/​usr/​sbin/​osso-mmc-unmount.sh'''​
 +
 +Ищем кусок
 +
 +  if [ $? = 0]; then
 +  umount $MP 2> /dev/null
 +  RC=$?
 +  else
 +
 +и заменяем строку
 +  umount $MP 2> /dev/null
 +на
 +
 +  if ["​$MP"​ != "/"​];​ then umount $MP 2> /dev/null; fi
 +
 +\\
 +\\
 +**Готово!**
 +\\
 +\\
 +\\
 +(C)[[http://​kynpu.ru|Xlab]]
клонирование_os_на_внешнюю_или_внутреннюю_sd_карту.txt · Последние изменения: 2009/11/21 22:22 — dik