Open5
ブラウザで動くMySQL学習サイトを作るログ
Linuxのイメージを作る
-
Buildrootを使用してLinuxのイメージを作る
-
apt-getとかをローカルでしたくないのでDockerでどっかーんする(とても時間がかかる)
# ベースイメージ FROM ubuntu:latest # 必要なパッケージのインストール RUN apt-get update && apt-get install -y \ build-essential \ git \ wget \ python3 \ unzip \ cpio \ rsync \ file \ bc \ libncurses-dev \ && rm -rf /var/lib/apt/lists/* # 作業ディレクトリを設定 WORKDIR /workspace # Buildrootのダウンロード RUN git clone https://github.com/buildroot/buildroot.git # デフォルトの構成ファイルを使用してビルド WORKDIR /workspace/buildroot RUN make qemu_x86_defconfig && make # コンテナのエントリポイント CMD ["bash"]
-
-
docker build -t buildroot-env .
-
docker run -it --rm buildroot-env
BuildrootにMySQLをいれる
Buildrootが古い場合
Buildrootのversion(2022.08)が古い場合はBuildrootの中にMySQLがある
make menuconfig
-
Target packages
>Library
>Database
>mysql
を選択し、MySQLを有効化
Buildrootが新しい場合
- Buildrootのパッケージディレクトリに移動
cd /workspace/buildroot/package
- MySQLのパッケージ用ディレクトリを作成
mkdir mysql cd mysql
- MySQLのソースコードをダウンロード
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.4.3.tar.gz
- MySQLをBuildrootに理解させる
- BuildrootメニューにMySQLを追加するためにConfig.inファイルを作成
$ cat - > Config.in config BR2_PACKAGE_MYSQL bool "mysql" help MySQL is a widely used relational database management system.
- MySQLのビルド手順を指定するmysql.mkファイルを作成
$ cat - > mysql.mk MYSQL_VERSION = 8.4.3 MYSQL_SOURCE = mysql-$(MYSQL_VERSION).tar.gz MYSQL_SITE = https://dev.mysql.com/get/Downloads/MySQL-8.0 MYSQL_DEPENDENCIES = $(eval $(generic-package))
- BuildrootメニューにMySQLを追加するためにConfig.inファイルを作成
- BuildrootメニューにMySQLを追加
- BuildrootのトップレベルConfig.inファイルを修正
- MySQLパッケージの選択
- make menuconfigでmysqlを選択
- make を実行しBuildrootのビルドを実行
ビルドが完了すると、output/images/rootfs.ext2ファイルが生成され、これがMySQLを含むLinuxイメージとなる
イメージをローカルに持ってくる
- コンテナIDの確認
docker ps
- ファイルのコピー
docker cp <コンテナID>:/workspace/buildroot/output/images/rootfs.ext2 ./rootfs.ext2
このイメージを https://github.com/copy/v86 を使ったらブラウザで実行できるって本当かな
v86.wasmを用意する
- 持ってくる
git clone https://github.com/copy/v86.git
cd v86
- buildwgetなんてローカルにないよな.Dockerつくらなきゃ...
make all