これはGentoo Advent Calendar 2016 Advent Calendar 2016 - Adventarの5日目の記事です。
昨日はろ。の人の記事でした。
Gentoo Advent Calendar - KMYの日記
流石にコンパイラ変えるのはやったことないですね。
概要
Windows10でWindows Subsystem for Linuxってのが追加されました。
そこでそれを使ってGentooを動かしてみようって話です。
ぶっちゃけて言ってしまえば、
この2つを読めばどうということはない記事です。
まぁそれでも良ければ読んでいただければ幸いです。
Windows Subsystem for Linuxって?
以降WSLと略します。
Windowsで動いているサブシステムでLinuxのカーネルのエミュレーションをするシステムみたいな感じ?
ASCIIのASCII.jp:Windows Subsystem for Linuxの中身を詳しく見る|Windows Info を読んでみるとなんとなくわかってくれると思う。
本当にGentoo動くの?
A: 動きます。
このWSL、インストールすると、デフォルトでUbuntuが入るのですが、どうもUbuntu側の利用しているのもよく見るとCloud imageっぽい感じがある。
じゃあファイル置き換えれば行けるんじゃね?みたいな感じで、WSL-Distribution-Switcher(以後WSL-DS)というプロジェクトが生まれました。(知らないけど多分そう)
とはいえ、WSLなりの制限はあるし、カーネルもUbuntu14.04のカーネル3.4.0互換しかないし、色々割り切って使う必要はあります。
入れ方
ここから入れ方を解説していきます。
Gentoo-WSLのページにあるのを言い換えただけの感じがしますが。
ちょっとはGentooを使ったことのある人向けな感じなので、これを機にGentoo使ってみたい!ってなった人はごめんなさい。
WSLをインストールする
詳しい説明は割愛
- Windows 10のanniversary update以降を入れる
- "プログラムの追加と削除"からWSL(beta)を追加
- Windows 10の開発者モードをオンにする
- 再起動する
- "Bash on Ubuntu on Windows"が追加されるはずなので起動する
- Ubuntuのインストールを待つ
WSL-DSをつかってGentooを展開する
- まずGitHubから適当な方法でファイルを取得して、適当な場所に置く(WSL配下でなくてよい)
- Python3をインストールする(PATHに入れといたほうが楽)
- WSL-DSのフォルダにgentooのstage3-*-nomultilib.tar.bz2を置く
- cmdかPower ShellでWSL-DSのフォルダにcdして、
python install.py stage3-*.tar.bz2
を実行する
ちなみに、このときにUbuntu環境でのhomeや/etc/passwdなどは引き継がれます
nomultilibを使うのは、WSLが64bitでしか実行できないからっぽい。
Gentooのセットアップをする
bashを起動する前にログインユーザをrootに変えておきます
> lxrun /setdefaultuser root
Gentooのstage3にはsudoがないのと、pam_wheel.soが有効になっているので、wheelグループに一般ユーザを入れておかないと、su root出来ないからですね。説明めんどくさいのでrootでログインしちゃいます
ちなみにrootを書き換えれば他のユーザをログインユーザに変える事ができる
- "Bash on Ubuntu on Windows"(中身はGentoo)を起動するなり、cmd.exeで
> bash
なりしてGentoo環境に入ります。 # nano /usr/lib64/python2.7/site-packages/_emerge/AbstractEbuildProcess.py
して、_enable_ipc_daemon = False
に書き換える。(python3.4の方も同様に書き換える)- USEに
-ipc
を加える(適当にmake.confも書き換える) - package.useに
sys-apps/portage -ipc
を追加する - repos.conf (2日目の記事)を書く
# emerge-webrsync
- なんかgcc関連のシンボリックリンクが壊れてるので直す シンボリックリンクがシンボリックリンク貼ってるので、こう、解決してうまくやって。なんでこうなってるのかわからないんだけど、分かる人が居たら教えて!
2、3のあたりの処理は、WSLがSystemV IPCの機能を持ってないから
emergeもeselectも動く!
これでWindowsでGentooライフが楽しめますね。
あの長いSLが走る
使ってみて
なんかアレな部分
- WSL自身に色々不具合がある
- デフォで入ってる.bashrcがエラー出すし、umaskが設定されてない
- WSLで足りてなくてビルドに失敗する物がある
- psが動かない(WindowsのInsider Previewでは解決されてる)
- やっぱり遅い
- デフォルトのターミナルのcmdのアレが弱い
psが動かない原因のお陰で、glibcがコンパイル出来なかったりします。
遅いのは、やっぱりAPIの変換掛けてたりするからなんでしょうね。
あと、bashで起動するconhost?のアイコンは、lxssディレクトリのアイコンを変更することで自分の好きなのに変えられる。
明日の記事はらりおさんです。よろしくお願いいたします。