勢いだけで用意したので項目の順番とか読みやすさとかはぐちゃぐちゃです。
できそうな時にもうちょっと整理するつもりですが、実際できるかはわかりませんorz
はじめに
元ネタのスライドはこちら。スライド最後に付け足されている補足はこちら。
こんなタイトルですがzgock先生は神です。これ読む前はやりたくても手をつけられずにいたため、今は崇めています(
もちろんAlex神のことも崇めなければこの世界ではやっていけません。
手元の環境について軽く触れておきます
- i7-6700K + Z170
- CPU側PCIeにACS問題があると知った今となってはSkylake-Xが欲しくて欲しくて、、
- パススルーさせたいのはGTX980TiとUSBコントローラひとつとNIC
- 人間はopenSUSE初見&Linux初級者。
Gentoo使ってるけどemergeすら毎回ググってるし初級者- 本当はFreeBSD+bhyveでやりたいけど、Skylake/Broadwell+bhyve+PCIpassthruすると
OSが爆発炎上してド派手に死ぬそれは言い過ぎかもしれませんが、ホスト起動中に大変悲しいことになるので普通にKVMです
- 本当はFreeBSD+bhyveでやりたいけど、Skylake/Broadwell+bhyve+PCIpassthruすると
- 書き始める前最後の構築をした時のTumbleweedスナップショットは20170726
- 構築途上ではUbuntu17.04とかLeap42.2とかUbuntu16.04.2とか色々漂流した果てにTumbleweedに戻ってくることになりました
ネットワークインストールのときミラーを変更する方法
- 確かLeap42.2も同様だった。さっき公開されたばかりなのに早くも好評を自称している42.3は知らん!
- 件のスライドで
riken.jp
が紹介されている。ぜひ活用したいが…… - 実は、自動起動するYaST2インストーラ上からは一旦インストールまでたどり着いてから途中でLANケーブル引っこ抜いてダイアログ出させる、みたいなすごく乱暴な方法を使わない限り無理
- その辺のオンラインガイドではブートストラップ画面でファンクションキー押すみたいなことが書かれているけど、今のバージョンでは何故か機能しない。
- ではどうすればいいのかというと、一旦Abortまたは中止を押してこいつを閉じるとTUIのメニューが現れるので、そこからミラーを設定する
- デフォルトの
downloads.opensuse.org
はダメ絶対。運が悪いと20KiB/secとかで5GBくらい転送し続ける状況になる- ネットワークインストールの場合、ブートそのものに気の遠くなるような時間がかかる。かかった。つらかった
- 環境が整っている人なら、理研からバーニング最高速転送(言い過ぎ)してもらえる
-
NGN IPoE民のためのIPv6鯖は本家にすらないっぽい
Skylake環境依存と思われる問題
- 仮想マシンにSMPを設定する、または2048MBを上回るRAMを与えるとOVMFが正しく起動できず、CPU時間を無限にmogmogするだけのカビゴンVMが誕生する
- 二つの条件は片方でも満たすとカビゴン化するので、ゲーマーはフリーソフト(死語)だと思って遊び始めたら体験版だった時の顔をする羽目に
- redditのArch板
だっけな?に同じ症状で悩んでいる人たちがいたっぽかった感じがしたので、多分これは近頃のOVMFがバグを抱えているということだと推測- QEMUも怪しかったが、回避を達成した結果からバックポートすれば犯人はOVMFだった
- なお、この時使ってみたLeap42.2では
vfio
系統のカーネルモジュールをロードさせるのに難儀。いろんな方法を調べたが、手元の環境では奇跡の一回以外は二度とできなくなってしまった……。 - じゃあ正解はというと、TumbleweedでKVMの構築まで済ませてからOVMF本体の入ったLeap用rpmをもらってきてコマンドでインストールすること
- redditのArch板
- 上記問題を回避したいからといって迂闊にLTS版Ubuntuとかの古いカーネルが入るディストロを使うと下記のZ170利得が失われて悲しい結果になる
- Z170チップセットには(英語があんま読めないなりにAlex大明神の記述を見るにどうも半端で苛だたしい実装らしいが)ACSが実装されており、CPU側は相変わらず分離できないながらチップセット側は幸運な人にはうまく分離してくれる。してくれた
- このためx4でも大概十分である(偏見)ゲーム用途の人はACSオーバーライドを使わず、グラボをサウスブリッジ側に回すのも選択肢
- 他のチップセットで同じことをすると
まず間違いなく大量のおまけをつける羽目になるので素直にCPU側のままACS上書きした方が賢明 - 同世代の下位であるH170以下でどうなるのかは私の読解力ではわからず要人柱
- openSUSEのカーネルはTumbleweedでもLeap42.2でもこいつを扱えるが、Ubuntu16.04.2のデフォルトカーネルはこいつを扱えずにチップセット側のパススルーが超どんぶり勘定になってしまう
- 一回テストで使った17.04のカーネルは恐らく大丈夫だった
はずだが自信はあんまりない。 - おまけ情報:実は、openSUSEの
ovmf
パッケージにはREADME
しか入っていない。qemu-ovmf-x86_64
を入れよう
- 一回テストで使った17.04のカーネルは恐らく大丈夫だった
- Z170チップセットには(英語があんま読めないなりにAlex大明神の記述を見るにどうも半端で苛だたしい実装らしいが)ACSが実装されており、CPU側は相変わらず分離できないながらチップセット側は幸運な人にはうまく分離してくれる。してくれた
この手のSkylake不具合、大概Haswellは大丈夫でBroadwellは駄目なイメージがある。実際どうかは要人柱
- 二つの条件は片方でも満たすとカビゴン化するので、ゲーマーはフリーソフト(死語)だと思って遊び始めたら体験版だった時の顔をする羽目に
日本語入力メソッドについて
- どのデスクトップ環境を選んでも、デフォルトでは
悪名高いiBusになっている。YaST2インストーラは入れるパッケージを全部手で指定できるようになっているので、気になる人は必ずfcitxに変更 - ただ、私がわずかに使った範囲ではiBusで困ることもなかったので、気にならない人は放置でも駄目ではないかも
ホストネームについて
- 地味にYaST2では設定できない。素直に
hostnamectl set-hostname
しよう - でも現行Tumbleweedでは
それだけだとlibvirtd
とかがsystemdの片隅で人知れず愚痴ってたりするのでhosts
にも書いとく- OSが認識する自ホストネームは設定できないYaST2だが、こっちはなぜか設定できる
- 一方、Leap42.2のYaST2は自分のホストネームもちゃんと設定できた
気がする
X転送について
- これは、すらっぐが手持ちのMacを使った限り今のTumbleweedでは何やってもダメ。ファイアウォール切ろうが何しようがディスプレイサーバに弾かれたでござるとかのたまう
- 一方Leap42.2では何の問題もなくできたので、ただいまのバージョンに何か問題があるのではなかろうか。
まあ我がMacの/etc/ssh/ssh_config
他が残念な可能性の方が高そうだけど - というわけで人によってはスライド通りいきなりnomodesetつけちゃうとドボンするので、あらかじめX転送がうまくいくことを確認してからランレベル下げる準備に入ると良いでしょう
BIOSについて
- ASRockの某Z170ママンを使っているが、x2apicの無効化ビットとやらを解除する設定はどこにも見当たらなかった。このような場合はカーネルオプションには
intel_iommu=on
の他にintremap=no_x2apic_optout
をつけておきましょう、なんて案内がされている。dmesg
にも出るので、直接コピペするとoptoutをoutputと書いてしまうこともなくてgood - といいつつ、xapicモードのままで現実に何かしんどい問題が発生するのかどうかは不明。そのままでもよかったのかな
キーボード配列について
- JISキーボードを使っている場合。インストール時に指定するキーボード配列は、Tumbleweedにおいてはなぜか完了後にYaST2からもう一回設定しないとUSになってしまう。
dmesgをパイプしようとして気づきイラつくのはもはや一つの儀式と言っても過言ではない - なおLeapでは何の問題もなくインストール時の配列になってたので、ただいまの(ry
HiDPIモニタで設定する場合のもろもろ
- 私の場合は一枚のdGPUさえパススルーできればオッケーだったので、i7-6700K内蔵のHD530はホストに使ってもらいました
- 本当はMac miniからVNCしたいけど、どうしたことかVNCは繋がるけど肝心の画面は真っ黒
- UEFIでのプライマリがオンボードになっていても、YaST2はdGPU優先でインストールリスト組んじゃうので
xf86-video-intel
を手動指定しませう
-
インストール時にデスクトップ環境を好き放題選べる天国のようなYaST2インストーラだが、HiDPIモニタをお使いの方はKDE PlasmaかGNOMEがよろしい感じ
- この二つは各々の設定ツールから普通にスケーリングの設定ができるので、私のようなHiDPIありきで27インチしかないUltraHDモニタ使ってるような人はちょっとサイズが大きくてもこいつらを採用した方が後々の不幸が少ない
- 他の環境ではArchWikiを参考に設定することになるけど、結局拡大してくれるのは文字だけだったりモニタ全部一緒くたに拡大しちゃったりぽつぽつ対象外アプリが生じたりいい感じに残念という印象
- この二つは各々の設定ツールから普通にスケーリングの設定ができるので、私のようなHiDPIありきで27インチしかないUltraHDモニタ使ってるような人はちょっとサイズが大きくてもこいつらを採用した方が後々の不幸が少ない
zgock先生の公開されているリポジトリをどうやって使えばいいのか?
- YaST2から「ソフトウェアリポジトリ」を選択する
のだが、その先は初めて触った人にはちんぷんちんぷんぷんな世界に突入する - 追加ボタンを押すとまずリポジトリ名、これは単なる名前
のくせに2バイト文字が入ってると怒られる - URLは
build.opensuse.org
のURLでは駄目。スライドに書いてあるURLのページはまずGPG鍵をメモるだけの用途で、Repositories->Go to download repository->開いたページのdownload.opensuse.org
なURLをここに入れて進めばOK- なおURLスキームが入っていないと怒られるので
http://
からちゃんと打つこと
- なおURLスキームが入っていないと怒られるので
zgock先生のパッケージの美味しいいただき方
- YaST2やメニューからソフトウェア管理を起動すると、インストール直後はタブが三つしかない。左の
表示(V)
の中にリポジトリごとで集計してくれるタブが隠れているので、選んで用意する - こうしてzgock先生のパッケージが一覧できるようになるが、油断してはいけない
- kernel関係がいろいろあるが、当初からチェックが入っている
kernel-default
のバージョン(V)
内でまずチェック対象をメインリポジトリのものからzgock先生のものに切り替える- 通常、このタブはラジオボタンで選択する内容になっているが、カーネル関連のパッケージだけは例外になっておりチェックボックスで複数選択が利くようになっている
- ここで不用意に他の
kernel-*
パッケージに触れるとOSの起動に失敗してしまうことがあるので注意snapper
神に「神は言っている……ここで死ぬ運命ではないと……」してもらう円環の理に導かれて
- 続いて必要な人は
zfs
のチェックを入れると推奨パッケージでいろんなやつにチェックが入るが、kernel系の奴らは全部公式リポジトリの奴らが指定されてしまうのでこれらもzgock先生のものに変えておくと安心。そうはせずkernel-default
以外全部公式最新版使った場合どうなるかは試していないので不明。 - 私はこのあと目についた
zfs-dracut
も入れておいたが、root on zfsにしてるわけでもないのに本当に必要かは不明
- kernel関係がいろいろあるが、当初からチェックが入っている
- 全て適切な操作で完了まで行けば、YaST2から「新しいカーネルになったのでリブートしてちょ」って言われる
- この後、ZFS入れた人は
systemctl status
するとdegraded
とか言われる-
systemctl --failed
するとzfs
のカーネルモジュールがないっすと申し出があるので、dkms
先生にinstall
してもらいましょう
-
今のTumbleweedではYaST2の「ハイパーバイザとツールのインストール」が機能していない
- 出てくるダイアログでKVMやその管理ツールにチェックを入れても、「インストールに失敗しました」と
冷たい一言と共に閉じてしまう - めげずに、
ソフトウェア管理
の方から表示(V)
→パターン(N)
でKVMホストサーバ
にチェックを入れよう - ところが、このチェックボックスは
libvirt
をスルーするガバガバ兄貴なのでそれには忘れず自分でチェックを入れておくこと -
これで動くと思うじゃろ?……まだ仮想マシンマネージャーは動かない。YaST2の
サービスマネージャ
からlibvirtd
を有効にする作業をきっちりやってやる必要がある - なお、Leap42.2ではこの辺り全く正常に機能した
- でもLeapはLeapで後述の問題で悲しいことになるわけで
しかし、なんかローリングリリースとはいえ作り込み具合のわりに結構各部がゆるゆるなのが気になる……
INITRD_MODULESの書き方について
- 多分、snapper活用という意味では空っぽの
INITRD_MODULES
を/etc/sysconfig/kernel
に書いてから/etc/sysconfigエディタ
で中身を書くのが正しい- なお、YaST2の/etc/sysconfigエディタで新しいファイルや項目を作ることはできないし、作った
INITRD_MODULES
もSystem
のKernel
ではなくOther
のetc
のsysconfig
のkernel
という島流しされたとしか思えない位置に出現する。
- なお、YaST2の/etc/sysconfigエディタで新しいファイルや項目を作ることはできないし、作った
- 私はスライドに書かれていた
pci-stub
が必要な場合というのがどんな場合かわからなかったので、vfio
系だけ登録 - 変更するとその直後に「変更の有効化」なんてのが出てきてこれ見よがしにチェックマークが入ってからダイアログが閉じるが、もちろん有効化なんてされていない
- 大人しく
mkinitrd
しましょう - なお、Leap42.2は全く同じ作業ができるが、なぜかやってもモジュールを読んではくれない。その他
/etc/dracut.conf.d/somewhat.conf
など書いても読んでくれず、何かの拍子に一回成功したと思ったらそのカーネルはリブートすると起動しなくなり、何故かsnapper神すら跳ね返し(XFSである/homeのdotfilesあたりに何かあった?)OSごと再構築してもう二度と再現できず、、結局諦めてしまった。
- 大人しく
code 43 hellについて
- 再構築の度についつい対策し忘れる。
はいみなさんご一緒に、NVIDIA: **** you! - ArchWikiを見に行くと、スライドでの指定部の他に書き足すべき項目がもう一つある旨書かれているので一応参照のこと
ところで、ダブルクォーテーション付きで”code 43 hell”でググっても3つしか見つからない上にそのうち2つがこのスライド関連なのですが本当に言われてるんでしょうか
助けて!増やしたはずのCPUスレが1つしかないの!
-
うろたえるな!OVMF自身が起動できていれば、
virsh
コマンドからvcpuを増やした上でゲストをリブートせしめれば拙者の場合はなんとかなったでござる。それで駄目なら拙者にはわからぬw
vfio-pciでパススルーするデバイスの指定について
- 先生によればファイル名自由とのことでしたが、openSUSEの場合は元から
99-local.conf
というお誂え向きの空っぽファイルがあるのでこだわりのない人はそこに書けばOKところで、systemdとかでよく見るこの手のファイル名冒頭の番号は何なのだろう。名前順ソート最適化のため?
もしかしてこいつに書いては駄目なのかと邪推した結果トラブルシューティングにかかる時間が増えたりしてた
ホストの起動時にwickedがぐずってめっちゃ時間かかる問題
- 持病です。直す方法は、お持ちのルータをDHCP及びRSのリクエストにちょっぱやで応答してくれるように仕上げることです
今回参照した資料はもうとっちらかりすぎてあんま覚えてないっす
- 偉大なる元ネタ様は冒頭でリンク貼ったのでよしとして、、
- 総合
- IOMMU関連
- Leap42.2で困った時参照し
て奇跡の1ブートののち玉砕した情報源 - VNCとかHiDPIとか
- virshについて
- その他多数、URL回収できたらまた貼ります
取り急ぎこんな感じで失礼します<(_ _)>
どうか、KVMで地獄のどハマりを経験する人が減りますように。