diff --git a/README.md b/README.md new file mode 100644 index 0000000..69c89b8 --- /dev/null +++ b/README.md @@ -0,0 +1,61 @@ +# Image Builder + +**Image Builder** — это инструмент для создания индивидуальных системных образов, готовых к развертыванию, таких как установочные диски, виртуальные машины и образы для облачных платформ. Этот репозиторий содержит скрипты и конфигурации, необходимые для создания таких образов на основе RosaLinux. + +## Возможности + +- **Создание установочных образов**: Подготовка RAW-образов для установки системы на физические или виртуальные машины. +- **Создание облачных образов**: Генерация образов, оптимизированных для развёртывания в различных облачных средах. +- **Кастомизация пакетов**: Выбор и настройка пакетов, включаемых в создаваемый образ. + +## Требования + +- **Операционная система**: rosa13 fresh или совместимая с ней дистрибуция. +- **Зависимости**: Убедитесь, что следующие пакеты установлены в системе: + - `binutils-aarch64-linux-gnu` + - `gcc-aarch64-linux-gnu` + - `mkosi` + - `qemu-aarch64-static` + - `qemu-loongarch64-static` + - `qemu-riscv64-static` + - `uboot-tools` + +## Установка + +1. **Клонирование репозитория**: + ```bash + git clone https://github.com/rosalinux/image-builder.git + cd image-builder + ``` + +2. **Установка зависимостей**: + ```bash + sudo dnf update + sudo dnf install mkosi qemu-aarch64-static uboot-tools gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu + ``` + +## Использование + +2. **Создание образа**: + Запустите процесс сборки с указанием вашего конфигурационного файла: + ```bash + cd image-builder/device/generic/ + mkosi --force + ``` + По завершении сборки, готовый образ будет доступен в текущей директории. + +3. **Создание образа и запуск**: + Запустите процесс сборки с указанием вашего конфигурационного файла: + ```bash + cd image-builder/device/generic/ + mkosi --force vm + ``` + По завершении сборки, будет запущена виртуальная машина. + +## Поддержка + +Если у вас возникли вопросы или проблемы, пожалуйста, создайте [issue](https://github.com/rosalinux/image-builder/issues) в этом репозитории. + +## Лицензия + +Этот проект распространяется под лицензией MIT. diff --git a/device/rockchip/orangepi5/mkosi.conf b/device/rockchip/orangepi5/mkosi.conf index 6ee15f8..9ff3b5d 100644 --- a/device/rockchip/orangepi5/mkosi.conf +++ b/device/rockchip/orangepi5/mkosi.conf @@ -43,6 +43,7 @@ Packages= camera_engine_rkaiq Bootable=no +Bootloader=none Autologin=yes RootPassword=root RootShell=/usr/bin/bash diff --git a/device/rockchip/orangepi5/mkosi.postinst.chroot b/device/rockchip/orangepi5/mkosi.postinst.chroot index 625b681..507f7a1 100755 --- a/device/rockchip/orangepi5/mkosi.postinst.chroot +++ b/device/rockchip/orangepi5/mkosi.postinst.chroot @@ -5,12 +5,11 @@ set -Eeuo pipefail version=$(rpm -q --queryformat '%{version}\n' kernel-6.1-orangepi) printf "Generate /boot/uInitrd-${version}...\n" -# mkimage -A arm64 -O linux -T ramdisk -C gzip -n uInitrd -d /boot/initrd-%{version}.img /boot/uInitrd -mkimage -A arm64 -O linux -T ramdisk -C gzip -d /boot/initrd-${version}.img /boot/uInitrd-${version} +dracut --force --regenerate-all +mkimage -A arm64 -O linux -T ramdisk -C none -n uInitrd -d /boot/initramfs-${version}.img /boot/uInitrd-${version} printf "Remove dracut-generated initrd...\n" -rm -fv /boot/initrd-${version}.img -rm -fv /boot/uInitrd +rm -fv /boot/initramfs-${version}.img # generate boot.scr # see mkosi.extra/boot/boot.cmd diff --git a/device/rockchip/orangepi5/mkosi.postoutput.d/10-dd-loader.sh b/device/rockchip/orangepi5/mkosi.postoutput.d/10-dd-loader.sh index 4a56de0..80f9454 100755 --- a/device/rockchip/orangepi5/mkosi.postoutput.d/10-dd-loader.sh +++ b/device/rockchip/orangepi5/mkosi.postoutput.d/10-dd-loader.sh @@ -1,31 +1,12 @@ #!/bin/sh -#set -x -#env -## SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL -#UBOOT_DIR="${SRCDIR}/mkosi" -# -#IMAGE="${OUTPUTDIR}/orangepi5.img" -#IMAGE_SIZE=$(du -sb "${OUTPUTDIR}/image" | cut -f1) -#IMAGE_SIZE=$((IMAGE_SIZE + 15 * 1024 * 1024)) -# -#dd if=/dev/zero of="${IMAGE}" bs=1M count=0 seek=$((IMAGE_SIZE / 1024 / 1024)) -# -#LOOP_DEV=$(losetup --find --show "${IMAGE}") -# -#sgdisk --zap-all "${LOOP_DEV}" -#sgdisk --new=1:15M:+256M --typecode=1:8300 "${LOOP_DEV}" -#sgdisk --new=2:0:0 --typecode=2:8300 "${LOOP_DEV}" -# -#partprobe "${LOOP_DEV}" -# -#printf "Disk created!\n" -# -#pushd ${OUTPUTDIR} -#ls -la -#printf "write bootloader to the image...\n" -#dd if=${UBOOT_DIR}/idbloader.img of=${IMAGE} seek=64 conv=notrunc -#dd if=${UBOOT_DIR}/u-boot.itb of=${IMAGE} seek=16384 conv=notrunc -#popd -#echo "nameserver 8.8.8.8" > /etc/resolv.conf -#dnf in -y camera_engine_rkaiq -#systemctl enable rkaiq_3A.service +# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +set -Eeuo pipefail + +UBOOT_DIR="${SRCDIR}/mkosi" +IMAGE="${OUTPUTDIR}/image.raw" + +pushd ${OUTPUTDIR} +printf "write bootloader to the image...\n" +dd if=${UBOOT_DIR}/idbloader.img of=${IMAGE} seek=64 conv=notrunc +dd if=${UBOOT_DIR}/u-boot.itb of=${IMAGE} seek=16384 conv=notrunc +popd diff --git a/device/rockchip/orangepi5/mkosi.repart/00-uboot.conf b/device/rockchip/orangepi5/mkosi.repart/00-uboot.conf index 47c84ec..db756fc 100644 --- a/device/rockchip/orangepi5/mkosi.repart/00-uboot.conf +++ b/device/rockchip/orangepi5/mkosi.repart/00-uboot.conf @@ -1,5 +1,5 @@ [Partition] -Type=esp -Format=vfat -SizeMinBytes=15M -SizeMaxBytes=15M +Type=21686148-6449-6e6f-744e-656564454649 +#Format=vfat +SizeMinBytes=16M +SizeMaxBytes=16M