Orange Pi

Устройства - Devices => Orange Pi PC => Тема начата: rolin от Январь 29, 2016, 01:04:45 pm

Название: Как слить текущий образ системы ?
Отправлено: rolin от Январь 29, 2016, 01:04:45 pm
Я дико извиняюсь, но уже устал искать ответ. Может он настолько очевиден для гуру, но я тут новичек.
Установил Ubuntu Vivid Lxde на свой OrangePi PC, поставил драйвера, завел WiFi, установил нужные пакеты и базовые проги.
Теперь хотелось бы сохранить все это в образ для SD-card - точно такой же, какой изначально использовался для запуска платы.
Не нужно будет делать все эти операции каждый раз в случае краха системы или можно поделиться настроенным образом с другими пользователями.
У меня флешка на 16ГБ, снимать образы DiskImager очень расточительно получается.
Существуют обычные способы снятия образа с рабочего линукса, но непонятно будет ли он запускаться на orangePI, и он же ж с двумя разделами должен быть....

Так как можно сделать образ для карточки, желательно используя все тот же оранж ?
Название: Re: Как слить текущий образ системы ?
Отправлено: bambr3312 от Январь 29, 2016, 01:21:17 pm
dd if=/dev/sd[какой раздел] of=[название образа] bs=1024k
Но как ты будешь потом его восстанавливать, если апельсина не будет работать? Проще сделать Win32DiskImager
Название: Re: Как слить текущий образ системы ?
Отправлено: UB3GAD от Январь 29, 2016, 01:28:51 pm
А не пробовал образ загонять в архив, обычно разница по размеру раза в два три получается.
Название: Re: Как слить текущий образ системы ?
Отправлено: rolin от Январь 29, 2016, 02:22:01 pm
А не пробовал образ загонять в архив, обычно разница по размеру раза в два три получается.
Пробовал. Ну 8 ГБ. А могло бы быть 1.6. Да и времени занимает это очень много. И если надо будет установить на карту другого размера то не получится уже. Надо что-то делать.
Название: Re: Как слить текущий образ системы ?
Отправлено: UB3GAD от Январь 29, 2016, 02:36:47 pm
Я для этого использую 4-х гиговую карту, на нее все ставлю настраиваю, и снимаю дамп, а его уже откатить можно на любую флешку от 4-х гигов и выше
Название: Re: Как слить текущий образ системы ?
Отправлено: rolin от Январь 29, 2016, 03:45:06 pm
Я для этого использую 4-х гиговую карту, на нее все ставлю настраиваю, и снимаю дамп, а его уже откатить можно на любую флешку от 4-х гигов и выше
Как вариант, можно и 2 Гиг использовать, но нужен способ большее писать на меньшее, чтобы можно было бы в любой момент снять образ системы.
И вот что я думаю  - сразу после первого запуска системы, в консоли появляется предложение развернуть дисковый раздел на всю доступную память командой fs_size, операция почти мгновенно проходит.
Так может как-то так и уменьшить дисковый раздел до размеров фактически занимаемых ? А потом тем же DiskImager снять образ.
Название: Re: Как слить текущий образ системы ?
Отправлено: warik от Январь 29, 2016, 05:38:20 pm
Мне говорили через parted\gparted. Но либо я криворукий, либо оно реально не работает. Попробуйте кто нибудь. Но по сути... Если делать dd, то он снимет даже пустое дисковое пространство. Он же считывает поблочно.
Название: Re: Как слить текущий образ системы ?
Отправлено: AlDemin от Январь 29, 2016, 05:50:35 pm
Так dd if=/dev/sdx of=bla-bla.img bs=1024 count=yyyy сколько блоков скопировать.
Название: Re: Как слить текущий образ системы ?
Отправлено: UB3GAD от Январь 29, 2016, 05:53:28 pm
я снимаю через дисковую утилиту на ubuntu, а если требуется залить образ на флешку большего объема то после залития образа запускаю gparted и из под него правлю размеры раздела.
Название: Re: Как слить текущий образ системы ?
Отправлено: bambr3312 от Январь 29, 2016, 06:00:00 pm
Сейчас достоверно не скажу, но когда-то именно gparted'ом уменьшал/расширял раздел. Берешь прям за край рамки раздела и тащишь. Главное, чтобы в конце раздела не было блоков, иначе в них граница раздела упрется.
Название: Re: Как слить текущий образ системы ?
Отправлено: AlDemin от Январь 29, 2016, 06:47:20 pm
Так и сейчас так делается, главное это делать на не рабочем разделе.
И да, не трогайте начало первого раздела, там перед ним вне разделов находятся начальный загрузчик и u-boot.
Название: Re: Как слить текущий образ системы ?
Отправлено: warik от Январь 29, 2016, 07:52:29 pm
Так и сейчас так делается, главное это делать на не рабочем разделе.
И да, не трогайте начало первого раздела, там перед ним вне разделов находятся начальный загрузчик и u-boot.
Gparted видит u-boot? O_o
Название: Re: Как слить текущий образ системы ?
Отправлено: AlDemin от Январь 29, 2016, 08:12:03 pm
Gparted не видит u-boot и может его легко затереть если сдвинуть начало первого раздела ближе 2048-го сектора к началу диска.
Название: Re: Как слить текущий образ системы ?
Отправлено: warik от Январь 29, 2016, 10:59:18 pm
Я имею ввиду что u-boot же зашит на плату. Как он может его видеть? Или нет?
Название: Re: Как слить текущий образ системы ?
Отправлено: AlDemin от Январь 29, 2016, 11:44:45 pm
Не думаю, что Н3 грузиться как то иначе, чем другие аллвиннеры.
Зашитый в камень загрузчик ищет SPL на sd-карте , нанде, еммс, usb...
SPL грузит U-Boot с того же устройства, а U-Boot ишет разделы и грузит ядро.
Название: Re: Как слить текущий образ системы ?
Отправлено: warik от Январь 29, 2016, 11:58:54 pm
Понял. Спасибо!
Название: Re: Как слить текущий образ системы ?
Отправлено: bambr3312 от Январь 30, 2016, 09:36:54 am
У всех allwinner фиксированный порядок загрузки - карта памяти, nand, usb. Так было и на всех Cubieboard
Название: Re: Как слить текущий образ системы ?
Отправлено: rolin от Январь 30, 2016, 10:02:21 pm
Команда fs_resize предлагаемая при первом запуске системы - это скрипт. Вот он
Не мог бы кто нить его подправить, чтобы процесс вспять обратить ?  Это же будет экстремально удобно - одна команда и раздел сжат.
Извините, вам запрещён просмотр содержимого спойлеров.
Название: Re: Как слить текущий образ системы ?
Отправлено: rolin от Январь 30, 2016, 10:12:04 pm
То был скрипт с гитхаба
А вот то что я с нашей борды вытащил
Название: Re: Как слить текущий образ системы ?
Отправлено: mgena от Январь 31, 2016, 01:01:14 am
На карте два раздела,
после установки оси и доустановки пакетов архивирую только второй раздел "linux".
Если с ситемой чтото не то - форматирую раздел "linux" и востанавливаю на него архив.
Если загрузчик, то ставлю парвоначальную прошивку, форматирую раздел "linux",
и также востанивливаю все из своего архива.
Архив получается немного больше чем слить образ через (dd c cжатием), но зато
далается быстрее и от размеров карточек независит
Название: Re: Как слить текущий образ системы ?
Отправлено: bambr3312 от Январь 31, 2016, 09:17:16 am
Может я повторяюсь, но.. Что мешает уменьшить linux раздел, а потом слить образ карты с помощью Win32DiskImager?
Название: Re: Как слить текущий образ системы ?
Отправлено: AlDemin от Январь 31, 2016, 10:06:18 am
Может я повторяюсь, но.. Что мешает уменьшить linux раздел, а потом слить образ карты с помощью Win32DiskImager?
Мне мешает отсутствие windows...
Вот приходиться пользоваться Gparted-ом и dd.
Название: Re: Как слить текущий образ системы ?
Отправлено: bambr3312 от Январь 31, 2016, 10:58:44 am
Может я повторяюсь, но.. Что мешает уменьшить linux раздел, а потом слить образ карты с помощью Win32DiskImager?
Мне мешает отсутствие windows...
Вот приходиться пользоваться Gparted-ом и dd.
Можно и dd.. всю карту.. я так понял, что основная дискуссия тут развивается вокруг сокращения размера образа
Название: Re: Как слить текущий образ системы ?
Отправлено: AlDemin от Январь 31, 2016, 11:49:24 am
dd можно всю флешку, а можно и только то, что нужно.
dd очень гибкий инструмент, как все консольные команды интуитивно не очень понятны, но когда его поймёшь.
В винде подобное поискать....
Название: Re: Как слить текущий образ системы ?
Отправлено: bambr3312 от Январь 31, 2016, 12:24:56 pm
dd можно всю флешку, а можно и только то, что нужно.
dd очень гибкий инструмент, как все консольные команды интуитивно не очень понятны, но когда его поймёшь.
В винде подобное поискать....
я даже больше скажу за консоль.. cat'ом можно ядро на звуковую карту отправить и послушать как оно звучит  ;D
Название: Re: Как слить текущий образ системы ?
Отправлено: rolin от Январь 31, 2016, 12:56:29 pm
На карте два раздела,
после установки оси и доустановки пакетов архивирую только второй раздел "linux".
Спасибо, как вариант....  Но все эти операции нужно выполнять на стороннем компьютере с Линукс, я правильно понимаю ?
dd можно всю флешку, а можно и только то, что нужно.
dd копирует все подряд от начала и до обеда, файлы на диске разбросаны по поверхности, поэтому придется копировать мне весь 16гБ диск.
Этой утилитой можно только MBR скопировать и записать его на внешнюю флешку например, потом на ней воссоздать разделы и скопировать данные, потом изменить размер основного раздела и уже потом снять образ. Это несколько сложновато, вы не находите ?
Может я повторяюсь, но.. Что мешает уменьшить linux раздел, а потом слить образ карты с помощью Win32DiskImager?
А как ? Gparted не работает с примонтированными дисками, а отмонтировать рабочую файловую систему нельзя (?).
Значит нужно использовать другой компьютер с линуксом которого нет, или держать флешку с LiveCD, что мне не нужно.
Под винду пытался найти проги, что работают с Ext4, но мало их что вообще такие разделы видят, про ресайз там вообще речь не идет.
Название: Re: Как слить текущий образ системы ?
Отправлено: AlDemin от Январь 31, 2016, 03:01:14 pm
В принципе руками из консоли у меня получилось уменьшить раздел до "0" свободного места на разделе, что в принципе не нужно, ибо для работы нужно оставить немного свободного места, допустим 100Мег.
Можно попробовать запихнуть это в скрипт, и посчитать параметры для dd которым можно будет сделать xxx.img без лишнего.
Сложно сказать будет ли этот скрипт работать на любой системе, тк даже в вышеприведенных скриптах очень много мест на которых они могут дать сбой выполнения.
Название: Re: Как слить текущий образ системы ?
Отправлено: rolin от Январь 31, 2016, 05:13:49 pm
В принципе руками из консоли у меня получилось уменьшить раздел до "0" свободного места на разделе, что в принципе не нужно, ибо для работы нужно оставить немного свободного места, допустим 100Мег.
Очень интересно. А можно пошагово и с комментариями ?

А я вот скачал минимальный образ с Gparted http://downloads.sourceforge.net/gparted/gparted-live-0.25.0-1-i686.iso  - 270 метров
Записал его на флешку прогой WinSetapFromUSB в режиме Linux ISO/ Other Grub4dos ISO
Флешку можно и дальше эксплуатировать как обычно, а можно с нее загрузиться и уменьшить размер раздела с системой для orange.

Но вот проблема - когда я после этого снял образ Win32DiskImager - то он опять оказался 16 гигов.
Название: Re: Как слить текущий образ системы ?
Отправлено: AlDemin от Январь 31, 2016, 05:26:11 pm
Попробую на рабочей системе - отпишусь.
Название: Re: Как слить текущий образ системы ?
Отправлено: rolin от Февраль 01, 2016, 12:14:00 am
Вроде бы разобрался :) все можно сделать прямо на борде
Технология такая:

1) Устанавливаем вспомогательную USB флешку подходящего размера, устанавливаем Gparted, если еще нет.
 Запускаем Gparted, удаляем с вспомогательной флешки все разделы, тут же смотрим пути для основного устройства,         вспомогательной флешки и рабочего раздела основного устройства.

2) Копируем на вспомогательную флешку  содержимое основного устройства от 0 до 172031 сектора, что соответствует концу стандартного размера раздела BOOT,то есть это 20 + 64 MiB. Уточнить можно в Gparted, кликнув на разделе BOOT основного устройства правой кнопкой и нажав Information. Интересует параметр Last sector. В следующей команде нужно использовать это значение + 1.
sudo dd if=/dev/mmcblk0 of=/dev/sda bs=512 count=172032

3) Теперь смотрим Gparted- на вспомогательной флешке оказалась копия файловой системы основного устройства. Но размер раздела Ext4 скорее всего неверный. Поэтому просто удаляем этот раздел и создаем заново, на весь размер оставшегося пространства вспомогательной флешки. Назвать его следует linux.

4) Теперь нужно примонтировать его и скопировать все файлы нашего рабочего раздела в этот аналогичный раздел на вспомогательной флешке.
sudo rsync -aulv -x / /media/orangepi/linux

5) После копирования и размонтирования, с помощью Gparted  можно уменьшить размер раздела на вспомогательной флешке до минимально необходимого. К сожалению он не даст уменьшить свободное место до нуля по неизвестной причине. Около 10% свободного места нужно оставить.

6) Теперь осталось снять образ получившегося носителя с помощью утилиты dd.
А аналогично пункту 2, в Gparted следует выяснить какой номер последнего сектора последнего раздела. Не забываем, что используем это число +1.
sudo dd if=/dev/sda of=/home/our_image.img bs=512 count=3698688
Согласно этой команды, образ появится в каталоге /home. Можно указать также например другую флешку, на которой есть достаточно места.

Полученный образ можно записать Win32DiskImager на карту любого подходящего размера.
После первого старта системы выполнить
sudo fs_resize
reboot


Название: Re: Как слить текущий образ системы ?
Отправлено: warik от Февраль 01, 2016, 12:15:39 am
Как же всё просто-то. Я и забыл про "count" в dd. Он же указывает на количество блоков которое нужно считать.
rolin, спасибо!