从 docker 创建 alpine linux iso - libburn 权限被拒绝

Create alpine linux iso from docker - libburn permission denied

我一直在尝试按照标准说明 here 在 docker 容器内为 alpine-linux 构建一个 iso-image 但是我似乎无法真正编写由于 libburn,.iso 回到已安装的卷中:

    >>> mkimage-x86_64: Creating alpine-standard-edge-x86_64.iso
xorriso 1.4.8 : RockRidge filesystem manipulator, libburnia project.

libburn : SORRY : Failed to open device (a pseudo-drive) : Permission denied
libburn : FATAL : Burn run failed
xorriso : FATAL : -abort_on 'FAILURE' encountered 'FATAL' during image writing
libisofs: MISHAP : Image write cancelled
xorriso : FAILURE : libburn indicates failure with writing.

这是尝试 运行 从教程下载的脚本的标准结果:

sh aports/scripts/mkimage.sh --tag edge --outdir /build2/ --arch x86_64 --repository http://dl-cdn.alpinelinux.org/alpine/edge/main --profile standard

我使用的 docker 图片:

FROM alpine:latest
RUN addgroup root abuild
RUN apk add --update \
    alpine-sdk \
   # build-base \
    apk-tools \
    alpine-conf \
    busybox \
    git \
    fakeroot \
    syslinux \
    xorriso \
    squashfs-tools \
    mtools \
    dosfstools \
    grub-efi \
  && rm -rf /var/cache/apk/*

COPY . /usr/src/app 
WORKDIR /usr/src/app
RUN mkdir /usr/src/app/build
RUN touch /usr/src/app/build/worked.txt
RUN adduser -G abuild -g "Alpine Package Builder" -s /bin/sh -u 12345 -D builder
RUN echo "builder:newpass"|chpasswd


RUN chgrp -R abuild /usr/local;                                      \
    find /usr/local -type d | xargs chmod g+w;                        \
    echo "builder ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/builder; \
    chmod 0440 /etc/sudoers.d/builder

WORKDIR /build2/
RUN git clone git://git.alpinelinux.org/aports
RUN chmod +x aports/scripts/mkimage.sh
RUN abuild-keygen -i -a
USER builder

我查看了官方论坛,但只有一个 post 提到了类似的内容,但没有提到任何实际的解决方案。

未能找到解决方案,其他人能否推荐一个好的替代最小发行版,可以通过脚本为 x_86、x_64 和 rpi 构建 iso?

您可以使用脚本 alpine-make-vm-image.

轻松创建自己的 Alpine Linux ISO 映像

示例:

sudo ./alpine-make-vm-image \
  --image-format qcow2 \
  --image-size 5G \
  --packages "ca-certificates git ssl_client" \
  --script-chroot \
  alpine-$(date +%Y-%m-%d).qcow2 -- ./configure.sh

您收到权限被拒绝的错误,因为您创建的用户无法访问 xorriso 所需的伪设备。我删除了所有用户创建部分,只是 运行 以 root 身份删除了所有内容并且它有效。

这是我使用的 Dockerfile:

FROM alpine:latest

RUN apk add --no-cache \
    alpine-conf \
    alpine-sdk \
    apk-tools \
    dosfstools \
    grub-efi \
    mtools \
    squashfs-tools \
    syslinux \
    xorriso

WORKDIR /src

RUN git clone git://git.alpinelinux.org/aports

RUN chmod +x aports/scripts/mkimage.sh

RUN addgroup root abuild

RUN abuild-keygen -i -a -n

WORKDIR /build

ENTRYPOINT /src/aports/scripts/mkimage.sh

CMD "--tag edge --arch x86_64 --repository http://dl-cdn.alpinelinux.org/alpine/edge/main --profile standard"

然后构建 运行。

docker build -t alpine-iso .

docker run -v "$(pwd):/build" -it alpine-iso