GithubHelp home page GithubHelp logo

sarisia / mikanos-devcontainer Goto Github PK

View Code? Open in Web Editor NEW
62.0 2.0 8.0 28 KB

VSCode devcontainer for developing MikanOS

Home Page: https://zenn.dev/sarisia/articles/6b57ea835344b6

Dockerfile 100.00%
devcontainer docker mikanos

mikanos-devcontainer's Introduction

MikanOS-devcontainer

ゼロからのOS自作入門 で開発するOS (MikanOS) の 開発環境が設定された VSCode Devcontainer 設定ファイル.

ベースイメージの詳細については github.com/sarisia/mikanos-docker を参照してください.

使用例: github.com/sarisia/mikanos

使い方

テンプレートからリポジトリを作成

  1. 当リポジトリページの右上 "Use this template" からリポジトリを作成 (GitHub Docs)

  2. ローカルにチェックアウト

  3. VSCode で devcontainer を開く (VSCode Docs)

  4. 本の手順に従い VcXsrv を導入, 起動することで, QEMU での動作確認ができます

既存のリポジトリに追加

当リポジトリの .devcontainer ディレクトリ, 及び含まれるファイルをダウンロードし, 既存のリポジトリに追加してください.

M1 Mac で使う

クロスコンパイル関連の追加の設定が必要です. mikanos-docker のドキュメント を参照して下さい.

WSLg で動作確認

Windows 11, 及び Windows 10 21362以降では, WSLg を 利用することで, VcXsrv などを導入せずに QEMU での動作確認が可能です.

設定

  1. WSLg ドキュメント に従い, WSLg を有効化

  2. .devcontainer/devcontainer.json に設定を追加

    最新の .devcontainer/devcontainer.json を参考に, 以下の設定を追加:

    "mounts": [
        "type=bind,source=/tmp/.X11-unix,target=/tmp/.X11-unix"
    ],
    "containerEnv": {
        "DISPLAY": "${localEnv:DISPLAY}"
    },

VNC イメージ

VNC 設定を有効にすることで, ホストに X11 Server を用意すること無く, MikanOSの 動作確認をすることが可能です. また, GitHub Codespaces を利用することで, ブラウザのみでコーディング&動作確認を完結することができます.

設定

  • 利用するイメージを ghcr.io/sarisia/mikanos:vnc に設定

    .devcontainer/Dockerfile を直接変更する, もしくは最新の .devcontainer/devcontainer.json.devcontainer/Dockerfile を参考に設定して下さい.

  • devcontainer 設定を追加

    最新の .devcontainer/devcontainer.json を参考に, 以下の設定を追加して下さい:

    "forwardPorts": [6080],
    "overrideCommand": false,
    "containerEnv": {
        // Port for noVNC Web Client & WebSocket
        "NOVNC_PORT": "6080",
        // VNC port QEMU listens. Default to 5900 + <display number>
        // If you run QEMU with "-vnc :1", then VNC_PORT should be 5901.
        "VNC_PORT": "5900",
        // QEMU launch options. Used in `run_image.sh`
        "QEMU_OPTS": "-vnc :0"
    },

カスタマイズ

環境変数を通じてカスタマイズが可能です. 詳細は mikanos-docker ドキュメント を参照して下さい.

トラブルシューティング

sarisia/mikanos-docker の Wiki をご確認ください.

バグ, 要望

Twitter (@A1ces)Issues で教えてくださると嬉しいです!

参考

mikanos-devcontainer's People

Contributors

sarisia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

mikanos-devcontainer's Issues

osbook_day07aにてmakeコマンドを実行時に'cstdint' file not foundというエラーが発生した

初めて質問させていただきます。
現在本githubの手順を参考に構築したmikanos-devcontainerを利用して勉強を進めています。

6章(tag:osbook-day6c)までは問題なく進めていたのですが、7章のtag:osbook_07aをcheckoutしたのち、makeコマンドを実行したところ'cstdint' file not foundというエラーが発生しました。
少し調べてみたところ、参考になりそうなサイトが見つかりましたので、main.cppにあるincludeの記述方法を以下のように変更して再度makeコマンドを実行してみました。

#include <stdint.h>
#include <stddef.h>
#include <stdio.h>

すると、今後は'bits/libc-header-start.h' file not foundというエラーが発生するようになりました。
find /usr -name libc-header-start.hを実行すると以下のようにパスが返ってくることは確認したのですが、解決方法が分からず詰まっている状況です。

/usr/include/x86_64-linux-gnu/bits/libc-header-start.h

もし解決方法について心当たりがありましたらご教示いただけないでしょうか?

VS Code devcontainerを用いたセットアップエラーについて

概要

docker imageとテンプレートのご提供ありがとうございます。
こちらの記事を参考にVS Code devcontainerで環境構築をしております。
imageのビルドは出来ていそうですが、containerの起動に失敗します。
もし原因がわかる場合、ご教示していただきたいです。

環境

MacOS(Catalina version: 10.15.7)
VSCode(version: 1.58.0)
docker desktop(version: 3.5.1)

やったこと

下記エラー内容に含まれる

docker: you are not authorized to perform this operation: server returned 401.

の対応をしました。

export DOCKER_CONTENT_TRUST=0 とし、Docker Content Trustを無効にしたのですが、上記エラーは消えませんでした。
他に原因を見つけられませんでした。

DOCKER_CONTENT_TRUST=0の確認です。
※個人名が入る部分は xxxxxx で置換しています。

xxxxxx@xxxxxxnoMacBook-Air mikanos-devcontainer % echo ${DOCKER_CONTENT_TRUST}
0

エラー内容

※個人名が入る部分は xxxxxx で置換しています。

[315 ms] Remote-Containers 0.187.0 in VS Code 1.58.0 (2d23c42a936db1c7b3b06f918cde29561cc47cd6).
[314 ms] Start: Resolving Remote
[327 ms] Setting up container for folder or workspace: /Users/xxxxxx/study/os/mikanos-devcontainer
[328 ms] Context: desktop-linux
[330 ms] Start: Check Docker is running
[330 ms] Start: Run: docker version --format {{.Server.APIVersion}}
[771 ms] Server API version: 1.41
[854 ms] Start: Run: git rev-parse --show-cdup
[895 ms] Start: Run: docker ps -q -a --filter label=vsch.local.folder=/Users/xxxxxx/study/os/mikanos-devcontainer --filter label=vsch.quality=stable
[1082 ms] Start: Run: docker build -f /Users/xxxxxx/study/os/mikanos-devcontainer/.devcontainer/Dockerfile -t vsc-mikanos-devcontainer-ee6ffb01a42f7f4295eeddaf141494ff --build-arg VARIANT=latest /Users/xxxxxx/study/os/mikanos-devcontainer/.devcontainer
[+] Building 1.2s (5/5) FINISHED                                                
 => [internal] load build definition from Dockerfile                       0.1s
 => => transferring dockerfile: 37B                                        0.0s
 => [internal] load .dockerignore                                          0.0s
 => => transferring context: 2B                                            0.0s
 => [internal] load metadata for ghcr.io/sarisia/mikanos:latest            0.7s
 => CACHED [1/1] FROM ghcr.io/sarisia/mikanos:latest@sha256:19dba9d39f1f4  0.0s
 => exporting to image                                                     0.1s
 => => exporting layers                                                    0.0s
 => => writing image sha256:b801f0728fb5988bd30866108ad13cfa81a40d61c83ce  0.0s
 => => naming to docker.io/library/vsc-mikanos-devcontainer-ee6ffb01a42f7  0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
[4193 ms] Start: Run: docker events --format {{json .}} --filter event=start
[4198 ms] Start: Starting container
[4198 ms] Start: Run: docker run --sig-proxy=false -a STDOUT -a STDERR --mount type=bind,source=/Users/xxxxxx/study/os/mikanos-devcontainer,target=/workspaces/mikanos-devcontainer,consistency=cached --mount type=volume,src=vscode,dst=/vscode -l vsch.local.folder=/Users/xxxxxx/study/os/mikanos-devcontainer -l vsch.quality=stable -l vsch.remote.devPort=0 --privileged --entrypoint /bin/sh vsc-mikanos-devcontainer-ee6ffb01a42f7f4295eeddaf141494ff -c echo Container started
docker: you are not authorized to perform this operation: server returned 401.
See 'docker run --help'.
[7291 ms] Start: Run: docker ps -q -a --filter label=vsch.local.folder=/Users/xxxxxx/study/os/mikanos-devcontainer --filter label=vsch.quality=stable
[7475 ms] Command failed: docker run --sig-proxy=false -a STDOUT -a STDERR --mount type=bind,source=/Users/xxxxxx/study/os/mikanos-devcontainer,target=/workspaces/mikanos-devcontainer,consistency=cached --mount type=volume,src=vscode,dst=/vscode -l vsch.local.folder=/Users/xxxxxx/study/os/mikanos-devcontainer -l vsch.quality=stable -l vsch.remote.devPort=0 --privileged --entrypoint /bin/sh vsc-mikanos-devcontainer-ee6ffb01a42f7f4295eeddaf141494ff -c echo Container started
trap "exit 0" 15

while sleep 1 & wait $!; do :; done

VS Code devcontainerセットアップのエラーについて

こちらの記事を参考にVS Code devcontainerで環境構築をセッティングしておりますが、dockerイメージをビルドするところでエラーが出ております。

  • 環境

    • MacOS(BIg Sur version11.2.3)
    • VSCode
    • zsh
  • やったこと
    vscodeからリポジトリをクローンし、Remote-Containers: Open Folder in Containerを選択したところ、以下のようなエラーが発生しました。

 Command in container failed: for pid in `cd /proc && ls -d [0-9]*`; do { echo $pid ; readlink /proc/$pid/cwd ; readlink /proc/$pid/ns/mnt ; cat /proc/$pid/stat | tr "
" " " ; echo ; xargs -0 < /proc/$pid/environ ; xargs -0 < /proc/$pid/cmdline ; } ; echo --- ; done ; readlink /proc/self/ns/mnt 2>/dev/null

dockerの知識を素人に毛が生えた程度しか持たないので、原因究明を手伝っていただけると幸いです。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.