From eba262288db956e0c596cd49304e90baa379737f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=BE=D0=B7=D0=B0=20=D0=92=D0=BB=D0=B0=D0=B4?= Date: Tue, 24 Feb 2026 11:31:33 +0300 Subject: [PATCH 01/13] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Была ошибка /home/vlad/KOSMOS/NeptuneOS/private/rtl/inc/services.h:457:11: error: flexible array member 'DeviceIds' not allowed in otherwise empty struct 457 | CHAR DeviceIds[]; | ^ /home/vlad/KOSMOS/NeptuneOS/private/rtl/inc/services.h:460:11: error: flexible array member 'DeviceId' not allowed in otherwise empty struct 460 | CHAR DeviceId[]; | ^ /home/vlad/KOSMOS/NeptuneOS/private/rtl/inc/services.h:463:11: error: flexible array member 'DeviceIds' not allowed in otherwise empty struct 463 | CHAR DeviceIds[]; | ^ 3 errors generated. ,я тут подпрапвил и теперь сборка идет отлично --- private/rtl/inc/services.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/private/rtl/inc/services.h b/private/rtl/inc/services.h index a0ca9165..fd3cdb09 100644 --- a/private/rtl/inc/services.h +++ b/private/rtl/inc/services.h @@ -441,9 +441,6 @@ typedef struct _IO_PNP_CONTROL_QUERY_IDS_DATA { IN OUT CHAR DeviceInstance[]; /* Output buffer follows device instance */ } IO_PNP_CONTROL_QUERY_IDS_DATA, *PIO_PNP_CONTROL_QUERY_IDS_DATA; -/* - * Server-side data structure for PLUGPLAY_EVENT_BLOCK - */ typedef struct _IO_PNP_EVENT_BLOCK { GUID EventGuid; PLUGPLAY_EVENT_CATEGORY EventCategory; @@ -454,12 +451,15 @@ typedef struct _IO_PNP_EVENT_BLOCK { CHAR SymbolicLinkName[]; } DeviceClass; struct { + ULONG Dummy; // Добавлено фиктивное поле CHAR DeviceIds[]; } TargetDevice; struct { + ULONG Dummy; // Добавлено фиктивное поле CHAR DeviceId[]; } InstallDevice; struct { + ULONG Dummy; // Добавлено фиктивное поле CHAR DeviceIds[]; } CustomNotification; /* Used for IoReportTargetDeviceChange */ struct { From 1e51dd52d60a0cc358651d995429679affae6a59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=BE=D0=B7=D0=B0=20=D0=92=D0=BB=D0=B0=D0=B4?= Date: Tue, 24 Feb 2026 11:49:08 +0300 Subject: [PATCH 02/13] Create Dockerfile --- build/Dockerfile | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 build/Dockerfile diff --git a/build/Dockerfile b/build/Dockerfile new file mode 100644 index 00000000..cb61eca5 --- /dev/null +++ b/build/Dockerfile @@ -0,0 +1,48 @@ +FROM ubuntu:latest + +# Аргументы сборки с значениями по умолчанию +ARG ARCH=amd64 +ARG BUILD_TYPE=release + +# Предотвращаем интерактивные запросы при установке пакетов +ENV DEBIAN_FRONTEND=noninteractive + +# Устанавливаем необходимые пакеты +RUN apt-get update && apt-get install -y \ + python3 \ + python3-pip \ + python3-venv \ + libxml2-utils \ + git \ + && rm -rf /var/lib/apt/lists/* + +# Настройка Python +RUN ln -s /usr/bin/python3 /usr/bin/python + +# Устанавливаем Python-пакеты +RUN pip3 install --no-cache-dir \ + jinja2 \ + future \ + ply \ + setuptools \ + six \ + lxml + +WORKDIR /workspace + +# Клонируем репозиторий +RUN git clone https://github.com/cl91/NeptuneOS.git + +WORKDIR /workspace/NeptuneOS + +# Инициализируем сабмодули +RUN git submodule update --init --recursive + +# Делаем build.sh исполняемым +RUN chmod +x build.sh + +# Запускаем сборку с переданными аргументами +RUN echo "Запуск сборки с ARCH=${ARCH}, BUILD_TYPE=${BUILD_TYPE}" && \ + ./build.sh ${ARCH} ${BUILD_TYPE} + +CMD ["/bin/bash"] From ccaf5794f4ee6097cffe675b636514bf82a77d38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=BE=D0=B7=D0=B0=20=D0=92=D0=BB=D0=B0=D0=B4?= Date: Tue, 24 Feb 2026 11:51:20 +0300 Subject: [PATCH 03/13] Create build-docker.yml --- .github/workflows/build-docker.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/build-docker.yml diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml new file mode 100644 index 00000000..d25fed65 --- /dev/null +++ b/.github/workflows/build-docker.yml @@ -0,0 +1,23 @@ +name: Build Docker Image + +on: + push: + branches: [ master ] # можно заменить на нужные ветки + pull_request: + branches: [ master ] # опционально + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Change to build directory and build Docker image + run: | + cd build + docker build -t neptune-builder . + + - name: Optional - Show built images + run: docker images | grep neptune-builder From fbf5d4e2a48e5b426cebcc1551a5a5becf1d34ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=BE=D0=B7=D0=B0=20=D0=92=D0=BB=D0=B0=D0=B4?= Date: Tue, 24 Feb 2026 11:53:10 +0300 Subject: [PATCH 04/13] Update Dockerfile --- build/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/build/Dockerfile b/build/Dockerfile index cb61eca5..a24e66a2 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -21,6 +21,7 @@ RUN ln -s /usr/bin/python3 /usr/bin/python # Устанавливаем Python-пакеты RUN pip3 install --no-cache-dir \ + --break-system-packages \ jinja2 \ future \ ply \ From 6563c20215b97727177335976f16da345c615332 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=BE=D0=B7=D0=B0=20=D0=92=D0=BB=D0=B0=D0=B4?= Date: Tue, 24 Feb 2026 11:56:21 +0300 Subject: [PATCH 05/13] Fix error with executing ./build.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Терминал думает,что надо исполнять с /bin/sh , а тут синтаксис bash поэтому надо добавить #!/bin/bash в начало --- build.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.sh b/build.sh index ec048388..33ceb346 100755 --- a/build.sh +++ b/build.sh @@ -1,4 +1,7 @@ +#!/bin/bash + # Default architecture and build type + ARCH=i386 DEFAULT_PLATFORM=pc99 BUILD_TYPE=Debug From 7e6fb822988a5dc9c78c3449ab05f9780833a9f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=BE=D0=B7=D0=B0=20=D0=92=D0=BB=D0=B0=D0=B4?= Date: Tue, 24 Feb 2026 11:58:04 +0300 Subject: [PATCH 06/13] Update Dockerfile --- build/Dockerfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build/Dockerfile b/build/Dockerfile index a24e66a2..81ef29d2 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -40,10 +40,9 @@ WORKDIR /workspace/NeptuneOS RUN git submodule update --init --recursive # Делаем build.sh исполняемым -RUN chmod +x build.sh +RUN bash build.sh # Запускаем сборку с переданными аргументами -RUN echo "Запуск сборки с ARCH=${ARCH}, BUILD_TYPE=${BUILD_TYPE}" && \ - ./build.sh ${ARCH} ${BUILD_TYPE} + CMD ["/bin/bash"] From 4a8cb80c2f7a30e55b2d1a9395b1b3e3b32c8463 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=BE=D0=B7=D0=B0=20=D0=92=D0=BB=D0=B0=D0=B4?= Date: Tue, 24 Feb 2026 12:00:51 +0300 Subject: [PATCH 07/13] Update Dockerfile --- build/Dockerfile | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/build/Dockerfile b/build/Dockerfile index 81ef29d2..9185ae04 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -12,8 +12,18 @@ RUN apt-get update && apt-get install -y \ python3 \ python3-pip \ python3-venv \ - libxml2-utils \ git \ + bash \ + wget \ + curl \ + cmake \ + ninja-build \ + build-essential \ + gcc \ + g++ \ + make \ + pkg-config \ + libxml2-utils \ && rm -rf /var/lib/apt/lists/* # Настройка Python From 18b76eaeed2f79a89d8328fdd7db4bbed3ac19a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=BE=D0=B7=D0=B0=20=D0=92=D0=BB=D0=B0=D0=B4?= Date: Tue, 24 Feb 2026 12:03:16 +0300 Subject: [PATCH 08/13] Update Dockerfile --- build/Dockerfile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/build/Dockerfile b/build/Dockerfile index 9185ae04..4ceaf39f 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -9,6 +9,7 @@ ENV DEBIAN_FRONTEND=noninteractive # Устанавливаем необходимые пакеты RUN apt-get update && apt-get install -y \ + # Базовые инструменты python3 \ python3-pip \ python3-venv \ @@ -16,6 +17,7 @@ RUN apt-get update && apt-get install -y \ bash \ wget \ curl \ + # Инструменты сборки cmake \ ninja-build \ build-essential \ @@ -23,6 +25,11 @@ RUN apt-get update && apt-get install -y \ g++ \ make \ pkg-config \ + # LLVM/Clang (нужен для seL4) + clang \ + llvm \ + lld \ + # Дополнительные утилиты libxml2-utils \ && rm -rf /var/lib/apt/lists/* From ebd0521f3d7a9f32aee962d65627c003496cdb46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=BE=D0=B7=D0=B0=20=D0=92=D0=BB=D0=B0=D0=B4?= Date: Tue, 24 Feb 2026 12:07:08 +0300 Subject: [PATCH 09/13] Update Dockerfile --- build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Dockerfile b/build/Dockerfile index 4ceaf39f..1b270dc8 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -49,7 +49,7 @@ RUN pip3 install --no-cache-dir \ WORKDIR /workspace # Клонируем репозиторий -RUN git clone https://github.com/cl91/NeptuneOS.git +RUN git clone https://github.com/Endlad2/NeptuneOS.git WORKDIR /workspace/NeptuneOS From 99c2884f61c1bea04dcdc89ed54432f645503ffd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=BE=D0=B7=D0=B0=20=D0=92=D0=BB=D0=B0=D0=B4?= Date: Tue, 24 Feb 2026 12:10:33 +0300 Subject: [PATCH 10/13] Update Dockerfile --- build/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build/Dockerfile b/build/Dockerfile index 1b270dc8..55f8596a 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -9,7 +9,8 @@ ENV DEBIAN_FRONTEND=noninteractive # Устанавливаем необходимые пакеты RUN apt-get update && apt-get install -y \ - # Базовые инструменты + mingw-w64 \ + mingw-w64-tools \ python3 \ python3-pip \ python3-venv \ From 5093a97cd0095c858e6e90b806dd2fe44c3350bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=BE=D0=B7=D0=B0=20=D0=92=D0=BB=D0=B0=D0=B4?= Date: Tue, 24 Feb 2026 12:14:05 +0300 Subject: [PATCH 11/13] Update Dockerfile --- build/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/build/Dockerfile b/build/Dockerfile index 55f8596a..143c14be 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -16,6 +16,7 @@ RUN apt-get update && apt-get install -y \ python3-venv \ git \ bash \ + cpio \ wget \ curl \ # Инструменты сборки From 797abe02c96a69ce6acfac828cd4a8497b0c5670 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=BE=D0=B7=D0=B0=20=D0=92=D0=BB=D0=B0=D0=B4?= Date: Tue, 24 Feb 2026 12:19:28 +0300 Subject: [PATCH 12/13] Update Dockerfile --- build/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build/Dockerfile b/build/Dockerfile index 143c14be..945cf1bd 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -59,7 +59,8 @@ WORKDIR /workspace/NeptuneOS RUN git submodule update --init --recursive # Делаем build.sh исполняемым -RUN bash build.sh +RUN bash build.sh [${ARCH}] [${BUILD_TYPE}] +RUN mkiso.sh [${ARCH}] [${BUILD_TYPE}] # Запускаем сборку с переданными аргументами From 598da37db24b7f83d9d8546153fd1f5c7c36f010 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=BE=D0=B7=D0=B0=20=D0=92=D0=BB=D0=B0=D0=B4?= Date: Tue, 24 Feb 2026 12:42:21 +0300 Subject: [PATCH 13/13] Update readme.md --- readme.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/readme.md b/readme.md index 9f1af373..ba6adae4 100644 --- a/readme.md +++ b/readme.md @@ -1,3 +1,4 @@ + # Neptune OS: a Windows NT personality for the seL4 microkernel Neptune OS is a Windows NT personality for the seL4 microkernel. It implements what @@ -118,6 +119,26 @@ server. The `build.sh` script will generate the `compile_commands.json` file for `clangd`. You will need to install [jq](https://jqlang.github.io/jq/) for this purpose. +### Docker Build + +For a containerized build environment, it is recommended to use Docker. First, navigate to the build directory and build the Docker image: + +```bash +cd build +docker build -t neptune-builder . +``` + +To build with specific architecture and build type parameters: + +```bash +docker build \ + --build-arg ARCH=arm64 \ + --build-arg BUILD_TYPE=debug \ + -t neptune-builder . +``` + +### Local Build + Clone the project first (make sure you use `git clone --recurse-submodules` since we include the seL4 kernel as a submodule) and then run ```