🌊

manjaroのbootstrapを作ってみた。

2022/03/30に公開

bootstrapとは?

既にosが入っているPCにchroot仮想環境を使って、osをインストールするときの処理を手伝ってくれるもの。
一般に/mnt/osnameにディレクトリを作って、そこに/dev/sdxなどデバイスをマウントさせて、そこにインストールするという手法です。
chroot環境はvagrant,docker環境に比べて要求されるスペックが低いので、
メモリ4Gなどの低スペックでも仮想環境を楽に動かすことができます。

manjaroのbootstrapが古くdefualtはunstable

manjaroにはmanjaro-bootstrapがあるが、
manjaro-bootstrapのプロジェクトのソースコードはgithubとgitlabにあり、
github側は既にarchive済み、gitlabのソースコードはブランチがunstableに決めうちされていて、
どちらかというと、manjaro linux開発者用のものだろう。

なので、一般manjaroユーザー用のbootstrapを作るなら、自分で書く必要があります。
0から書くのは大変なので、manjaroのupstreamにあたるarch linux のbootstrap
を参考にしたい。

manjaro-bootstrap

archlinuxにはarch-bootstrapというbootstrap用のスクリプトが
あり、archwikiにgithubへのリンクがある。
archwiki
github arch-bootstrap

これをフォークしてmanjaro用のbootstrapを作った。
manjaro-bootstrap

要件

ホスト側がlinux osであること。

インストール方法

githubからダウンロードしてきて下記のコマンドで適切な場所にインストールしてください。

wget https://raw.githubusercontent.com/KatsutoshiOtogawa/manjaro-bootstrap/main/manjaro-bootstrap.sh
sudo install -m 755 manjaro-bootstrap.sh /usr/local/bin/manjaro-bootstrap

使い方

基本的にはフォーク元のarchlinux-bootstrapと使い方同じです。

# ヘルプ表示
manjaro-bootstrap -h

使い方流れ

# mount用ディレクトリ作成
sudo mkdir /mnt/manjaro
# デバイスファイルにマウント(あらかじめext4などでフォーマットしておくこと。)
sudo mount /dev/sdbx /mnt/manjaro
# インストール
sudo manjaro-bootstrap -r repositoryのurl -a x86_64などcpu /mnt/manjaro
# プロセスやデバイスファイルなどをchroot環境にマウント
sudo mount --types proc /proc myarch/proc
sudo mount --rbind       /sys myarch/sys
sudo mount --make-rslave      myarch/sys
sudo mount --rbind       /dev myarch/dev
sudo mount --make-rslave      myarch/dev
sudo mount --bind        /run myarch/run
sudo mount --make-slave       myarch/run

# chroot
sudo /mnt/manjaro /bin/bash
pacman -S manjaro_release # など自分に必要なものをインストールしていく。
...

chroot抜ける場合。

$ exit
# chroot抜けた後
$ sudo umount -l /mnt/manjaro/dev{/pts,/shm,}
$ sudo umount -R /mnt/manjaro

Discussion