Skip to content
  • Категории
  • Главная
  • Документация
  • Последние
  • Пользователи
Collapse
  1. Главная
  2. Raspberry Pi
  3. Снять образ системы с SD карты

Снять образ системы с SD карты

Запланировано Прикреплена Закрыта Перенесена Raspberry Pi
5 Сообщения 2 Posters 132 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • piP Не в сети
    piP Не в сети
    pi
    написал в отредактировано pi
    #1

    Есть преднастроенная система, необходимо снять образ с нее для последующего распространения.

    Система устанавливалась и настравивалась на SD карте объемом 8 Гб, настроеная система занимает около 2,5 Гб.Нужно снять образ системы так, чтобы он мог развернуться на 4 Гб карте. Как это лучше сделать?

    Пытался следующим образом:
    В gparted уменьшил корневой раздел до ~3 Гб:

    fdisk -l /dev/sdb
    
    Disk /dev/sdb: 7,3 GiB, 7861174272 bytes, 15353856 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x4b047071
    
    Device     Boot  Start     End Sectors Size Id Type
    /dev/sdb1         8192  137215  129024  63M  c W95 FAT32 (LBA)
    /dev/sdb2       137216 6375423 6238208   3G 83 Linux
    

    Снял образ:

    3264217088 = 6375423 * 512 + 512
    
    ddrescue --sparse -s 3264217088 /dev/sdb image.img
    
    fdisk -l image.img
    
    Disk image.img: 3 GiB, 3264216576 bytes, 6375423 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x4b047071
    
    Device     Boot  Start     End Sectors Size Id Type
    image.img1        8192  137215  129024  63M  c W95 FAT32 (LBA)
    image.img2      137216 6375423 6238208   3G 83 Linux
    

    Если этот образ смонтировать вручную, то все нормально монтируется и работает:

    mount -o loop,offset=70254592 image.img /tmp/mnt_test
    

    Но стоит записать на SD карту — система не загружается, т.к. происходит ошибка монтирования root раздела (из-за кривой разметки???).
    Как правильно снять образ?

    И второй вопрос — как расширить раздел на всю свободную область SD карты при первом запуске?
    Закидывал скрипт /etc/init.d/resize2fs_once в автозапуск при загрузке — ФС не увеличивается, что не удивительно, нужно увеличить раздел перед расширением ФС.
    В логах первой загрузки системы обнаружил следующее:

    May 27 11:50:22 raspberrypi kernel: [    8.462819] EXT4-fs (mmcblk0p2): resizing filesystem from 964096 to 1902080 blocks
    May 27 11:50:22 raspberrypi resize2fs_once[390]: Starting resize2fs_once:resize2fs 1.42.12 (29-Aug-2014)
    May 27 11:50:22 raspberrypi resize2fs_once[390]: Filesystem at /dev/mmcblk0p2 is mounted on /; on-line resizing required
    May 27 11:50:22 raspberrypi resize2fs_once[390]: old_desc_blocks = 1, new_desc_blocks = 1
    May 27 11:50:22 raspberrypi resize2fs_once[390]: The filesystem on /dev/mmcblk0p2 is now 1902080 (4k) blocks long.
    

    Насколько я понимаю, сначала увеличивается раздел, а потом файловая система.

    Как сделать тоже самое при первой загурзке с моего образа?

    Или проще при загрузке выполнить sudo raspi-config --expand-rootfs и перегрузиться?

    1 ответ Последний ответ
    0
    • piP Не в сети
      piP Не в сети
      pi
      написал в отредактировано pi
      #2

      В gparted уменьшил корневой раздел до ~3 Гб:Я так понял это на основной карте делалось. После этого с неё загрузка нормально проходит?
      ddrescue --sparse -s 3264217088 /dev/sdb image.imgНикогда не умел пользоваться такими расчетами по байтам. Если раздел уже уменьшен, то я бы предпочел копировать целиком утсройство /dev/sdb, без опции -s. Можно попробовать пойти самым простым путем — копировать вообще без параметров, что-то вроде такого:
      ddrescue /dev/sdb /dev/sdc и если заработает, то уже потом оптимизировать процесс.
      Также есть еще утилита dd, можно попробовать так:

      dd if=/dev/sdb of=/dev/sdc bs=1M
      

      Вот еще вспомнил, был такой проект — piclone — копирование образа запущенной системы на карту памяти. Может с ним получится.
      Насколько я понимаю, сначала увеличивается раздел, а потом файловая система.Все верно, на десктопе таким занимался: сначала нужно fdisk'ом увеличить размер раздела, потом resize2fs увеличивает размер файловой системы.
      Или проще при загрузке выполнить Проще всего, мне кажется, взять 1 карточку на 4Гб, настроить на ней систему (включая расширение раздела на всю карточку) и дальше делать её копии.

      1 ответ Последний ответ
      0
      • piP Не в сети
        piP Не в сети
        pi
        написал в отредактировано
        #3

        На 4GB карту накатывается произвольный дистрибутив.
        Далее удаляем всё в ext разделе этой карты, и копируем туда всё из ext раздела карты на 8GB.
        Точно также поступаем с FAT32 разделом.
        Всё. Далее снимаем дамп Win32DiskImager'ом с карты 4GB

        1 ответ Последний ответ
        0
        • piP Не в сети
          piP Не в сети
          pi
          написал в отредактировано
          #4

          Я так понял это на основной карте делалось. После этого с неё загрузка нормально проходит?Да, нормально

          Если раздел уже уменьшен, то я бы предпочел копировать целиком утсройство /dev/sdbТогда образ не восстановишь на карте меньшего объема.
          Вообще хотелось бы сделать образ меньше 4 Гб, например, 3,5 Гб, т.к. карты разные, несмотря на то, что указан одинаковый объем. Например, у меня не восстановился образ Ubuntu Mate на карту 8Гб, которая шла в комплекте с Pi, т.к. она оказалась немного меньше, чем требуется для развертывания.

          Проще всего, мне кажется, взять 1 карточку на 4ГбНа 4GB карту накатывается произвольный дистрибутив.
          Далее удаляем всё в ext разделе этой карты, и копируем туда всё из ext раздела карты на 8GB.Эх, видимо так и придется делать.

          1 ответ Последний ответ
          0
          • gerundG Не в сети
            gerundG Не в сети
            gerund
            написал в отредактировано
            #5

            Снятый win32diskimager'ом образ можно уменьшить скриптом pishrink
            https://github.com/Drewsif/PiShrink
            работает чётко

            sudo pishrink.sh pi.img
            
            1 ответ Последний ответ
            0

            • Войти

            • Нет учётной записи? Зарегистрироваться

            • Login or register to search.
            • Первое сообщение
              Последнее сообщение
            0
            • Категории
            • Главная
            • Документация
            • Последние
            • Пользователи