• 作成:
  • 更新:

Alienware m17に買い換えてGentoo LinuxをBtrfs on dm-cryptでインストールしてNVIDIAのGPUを有効にして起動しました

この記事には

  • Alienware m17の購入に至った理由
  • 購入方法(ALIENWARESTORE AKIBAでの購入が1万円割引でオススメ?)
  • Gentoo LinuxのBtrfs multiple device on dm-cryptでのインストール方法
  • OptimusをBIOSで無効化出来ない状態でもNVIDIAのGPUをLinuxで使う方法
  • Alienware m17のレビュー

が書かれています.

Alienware m17 (08A2) 型番P32Eを購入しました

第8世代のインテルCPUを搭載した薄型ゲーミング ノートパソコンAlienware m17 | Dell 日本

これ新製品だからか型番でググっても何も出てきません.型番はシールにはP32Eと書いてますが,lshwは08A2と報告してきます.

おしゃれな箱に入っています
おしゃれな箱に入っています
XPS 13と比べると暴力的に大きい
XPS 13と比べると暴力的に大きい

購入理由

ゲームではないプログラミングに適したラップトップPCを調べた時のメモ - ncaq

で検討した時はデスクトップが支給されると決まったと書きました.

しかしその後ほぼリモートワーク許可されると知らされたので,デスクトップ組まずに家で自分のデスクトップを使っていました.

しかしあまりにも進捗が出なかったので1月にリモートワークがキャンセルされてしまって,最近は職場では変わらずXPS 13(2016年モデル)を使っていました.

XPS 13 9360(2016年発売)を購入した - ncaq

最近はElectronだけではなくRustを書いたりDockerを扱ったりしていて,複数のプロジェクトを同時進行(私はRustを書きますがElectronプロジェクトの動作確認などをする)したりしていて,常にスワップを食っていてよくフリーズすらするので早急に買い換える必要が出てきました.フリーズするのはLinux 4.19のBtrfsでループバックデバイスで無理やりswapfileを作っていたのが原因な気もしないではないですが.Btrfsでswapfileが正式にサポートされるのはLinux 5.0からです.

職場にデスクトップの支給を要請しても良かったのですが,このメモリ8GBのPCだと客先で説明してる間にフリーズしてしまうのではないかという不安すら出てきて,そろそろラップトップの買い替え時だなと判断しました.勉強会とかにも使えますしね.

丁度CES 2019でXPS 15の新型出ないかなと心待ちにしていたのですが,XPS 13, Dell G, Alienwareの新型は出ましたがXPS 15の新型は出ませんでした.

がっかりしましたが,CES 2019で新製品が出たAlienware mシリーズに目をつけました.

これはXPS 15と重量が1kg以下しか変わらないので職場に毎日持っていくことも可能です.

ゲームじゃないプログラミング用途にAlienwareとかアホなの?と思うかもしれませんが,実は6コアCPUと4Kディスプレイと32GBメモリを搭載して冷却が十分な安価なPCを探すとこれになるんですよね.条件満たしそうだと思う数少ないものもカスタム見てみたら英語キーボード選択できないのでボツになりますし.

第8世代のコア数6のIntelモバイルCPUは強力ですが,Macbook ProやXPS 15では冷却が足りずにサーマルスロットリングが発生することは話題になりました.

冷却機構がゲーミングらしく充実していてビルド作業にも向いていることでしょう.

このファンの大きさはウルトラブックにはマネできない
このファンの大きさはウルトラブックにはマネできない

問題はGPUが無駄に高級なことですが,今後Unityでの開発をすることが出てくるかもしれないのでGPUも役に立つかもしれません.

Alienware m15だとXPS 15に対した優位点がさほどないため,せっかくなのでAlienware m17を購入することにしました.画面がでかいのは正義です.さほど動かさないなら尚更.XPS 17は死んだので,このサイズの製品をDellで買うならAlienwareぐらいしかありません.

せっかくなので一番高級でデスクトップCPUを積んだAlienware Area-51mを買うか一瞬迷いましたが,ディスプレイがアップグレードしてもフルHDだったので即座に候補から外れました.真面目にゲーミングするとなると4Kなんかより144Hzを優先することは理解できますが,まあ私が求めているのはゲーミング用途ではないので…

ThinkPad X1 ExtremeMacBook Proはメモリ32GBと4Kディスプレイを備えて英語キーボードを使えてギリギリ及第点に見えますが,冷却が十分でなく15インチで40万円します.

というわけで2月1日に注文可能になったのでカスタマイズを見て色々考えました.

ストレージ

この前の記事にSSDは1TBって書いてましたが,最近別に512GBで十分なことがわかってきました.今でも100GBぐらいしか使っていませんし.でも後からは増やせないのでSSHDの1TBでも一応足しておくべきか…?これがシンプルに1TBのSSDに出来るなら迷わずそうしていたのですが,512GB+512GBとか1TB+1TBの構成しかないので迷っています.

XPS 15

InfinityEdgeディスプレイを採用したXPS 15インチ9570ハイパフォーマンス4Kノートパソコン | Dell 日本

  • i9-8950HK
  • 32GB
  • 1TB M.2 PCIe SSD
  • NVIDIA® GeForce® GTX 1050Ti 4GB GDDR5 付き
  • 15.6インチ 4K
  • 97 WHr
  • 2 kg
  • 301,733円

Alienware m17(US)

Alienware m17 Thin Gaming Laptop with 8th Gen Intel CPU | Dell United States

  • i9-8950HK
  • 32GB
  • 1TB PCIe M.2 SSD + 1TB PCIe M.2 SSD
  • NVIDIA® GeForce RTX™ 2080 8GB GDDR6 with Max-Q Design
  • 17.3 4K
  • 60 Wh
  • 2.63 Kg
  • 1年間 アクシデンタルダメージ (盗難対応オプション付き)
  • $4,399.99(479,088円)

Alienware m17

第8世代のインテルCPUを搭載した薄型ゲーミング ノートパソコンAlienware m17 | Dell 日本

カスタマイズしたら同じ構成になる製品が多すぎて全く意味が分からない.何故プロダクト名を分けているんだ?

完全に意味不明.

なのでとりあえず複数同じように満足できるカスタム組んでみました

NEW ALIENWARE m17 プラチナ VR

  • i9-8950HK
  • 32GB
  • 512GB PCIe M.2 SSD
  • NVIDIA® GeForce RTX™ 2080 8GB GDDR6 Max-Q デザイン 付き
  • 17.3インチ UHD
  • 60 Wh
  • 2.63 Kg
  • 1年間 アクシデンタルダメージ (盗難対応オプション付き)
  • 441,754円

NEW ALIENWARE m17 スプレマシー VR

  • スペックは上と全く同じのはず
  • 460,319円

NEW ALIENWARE m17 フルカスタマイズ

i9-8950HK搭載のやつ買ってもどうせサーマル·スロットリングするから,i7のやつ搭載してるやつも検討してみることにしました.シングルスレッドだとターボブーストのおかげで確実に早くなるのですが,マルチスレッドがあまり延びませんからね…

  • i7-8750H
  • NVIDIA® GeForce RTX™ 2060 6GB GDDR6
  • 他は上と同じ
  • 325,892円

NEW ALIENWARE m17 プレミアム VR

  • NVIDIA® GeForce RTX™ 2070 8GB GDDR6 Max-Q デザイン 付き
  • 他は上と同じ
  • 356,024円

なんで価格変わるのかわからない

GPUが変わってるやつとかは勿論わかるのですが,なんで構成が同じなもので値段が変わるのか全くわからない…

これはALIENWARESTORE AKIBAに実際に突撃して聞くのが早そうですね.

別にDellのチャットで聞いても良いのですが,こちらで買うと安くなるとこの間来店した時に囁かれたのでついでに聞いてみます.

Alienware Store Akibaで聞いてみた

基本スペック上に詰む場合はハイスペックの個体をベースにした方が安くなるはずなのに,今回下のモデルをカスタムした方が安くなる理由は分からないとのこと.

店行ってから考えたのですが,Core i9を選択すると強制的にRTX 2080になって10万円以上高くなるので,ゲームに使わないモデルにそんなの積むの過剰装備で,過剰装備に10万円も使ってられないなあと思いました

というわけでRTX 2060を搭載しているNEW ALIENWARE m17 フルカスタマイズをベースにして,Core i7で組むことにしました.

後から調べたらRTX 2060ってGTX 1070と同等ぐらいの性能があるんですね.ハイスペックゲームをしないなら十分な性能ですね…

具体的にはCivilization 6ぐらいなら余裕で動きそう.試してないけどGTX 1060で4Kでも30FPS前後なら出るらしいので.Sid Meier's Civilization VI тест GPU(обновлён с DirectX 12) | RTS / Стратегии | Тест GPUまあ負荷がかかるのがCPUですからね.

SSD512GBだとやはり足りないのではと思ったのですが,HDDは駆動部分あるから壊れるの怖いので,512GB+512GBのモデルにSSDを買い足すことにしました.1TB+1TBモデルもあったのですがそれは7万円もつぎ足すことになるので躊躇しました.

Windowsを縮小して100GBぐらいにして,残りの部分ともう1つのSSDをBtrfsでまとめて使う予定です.

SSDのみの構成にしてHDDを積まなかったら筐体に余裕が出来るそうで,大容量バッテリーの搭載を勧められました.もう誤差なので積むことにしました.少し重くなりますが客先でバッテリー切れになる恐れを考えれば増やしたほうが良いという説もあります.LinuxでGPU切り替えめっちゃだるいのでdGPUを使いっぱなしになるので電力消費量は多くなる予定ですし.

リアルサイトで買う場合Dellアカウントに購入履歴が残せないというのは少し残念ですね.セキュリティ上の理由から入力は出来ないということです.クレジットカード番号は入力できるのに正直何故…という気持ちはあります.まあ保証には影響しないので問題ないのですが.

Linuxサポート

殆ど同じ構成のはずのAlienware m15がLinuxで動いているという報告があります.

Bug #1811869 “Alienware m15 takes very long to boot Ubuntu” : Bugs : linux package : Ubuntu

起動が遅いとかカーネルブートパラメータでACPIの一部の機能をオフにする必要があるらしいですが.

SystemRescueCD入れたUSBメモリ持っていって,展示されているm15のハードウェアを認識するか確かめさせて貰おうかなと思ったのですが,流石に無理でした.まあこっそりマルウェアとか入れられたら困りますしね…

Linuxの正確な動作確認は出来ませんでしたが,店員さんによると到着から1週間は初期状態の復旧が出来れば返品出来るそうなので,動かなければ返品するつもりです.

最終的な構成

  • NEW ALIENWARE m17 フルカスタマイズ
  • i7-8750H
  • 17.3インチ UHD (3840 x 2160) 60Hz IPS
  • 32GB 2x16GB DDR4-2666MHz
  • 512GB PCIe M.2 SSD + 512GB PCIe M.2 SSD
  • 90 WHr, 6-Cell バッテリ
  • GeForce RTX 2060 6GB
  • 1年間 アクシデンタル ダメージサービス(盗難対応オプション付)

これでクーポン込みで35万円ちょっとで,Alienware Store Akibaの割引で1万円と端数を割引して配送料と消費税込みで丁度34万円でした.

みなさんAlienwareとかのDell製品買うなら,ネット注文じゃなくてAlienware Store Akibaに限らずDell リアルサイトに行った方が良いですよ.平然と1万円クラスの割引が入りますからね.もちろんDellのサイトで使えるクーポンに加えての割引です.

ここで普通のサイトならDellの広告を貼り付けて,Dellのサイトに誘導するのでしょうけど,私はそもそもDellと広告契約を結んでいない上に,リアルサイトを紹介しても一銭も入らないという問題があります.

ただアンバサダーであるので私に声かけたらAlienware以外のPCは安くなるらしい?自分自身でアンバサダーになるのと違いがわかりませんが.

2019-02-06に注文して,中国が旧正月なので結構遅れて3月頭に到着するらしいです.

自分がクレジットカードの支払い枠を30万円にされてたことを忘れて注文してエラーになってしまって,その後とりあえず一時的な50万円への引き上げを申請して通ったのですが,クレジットカード払いが可能になるかどうか.この額で1%のポイントは割と大きいです.ちゃんと後から有効になっても通りました.良かったです.

Gentoo Linuxインストールの要約

まとまった時間が取れなかったのと試行錯誤の連続でインストールメモが2万文字を超えたので要約を書きます.

  • セキュアブートを無効化してレガシーオプションロムを有効にする
  • cryptsetupで指定する時はaes-xts-plain64のようにplain64をつける
  • dm-cryptで暗号化した複数デバイスをBtrfsでプールして利用する時はgenkernel-nextを使うべし,genkernelでもdracutでもなくgenkernel-next
  • NVIDIAのGPUで動かしたい場合はNVIDIAとIntel両方のドライバをxorg.confに書いてLightDMでxrandr --setprovideroutputsource modesetting NVIDIA-0するべし

2019-02-22

Alienware m17が届きました.ええっ到着は3月になると言っていたのに…まあバッファ取ることは重要ですよね.遅くて怒られることはあっても早くて怒られることはないのですから.

しかし今回の私の場合少し特殊で,2月24日日曜日から香港に旅行に行くという事情がありました.

そして動作検証してLinuxで動かない場合返品しないとだめなのです.早めに検証しないとダメになるから急いで簡単に検証だけします.

まずはもしもの時に返品できるように初期状態に戻せるようにWindowsの回復ディスクをUSBメモリに作成します.

Windowsを消したりはしません.メインに使うことはないですが動作確認や客先へのデプロイに今でも使っているのです.

素直にマイクロソフトアカウントでサインインします.今はまともにディレクトリ作ってくれるらしいですし.

Windows常用しないしAndroidとリンクはしない.OneDriveは活性化しない.コルタナのユーザ情報収集自体は気にならないけどそのためにバックグラウンドでディスクとかを使いまくるのが気に入らない.アクティビティもWindowsを常用しないのでバックグラウンドで通信するのがパォーマンス上気に入らない.

Alienwareアップデートってなんや…サポート受けられるようにサービスタグ送るのは別に構わないかな.

「Windowsはライセンス認証されていません」って出てきましたが,買ったやつについてきたのにそんなわけないじゃん…とりあえずトラブルシューティングだな.と思ったら自動的に再起動が走って自動的に認証されました.

Alienwareから買ったPCなのにMicrosoft自身が意味不明なソフトをプリインストールしてくるから日本メーカのPCみたいになってる…

SystemRescueCdがついにデフォルトx64になってusbインストールスクリプト廃止してddしろってなってる.Windowsで作るときはどうするんだろって思ったら今はRufusとか言うツールがあるらしい.

Alienware m17 Windowsにはなんて名付けようか.前回がstrawberryなので一般名詞避けることも考えてステージ3に突入.scarletにしましょう.

SystemRescueCdの構成が変わってメインの領域に書き込みができなくなったのでstage3が書けない.もう一つのUSBメモリにはWindowsの回復を入れなきゃいかんし仕方ないのでSDカードを使う.tsharkのダンプ入ってたけど60GBのSDカードにとっては余裕.

Microsoft IMEが初期設定だと使えなくて設定しないと使えないのは一体何.多分USキーボードで頼んだからですね.

回復ディスク作りました.

SupportAssistantがポンコツでダウンロードしてもドライバの更新に失敗するので,手動でDellのサイトからダウンロードしました.

このインストール作業メモ,AndroidのQuickEditで「自動保存」が動いたからGoogleDriveにデータ保存されてると思ってましたが,保存されてませんでした.なのである程度の文章が消失しました.

2019-02-23

とりあえずもしかしたら今のLinuxだとRAIDモードでも起動するかもしれないので,SystemRescueCdを起動させてみます.

流石にセキュアブートは無効化しないと読み込みはされないですね.

RAID OnのままSystemRescueCdを起動してみたら起動が進みません.というか起動時の表示でGentooベースからArchベースに切り替わったことを知りました.

SystemRescueCd 6 is now based on ArchLinux, a switch from Gentoo! : linux

/devの不整合とか怖いのでこの先は公式のインストールメディア使うことにします.

パーティションについてですが,512GBでは足りないことを考慮してわざわざ2つSSDを積んだので,Windowsのパーティションを256GBぐらいに縮小することは確定済みです.ただWindowsのメインパーティションは2番目ぐらいにあって,OEMパーティションとかがたくさんあるんですよね.

素直に縮小しても他のパーティションが後ろについてきてしまうのです.まあ多分回復パーティションとかあっても問題はないと思うんですが.

なのでこのパーティションを縮小して回復パーティションの隙間にパーティション作って,それをBtrfsのプールに使用したいと考えました.

Gentoo公式のUSBブートが全く起動しない.grubまでは出てくるんですが画面出力が全くされない.

パーティションが本来1つのはずが2つ出てきているので,これddでコピーしたけど前のパーティション情報が残ってしまっている状態のようですね.それは全く関係なく,画面が表示されない.

IntelとNVIDIAのGPU積んでるから疑惑が強い.

キーボードが光ってるから起動自体はしてるんだけど.

SystemRescueCdだと途中で止まりはしましたけど,画面には出たので後退です…

レガシーオプションロムを有効にしたら起動しました.UEFIじゃないBIOSの機能を有効にするやつです.UEFIで起動するモードでもこの機能を有効にしないと動かないことが前あったので経験が生きました.

まあRAID OnだとNVMe SSD認識しないのは変わらず仕方ないですね.

PCIe NVMe M.2 SSDへのUbuntu/Kubuntuのインストール問題を解決する方法 | Dell 日本

見た限りRAID Onのままインストールする方法はありそうに思えるんですが.

NVMe PCIe SSD - RAID or AHCI mode for Linux(Ubuntu)? : linuxquestions

見た所によるとやっぱりRAIDモード使うなクソだという意見が大半を占めてるので変更しますね…

高速スタートアップのせいでセーフモード起動できないんですけど…

何度も起動してたら「PCを診断中」ってなって「起動方法の変更」から「セーフモードを実行する」が選べました.

こうやって一度セーフモードを有効にして起動した後再起動することで,RAIDモードからAHCIモードに移行が出来る.出来た.

高速スタートアップもVirtualBoxで起動する時の害にしかならないし切っておきましょう.

Windowsでディスクパーティションを縮小します.

サイズを計算して縮小しても思い通りにならないんですけど,これMBとMiBが混ざってバラバラに表示されてませんか?

200GBにしようとしたのですがなんか微妙な数値にしかなりませんでした.

謎.

というかディスクの上下が機嫌次第で変わるのヤバすぎるのでは.

dm-cryptでブロックレベル暗号化するのにあたってcryptsetup benchmarkした結果aes-cbcとaes-xtsが高速で良さげな感じなんですがaes-xtsにしたら落とし穴とかありますかね?

Algorithm key Enc Dec
aes-cbc 128b 261 302
aes-xts 256b 303 304

ちなみにdm-cryptの暗号化はext4のビルドイン暗号化より性能が勝っていることがわかっています.

EXT4 fscrypt vs. eCryptfs vs. LUKS dm-crypt Benchmarks - Phoronix

これ知っててext4の暗号化使う人居るんだろうか.一部だけ暗号化しておけば平文の所はパフォーマンスが良いというメリットはありますが,暗号化部分のパフォーマンスの違いがありすぎてdm-cryptを使わない理由がない.

会社でパーティション分けと暗号化やりはじめようかと思いましたが,明らかにアサイン会議時間中に良い感じに中断出来る感じにならなさそうなのでやめました.

2019-03-11

旅行から帰って来たとたん仕事が立て込んでしまいやっと今日設定が出来ます.今日中にセットアップを完了させてしまいたい所.

修正申告しないといけないんだけどとりあえずスタックに先に貯まったこれを終わらせたい.

dm-crypt

パーティション適当に作ります.bootパーティションは暗号化困難ですし,カーネルとinitramfsしか入らないので暗号化する必要もない.適当に1GBぐらい割り当てておきましょう.

ここブートパーティションをBtrfsにすれば,読み込むパーティションの種類をBtrfsに統一できてシステム的に楽かと悩んだのですが,Btrfsのzstdサポートがgrubの9999じゃないとされてなかったりしたので,bootパーティションはext4にしておくことにしました.

しかしWindowsのパーティション生成する人達ちょっとおかしい…EFIと回復とメインWindowsパーティションだけで良いじゃん…なんでMicrosoft reservedに加えてWindows REが3つもあってfree spaceを大量に作っているんだろう.

今回初めてパーティションのスキマに新しいパーティションを作るということをしてみて知ったんですが,途中に挟まってもパーティションの番号は作成順に定まるんですね.

に従って2つの暗号化パーティションを作ります.

2つSSDはあるから仕方ないんですよね.LVM使ってまとめることも考えましたが暗号化してからまとめた方が都合が良い.

cryptsetup -v -c aes-xts -s 256 luksFormat device

で作っていきます.

作りました,開きましょう.

cryptsetup luksOpen device gentoo-0

で開こうとしても

device-mapper reload ioctl on failed: Invalid argument

と文句を言われます.

Lab 10.1 device-mapper: reload ioctl on temporary-cryptsetup-2318 failed: Invalid Argument — Linux Foundation Forumsによると

modprobe dm_crypt

しろということ.しかし既にパーティションは作ってるのに関係あるかなあ…と思って実行してみましたが案の定変わりません.

NVME SSD+AEAD: device-mapper: reload ioctl on failed: Invalid argument (#392) · Issues · cryptsetup / cryptsetup · GitLabによると鍵キーを256に設定しろと書いているのですが設定してるんですよね…

luksDumpしてみると作ること自体には成功しているように思えるのですが.

カーネルのバージョンが古いのかなと思いましたがコメントによると4.17で十分とされていて4.19なんですよね.

パスワードの設定を間違えた可能性も少なくて,わざと間違えた場合は「そのパスワード違うよ」ってちゃんと出てくるんですよね.パスワードは正しくてエラーが出てくる.

luksOpenじゃなくてopenを使っても変わらずエラーです.

luksOpen device-mapper reload ioctl failed invalid argument / Kernel & Hardware / Arch Linux Forums-rオプションをつけろと書いてますがやはり変わらずエラーです.

plainOpenしてみたら成功しました.

えっでもluksFormat指定して生成したはずなのですが…コマンド履歴もそう言っています.

luksDumpもLUKSであると言っていますし.

isLuksコマンドもLUKSだと言ってます.

でもluksOpenopenは成功せずにplainOpenだけ成功します.これは一体どういうことなんでしょう…

暗号化ファイルシステムを使いやすくする - いますぐ実践! Linuxシステム管理 / Vol.185を見ると暗号化モードが未対応になっているようにも見えますね.しかしplainOpenだと開けるんですよね…

cryptsetupする際に明示的に--types luksを指定してみました.変わらず失敗.

cryptsetup openの時に--type luks, --types luks2を使うとエラー,--type plainを使うと開かれるということはやはりplainを使っているらしい?しかしluksDump, isLuks, 生成の方法を見るとluks使っているのも確実だと思うんですよね.

cryptsetup 1.7.5に適合するマニュアルが無いのかなあ…

Drive decryption fails on kernel 4.20.6+ / Kernel & Hardware / Arch Linux Forums

みててわかりました.

cryptsetup -v -c aes-xts -s 256 luksFormat device

だとダメで,

cryptsetup -v -c aes-xts-plain64 -s 256 luksFormat device

のようにplain64を付けないとダメです.

cryptsetup benchmarkで出てきた名前をそのまま入力してしまったのが敗因ですね.manページにも

cryptsetup --help shows the compiled-in defaults. The current default in the distributed sources is "aes-cbc-essiv:sha256" for plain dm-crypt and "aes-xts-plain64** for LUKS.

とちゃんと書いてあります.

これでopen --type luksで開けました.

あとluks2でフォーマットすることにしました.このインストールとは長い付き合いをする予定なので.

後どちらにしてもluksOpenをわざわざ指定するのは古いやり方で,今はopenで自動認識してくれるようですね.

Btrfs

そして作ったブロックデバイスをファイルシステムを使って初期化します.

さてbtrfsでルートパーティションを作成するわけですが,ここで複数のディスクをまとめてしまいます.

512GBでは足りないだろうという予測でわざわざSSDを2つ積んだので,RAIDをするわけではありません.プールして1つのデバイスとして使ってしまいます.

Using Btrfs with Multiple Devices - btrfs Wiki

によると作成する時に-d singleを設定することで,メタデータはRAID1で保持されて本物のデータは個別に置かれる様になるそうです.

RAIDしなくてSSDが壊れても基本的にコードはGit管理してデスクトップにも置いているので壊れても最悪の自体にはならないので大丈夫です.

mkfs.btrfs -L gentoo -d single /dev/mapper/gentoo-0 /dev/mapper/gentoo-1

で742GiBのラップトップのSSDとは思えない富豪ディスクが誕生しました.

2019-03-28T15:51:16+09:00追記.指定せずにRAID 0を適用したほうが良さそうです.ただしスワップファイルが作れないことには注意.BtrfsのマルチプルデバイスがsingleだとJBODになってデータが分散されないのでRAID 0に切り替えました - ncaq

しかしGiBにすると512GBが470ぐらいにしかならないのはなんか残念ですね…

マウントします.面白いことに複数のデバイスでBtrfsを作ると1つのデバイスをマウントすることで全てマウントされて700GBのファイルシステムが出現するんですよね.

インストール

Windowsの設定をUTC使うように設定したはずなんですがローカルタイムを普通に使っているので,一回Windowsを設定するために戻ります.

時刻 - ArchWiki

Windows起動したらめっちゃファン回り始めたのでインストールディスクがファンコントロールちゃんとやってなかった疑惑が出てきました.それで大した作業もしてなかったのにアチアチだったんですね.

はてレジストリを見る限りUTCの設定は出来ているように見えますね…ハードウェアクロックへの同期が出来てない?そんなことはなく,なんか再起動したら認識された感じがします.

一応ntpdで設定したらまあ良いでしょう.

さてmountしたら今回は予めサブボリュームでスナップショット取らない部分を先に指定して,途中で指定することで起動難民にならないようにしておきます.

とりあえず最適化はどうせまた後でかけることになるので全て後回し.ファンコントロールがまともに動くようになってから負荷をかけたいです.

Gentooのプロファイル17.0じゃなくて17.1出てるのか,マイナーアップデートだしこれ適用しても良さそうに思えますね…と思ったけどまだdev扱いですし,新しいことを同時に行うと頭がおかしくなるので17.0にすることにします.

しかし/desktop/systemdがないのって継続して変わらないんですねえ…GnomeでもKDEでも無いけどsystemd使うデスクトップユーザ結構居そうな気がしますが.とりあえずグローバルUSEフラグにはsystemdだけを指定してworldを更新します.

emerge -uDNq worldの実行開始速度が早すぎてビビりました.いくらパッケージほとんど入れてないから依存関係が少なくて良いと言ってもこの速さはすごい.

というかアップデート走らせててわかったんですが,ファンはインストールメディアでも一応コントロールされているようですね.ただWindowsだと激しくファンが動きますが,Linuxは控えめに動かすので比較的静音の代わりに比較的アツアツになるわけです.

さてカーネルをmenuconfigするわけだけど…うーん新規ハードウェアだから情報がない.とりあえずlshw, pciutils, usbutilsをインストールして有効になってるカーネルドライバを設定していけば良いのでは.

有線ネットワークはKillerって言っても結局alxでQualcommので一安心.

ただワイヤレスコントローラがIntel製のちょい特殊なやつなのでiwlwifi - Gentoo Wikiを参考にやっていく必要がありそうですね.DVMかMVMのどっちかは…lspciを見てもよくわからない.最近のやつだいたいMVMだからそっちでは.Gentooのインストールディスクもそっちのモジュールを読み込んでますし.

Intel Wireless-AC 9260なのでen:users:drivers:iwlwifiによるとiwlmvmで正しそうですね.

ここに来てタッチパッドが何なのか全然分からない問題が発生しました.現状認識はしているみたいですが…Alienware独自のタッチパッドを名乗っている?全然構成違うと思ってたAlienware 15も同じパーツを搭載しているようなのでこれを参考に出来ますね.と思ったら情報が無くて困った.Alienware 15 - ArchWikiによると基本Synapticsと考えて良いらしい.それならカーネルは手を出さずにxorgに任せれば良さげでもありますね.

ハイブリットGPU機能は使わないことにします.そりゃ省電力には出来るんでしょうが無限に面倒臭そうですし,そんなに外で使わないからです.ずっとNVIDIAのGPUを使います.もしバッテリーがそれだとどうやっても無理ならまた考えます.

dm-crypt関係で暗号化APIを有効にするのがいつものインストールと違う所ですね.

さてカーネルの設定も終わってここが一番の難所.dracutを使って自動でluksが開かれてマウントされるようにしないといけない.

デフォルトでdracut走らせるだけだとダメっぽいですね.いや関係ないっぽい.

よくわからんとりあえず再起動してみてどうエラーが出るか見てみよう.

再起動してみたらgentoo-1(暗号化したパーティションの2つ目)が存在しないというエラーが出てきましたね.

dracutの関連ツールであるmkinitcpio - ArchWikiにencryptのツールを利用するにはcryptsetupをインストールしなきゃいけないと書かれててそりゃそうだとなりました.

cryptsetup入れてみましたがやはり

/dev/mapper/gentoo-0 dose not exist

とか言われてダメになりますね.initramfsから移行しようとしない.暗号化諦めるのが一番楽ではあるんですが盗難されたときの安心感が違う.

2019-03-12

ウオー今日こそ問題解決したい.が仕事をしないといけないので厳しそう.

仕事も終わった(15時に開始して19時に終了)のでセットアップが出来れば,portageの設定してworldのビルドという時間のかかる作業を寝ている間に出来るんですが…

dracutを引き続き試みる

bcacheの件でdracutでうまく行ったから成功体験に引きずられているのかもしれません.Archのmkinitcpioは使えないにしても,Gentooのgenkernelは試してみても良いかもしれません.

何度も再起動を試してたので

mount --types proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev

を打ち込んでいくのが面倒くさくなってしまったけど,インストールメディアは読み込み専用だし…と思ったら,インストールメディアのUSBメモリにEFIパーティションがあるからここにシェルスクリプト書けば良いや.cryptsetupも一緒に書いてしまいましょう.デバイス名は変わってしまうので/dev/by-partlabel/からの参照ですね.こういう時にscriptコマンドが役に立つんですが使わなかった…もう書いたあとだったので…

#!/usr/bin/env bash

set -eux

cryptsetup open /dev/disk/by-partlabel/gentoo-0-encrypted gentoo-0
cryptsetup open /dev/disk/by-partlabel/gentoo-1-encrypted gentoo-1
mount -o ssd,compress=zstd,space_cache /dev/mapper/gentoo-0 /mnt/gentoo
mount --types proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-slave /mnt/gentoo/dev

chroot /mnt/gentoo/

を書きました.

これで何度も再起動してトラブルにチャレンジすることが出来ますね.

しかしいくら「Gentooとは選択です」とは言っても大抵の人が実行してタイピングに手間のかかるものはシェルスクリプトぐらい用意してくれても良い気がします.一瞬他の面倒見の良いディストリビューションに浮気しようかと思いましたが,よく考えてみるとGentooみたいなディストリビューションだからこそディスク2枚構成のBtrfsみたいなのを構築しようと出来るんですよね.環境をだいたい決め打っているディストリビューションでは不可能だったりGentooと同じぐらい面倒だろうから同じですね.Archならmkinitcpioでいけるかもしれないですが,Archはソフトウェアをコンパイルしてインストールしませんからね.

もしかしてgrubのdevice-mapperのUSEフラグを有効にしないとダメだったり?lvmって書いてるからdm-cryptとは関係ないと思いましたが,dm-cryptは当然device-mapperですよね.でも再起動してみたらダメでした.grubのUSEフラグは関係ないみたいですね…まあ冷静になって考えてみたら当然で,grub→initramfs→rootと移行しようとしてて,initramfsで止まってしまうのが問題になっているのですから.

後から分かったことですが,どうもgrubにdevice-mapperオプションはそれはそれで必要みたいです.これがないとinitramfsに移行できないようですね.

dracutが吐き出してるログを見る限りcryptモジュールは読み込んでるんですよね.64-device-mapper.rulesをskipしてるのが気になりますが.

dracutの起動時のログ見るとopenを試みてすらいませんね.やっぱりなんかスクリプトを自分で書く必要がある?

dm-crypt - Gentoo Wikiに書かれているのはHomeとかの暗号化だけで/は取り扱ってないんですよね…英語版も同様.

と思ったけどDm-crypt full disk encryption - Gentoo Wikiには書いてある.しかしgrub.confってどれのことだ…これgrub 1のことでgrub 2には適用できない気しかしない.

Dracut - Gentoo WikiのLVM on LUKSを見てやってみます.

root=UUID=199bb83d-c783-4254-a6eb-fdbb83c33144 rd.luks.uuid=2acb7668-fff1-492d-b46e-f05ead26d153

みたいにカーネル引数を追加してみましたがうんともすんとも言いませんね…

genkernelを使う

dracutでは難しいのかもしれません.genkernelを試してみます.

Full Disk Encryption From Scratch Simplified - Gentoo Wikiを参考にgenkernelをセットアップ.おっこれまでとは違う「luksデバイスが見つからない」というエラーが出てきましたね.

しかし見たところ/default/grubに書いてて画面に出てくるUUIDは間違ってないように見えるのですが…あ,UUID指定を忘れてましたね,これは認識しないのも当たり前.

UUIDを書くことで1つの解錠には成功したようです.もう1つのディスクを解錠してくれない…当たり前ですが2つを前提にフォーマットしたので,ひとつだけの解錠では正しくBtrfsデバイスとしてマウントできません.

crypt_rootを2つ書けば両方解錠試みてくれると思ってたのですが,1つしか認識しないみたいですね…

あとrootの指定はgrub.cfgにUUIDが記録されるから不要らしい.

lvmでボリュームまとめてから暗号化するしかないのかなあ…?Btrfsにマルチデバイスシステムがあるから出来ればそれを使ってlvmは使いたくないのですが.

BtrfsじゃなくてZFSを使っているというぐらいで私と同じような状況になってる人が居ますね.Gentoo Forums :: View topic - luks zfs initramfs and crypt_rootこの人への回答にはcrypt_rootじゃなくてcrypt_rootsを使えと書かれています.そのようにしてみましょう.

最初の解錠すらされなくなりました…

root書かなくなったのが悪いのかなと思って書き直してみましたがダメでした.

a0で始まるUUIDのdeviceが見つからないというエラー.これは解錠後のrootデバイスの名前なのでcrypt_rootsを使うことによって解錠を試みるステップが無視されて,いきなりrootをマウントしようとしているように見えますね.

genkernel-next/00-zfs.shを見る限りcrypt_rootcrypt_rootsも同じ扱いなのでUUID使えないとかはないと思うんですが…またcrypt_rootsの書き方はサンプル通りに連ねただけなので間違ってないと思うのですが…実際ソースでもcrypt_rootsが来るたびにCRYPT_ROOTS変数に追加していってますね…

grubファイルを編集したらinitramfs再生成しないといけない説.関係ありませんでした.

dobtrfsを最初に書いたのが間違い説.関係ありませんでした.

genkernelのバージョンが古くてcrypt_rootsに対応していない説.実際ググってもgenkernel-nextのリポジトリは出ますけどgenkernelのリポジトリは出ませんしね.

genkernel-nextを使う

genkernel-nextにしたら1つは解錠できました!これで大当たりでしたね.

調べるとgenkernel-nextとgenkernelは全くの別物で別々に開発されているとのこと.これでは違うのは当たり前ですね.

でも8786で始まるUUIDのデバイスにはLUKSのheaderが無いとのこと.そんなバカな,ダンプ結果は同じやぞ,と思ってモニターを睨みつけていたら防御力が下がってUUIDの最後の0が抜けてないか…?と気が付きました.

あ,これgrubファイルを編集したらgrub-mkconfigだけじゃなくてgenkernelも再実行する必要があるんですかね./boot/は平文だからそれを読んでくれると思ってました.いや関係なかった./boot/をマウントしてないのにgrub-mkconfigして適用されると思ってただけみたいですね.noautoを消しましょう.

これで2回プロンプトが出てきて解錠はされたようです.

しかしcannot mount /dev/dm-1とか出てきてますね.

うーんblkidしてみたら解錠された後のパーティションのUUIDがchroot環境と違う…

でも-t autoが失敗したとか書いてるのでBtrfs周りの問題な気がしますね.genkernelする時にbtrfsを足してみましょう.

あとroot指定も消しておきましょう.

genkernel --keymap --btrfs --luks --busybox --firmware initramfs

を実行してみます.

やりました!通りました!これにて2つの暗号化ディスクをまとめて使用する問題は解決です!

このマシンの名前はindigoにしましょう.

パスフレーズの入力を1回にしたいので今度forkしましょう

暗号化を解錠する時に2回同じパスフレーズを聞かれるのが鬱陶しい.

同じパスフレーズなのはハッシュからもわかるのだから,自動的に2回入力して欲しい…

genkernel-next/00-crypt.sh at 8aa1858f0c8900433276697498f047cff3cdc478 · Sabayon/genkernel-nextこの辺弄くればハッシュにキーフレーズ紐づけたメモを見てそういう挙動を実現できそうですね.今度やってみますか.とりあえず自分に適用するやつはncaq-overlayで入れてテストして,ちゃんと動くようであればpull requestを投げれば良いわけですしね.

もしくはBtrfsでまとめるのではなく暗号化前にLVMでまとめるとか,キーファイルを別パーティションに暗号化して置いておいてrootはそのキーファイルを参照して復号化するとか,そういう手段は考えつきますが必要ないキー入力は聞かないのがスマートだと思います.

Linuxのコンソールで文字を大きくする

今4Kディスプレイにそのままシリアルコンソールが表示されてるのを凝視して操作してます.

magitばっかり使ってたのでgitのCLIの使い方を忘却していています.

文字が小さすぎてきつい.早くXMonadが動く環境が欲しい…

とは言えNVIDIAのドライバとか考えないといけないし,それまでの繋ぎとして文字サイズを大きくしたい.VGAコンソールの文字の大きさはsetfontコマンドで変えられるらしいですが-hオプションで変えてみてもなんか行間が大きくなっただけにしか見えませんね…fbtermは素直に入ってfterm -s 40で許容範囲の大きさになったので,暫くはこれでいきます.なんか文字がグチャグチャに崩れてますけど小さすぎて読むのが困難なのよりはマシですね…いやグチャグチャに崩れてるの結構致命的ですね.jfbtermを試してみましょう.文字が表示されないので問題外ですね.文字を大きくしたいということだけでもXがないとfreetypeとかも動かないと大変なんですね…普段はあまり感じない当たり前だったXの恩恵.

何故文字が崩れるのか?フォントがおかしいのではないか?と思ってncaq-overlayの導入は文字小さい中頑張ってやったのでRictyだけ導入して指定してみましたけどやっぱり変なことになりますね…フォントサイズ変えること自体に耐性がないようですね…

とかぼやいていたら助言が来ました.

$ setfont latarcyrheb-sun32

でかなりマシになりました.fbtermのことは忘れます.

crc32c

Btrfsのチェックサム計算が

crc32c=crc32c-generic

となってるのを

crc32c=crc32c-intel

に変えたい!

前のラップトップ(XPS 13)は確かIntel製CPUでそういう設定してアクセラレータ有効にしてたはず…と調べたら確かにそうなってましたね.カーネルオプション変えるだけで良かった気がします.埋め込んたら変わりました.

カーネルのCPU最適化

カーネルのビルド設定でどのCPUに最適化するか選べるのですが,i7-8750Hが属するCoffee Lakeだけ無かった…まあ人向けにビルドするわけじゃないので何も考えずにGCCによる自動推定を選べば良いですね.

熱感知

適当に有効化しました(本当に適当).

6th Gen Core Processer Thermal Subsystemと言うやつでLinux Kernel Driver DataBase: CONFIG_THERMAL: Generic Thermal sysfs driverによるとGenericで良いらしいですね.lshw見ると割り当てられてないように見えますけど…まあファンの周り具合見ると実際検知してるらしいので問題ないのでしょう.

謎省電力デバイス

Intel Corporation Device a37c
Dell Device 08a2

というのが謎.一切説明無いけどPCIに繋がっています.

ググってもなんのデバイスなのかわからない…Linux Kernel Driver DataBase: CONFIG_INTEL_ISH_HID: Intel Integrated Sensor Hub

linux/intel-ish-hid.txt at master · torvalds/linuxによると省電力用のデバイスらしい.まあモジュール名はわかったので有効にすれば良いだけですね.

Cannon Lake PCH Shared SRAM

なんかSRAMがついてるみたいですね.有効化しなくても良さそうですが.というかどうやって有効にするのかも分からない.Generic on-chip SRAM driverというのをとりあえず有効にしてみましたが特に関連付けはされないみたいですね.何に使うのか一切わからない上有効化も出来ないデバイスです.何なんでしょう.

せっかくDRAMより高価なメモリを使えないのは勿体無いですが,これ名前的にマザーボードがOSに依存せずに使えるメモリっぽいので触らないほうが良い気もしてきました.

Cannon Lake PCH HECI Controler

Linux Kernel Driver DataBase: CONFIG_INTEL_MEI_ME: ME Enabled Intel Chipsetsを有効化.

Cannon Lake PCH SPI Controller

Linux Kernel Driver DataBase: CONFIG_SPI_INTEL_SPI_PCI: Intel PCH/PCU SPI flash PCI driver (DANGEROUS)を有効化…しようと思ったんですがDANGEROUSがついてるのでやめとくことにしました.BIOSのアップデートなんてWindowsからやれば良いですしね.

再起動したら起動しなくなった

なんで?

can't find command /dev/mapper/gentoo-1と言われてしまいますね…

前回と特に構成は変えてないはずなのですが…

initramfsをカーネルコンフィグのたびに買えないのダメなのかと思ってビルドし直してもダメ.カーネルがダメになったのかと思ってoldを選択してもダメ.

よくわからなくなったので一回効果ないと思って消した,device-mapper, cryptsetupグローバルUSEフラグを有効化して関係するパッケージを再ビルド.

そしたら起動しました.ただ依存関係が壊れてたやつもビルドし直したのでその影響かもしれません.原因は不明.

2019-03-13

せっかくファンが優秀なのでもっと強化したかったけど不要でした

サーマルスロットリングが怖いからi9ではなくあえて安いi7を選択したのですが,それでも

Core temperature above threshold, cpu clock throttled

という警告がよく出てきます.

しかしAlienwareだけあってファンが強力なので1秒も経たず

Core temperature/speed normal

とすぐ戻って来れます.

しかしもうちょっと早めにファンを早く強く動かして,サーマルスロットリングが発生すること自体を予防したいですね.

まあデフォルトの状態でも一回サーマルスロットリングが発生したら,ファンがそれなりの速度で動いてサーマルスロットリングは発生しないのですが.

Windowsだとそのへん容赦が無くて滅茶苦茶ファンが動きます.Linuxだと静音重視なのか控えめ.

ファンスピード制御 - ArchWikiに書いてあるi8kutilsがAlienwareも一応DellのPCだし使えないかな…

Fancontrol (lm-sensors)はGPUが別付けだとあまり信用出来ないらしいので出来れば使いたくないですね.

NBFCはmonoで動くのがちょっと…ファンコントロールごときに言語仮想マシンを動かしたくないという気持ちがあります.

とりあえずi8kctlを動かそうとしましたが,

/proc/i8k no such file or directory

って言われました.少なくとも素のカーネルだと無理そう.カーネルにi8kモジュールがあるので組み込んでいきます.LegacyなDell用のモジュールだとか書いてますがはたして動くのでしょうか…

tkフラグを有効にしないとi8kmonインストールされないんですね.tcl言語はともかくtkはデーモンに関係ないのでは…と思ったけどtcl/tkを一緒にごっちゃに扱うしかなかったのかな.

あっi8k動いてませんね.Alienware m17は対象外でした.

lm_sensorsとか使ってみましたが全く検出できない.sensorsで出てくるはずなんですけどね…どうもcoretempモジュールを組み込んで無いから見れないらしい.ビルドし直しですね.そこはビルドし直したらちゃんと温度の一覧が出てきました.

しかしファンの一覧が出なくて,sensor -sが動かなくて,

読み出されない場合は、divisor を 8, 16, 32 と増やしていってください。

って書いてるのに従ってもunknown future nameって言われますね.

sensors-detectがi2c-devが無いよーって言ってくるので有効にしておきましょう.文献がないけどヘルプによるとI2C_CHARDEV.まあこれで何か掴んだようですがファンには関係ないですね.

公式マニュアル見ればファンの最大速度わかるかな?と思いましたが全くわからない.Windows起動してAlienwareのセンター起動すればわかるかな…コマンドセンター見ても最大速度がいくつかは分からなかったですね.ただほぼ最大に近い速度が出てて,でもそんなうるさくなかったので,Linuxでもそれなりのファンの速度は出てたんだと思います.出てなかったと思っていたのは私の印象の間違いでしたね.

というわけで調整はしなくても良さそう.まあ出来ればサーマルスロットリングが発生するちょっと前からファンの速度増やしてほしいのですが,ちょっとの時間なので妥協しても良さそうです.

こういう時MSIとかのマザーボードだとUEFIからファンの速度調整が出来て,OSに依存しなくて楽なんですけど,Dellは伝統的にUEFIが「古いBIOSか?」って感じに低機能な見た目と実際低機能なので仕方ないですね.Windowsに専用ソフト入れてそれで調整する感じの設計やってるので…

もしかして新しいCPUと新しいマザーボードだから新しいカーネルじゃないと認識しないだけなのでは?次に4.19.27から5.0.1に上げてみますか.

これは後で気がついたんですが,Windows側でAlienware Control Centerでファンの設定するとハードウェア的に設定されるみたいで,Linuxでも適用されます.「バランス」から「パフォーマンス」にしたら34°Cの低温でもファンがぶんまわるのでうるさい.ちゃんと手動でプロファイルを作ればちょうど良さげな設定を作れそうではありますね.

Windows 10でのDvorakキーボード使用について

Windows 10 - Win10 1607でDvorakにするレジストリがストアアプリに効かない|teratailLayoutDriver JPNが消滅してしまっていたのでとりあえず新規作成してみたのですがダメでした…と思って再起動してみたらLayerDriver JPNという値が新しく生えてますね.これ変更したらいけるのでは?ダメでした…とりあえずしばらくは日本語入力封印して英語のDvorak使いますがこの先Windows側はどうしよう.まあ動作確認ぐらいにしか使わないのでそんな致命的では無いのですが…

2019-03-14

IntelのGPU

IntelのGPUも一応使えるようにしておきたい.切替可能にするかもしれないし,何かのAPIが使えるかもしれない.まあNVIDIAのGPUがカバーしてない範囲をカバーしてるとは思えませんが…

intel - Gentoo Wiki

Firmwareの罠にまんまとハマっていたのでInclude in-kernel firmware blobs in kernel binaryなどを有効にします.というか古いラップトップでも普通にハマっている…すぐにXに移行するから割と問題ないやつなんですかね

というか新し目のGPUなのに使ってるのってi965ではなくi915なんですね.Xとかは高度な機能を使うからi965なのかな.

Synaptics

PS/2 protocolをサポートしておけと出てきますね.具体的にはRMI4_SMB.

iwlwifiがBIOS contains WGDS but not WRDSと出してくる問題

Intel Wireless-AC 9260が

BIOS contains WGDS but no WRDS

と言ってiwlwifiが動かないという問題があります.実際nmcliしてもdisconnectedって出てきますね.

ググった結果,

is about the Kernel 4.19 iwlwifi bug.

Parrot OS BIOS contains WGDS but no WRDS - Support - Parrot Community

だそうです.やはりカーネル5.0を使用するしか無さそうですね.

というわけでgentoo-sourcesの5.0系を開放することにしました.5.1移行は安定版になるまでmask.Btrfsのスワップファイルサポートもありますし,ファンを認識しない問題もありますし,やはりこのデバイスではGentooでは不安定版扱いを受けていますが5.0を使っても良いでしょう.

カーネルを5.0.1にアップデートしてみました.

アップデートしましたがファンも認識されないしiwlwifiは壊れたままですね…

ファームウェアを突っ込む必要があるのかもしれません.

iwlのファームウェアはportageに無いので自前ebuildを作成します.

頑張ってebuild書いてふと気がついたら,/lib/firmware/iwlwifi-9260-th-b0-jf-b0-43.ucodeはちゃんとlinux-firmwareがインストールしているじゃないですか.ファームウェアありでダメなんですね…

"BIOS contains WGDS but no WRDS"でググったら19件しか出てこないので全部閲覧してみましょう.

WiFi broken: BIOS contains WGDS but no WRDS : archlinuxによると

I have the same error messages (starting some time recently), but my wifi connectivity seems ok.

だそうなので自分もnmcli d wifi listしてみたら普通にSSIDの一覧が表示されました.

disconnectedって単に繋がってないって意味だったんですね.エラーメッセージの意味はわからないままですがスルーすることにします.

なんか定期的にエラーメッセージが出てきて非常に鬱陶しいのですが仕方ないですね…

squashfsで圧縮したホームディレクトリをcpで移して環境移行完了

ただしFirefoxとかはXPCOM時代のプロファイルを引き継いで利用してたのであえて1から設定構築をやりなおそうと思います.

dm-cryptで暗号化したディスクでTRIMを有効化する

dm-crypt/特記事項 - ArchWikiによると使用しているファイルシステムが分かってしまうので,TRIMを許可するのがデフォルトになることは永遠に無いそうです.

たしかにfstrimを実行してもext4の暗号化してないパーティションしか実行されませんね./を指定するとis not supported.と出ます.

多分これ暗号化と黙秘権について語ってるんだと思うんですけど,ファイルシステム何使ってるか知られるのはどうでも良いですね…plainではなくluksを使っている時点で暗号化していることはバレますし,initramfsにモジュールを入れているのでBtrfs使ってることはバレますしね.

bootをリムーバブルディスクに入れて全てを暗号化してブートしている人なら,公安に捕まった時暗号化してることをバレないようにするのは重要かもしれませんが,私は中核派とかじゃなくてただの社会民主主義者なので公安に捕まる予定はないですね…

私は盗難された時のケアのためだけに暗号化してるので,そこはパフォーマンスを優先したいです.

genkernel-next/00-crypt.sh at 0ab05d72e03bf4a8ab4819f75800c19a33ed2878 · Sabayon/genkernel-nextによるとluks_trim変数がyesだと--allow-discardsがつくらしいですね.これをyesにするには

https://github.com/Sabayon/genkernel-next/blob/0ab05d72e03bf4a8ab4819f75800c19a33ed2878/defaults/initrd.d/00-crypt.sh#L41あたりが関係してそうでこのコードを見る限り設定項目はCRYPT_ROOT_TRIM=yesでしょう!これをGRUB_CMDLINE_LINUXに追加してやれば良いはずです.

正解でこれでfstrim -v /が通るようになりました.

2019-03-15

X11が起動しない

他マシンから移してきたworldのビルドが一晩で終わって,(ChroimumやLibreOfficeがあるのに1晩で終わるのは驚異的,やはりモンスターマシン)さあGUIに移るぞと思ったが動かない.

lightdmも起動しないしstartxも動かない.

何故だ,nvidia-xconfigは正常終了しているのに.

提示された/var/log/XOrg.0.logのログを見るとSet AllowEmptyInitialConfigurationと出てますね.

ググって出てきたHow to configure X server to work headless as well with any monitor connected? - NVIDIA Developer Forumsの言うままに

nvidia-xconfig --allow-empty-initial-configuration

を実行してLightDMを実行したのですが,強制終了はしなくなりましたが画面が真っ黒のまま何も表示されません.

ログを見るとxf86-input-synapticsがsegvを起こしていますね.一度synapticsを無効にしてタッチパッドを諦めてみましょう.なんかカーネルの設定を間違えたのかもしれない…

後から起動してみた所単なるSynaptics TouchPadに見えるのですが…何か特殊な要素があるのでしょうか.

% xinput list-props 13
Device 'SynPS/2 Synaptics TouchPad':
       Device Enabled (151):   1
       Coordinate Transformation Matrix (153): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
       libinput Tapping Enabled (288): 0
       libinput Tapping Enabled Default (289): 0
       libinput Tapping Drag Enabled (290):    1
       libinput Tapping Drag Enabled Default (291):    1
       libinput Tapping Drag Lock Enabled (292):       0
       libinput Tapping Drag Lock Enabled Default (293):       0
       libinput Tapping Button Mapping Enabled (294):  1, 0
       libinput Tapping Button Mapping Default (295):  1, 0
       libinput Natural Scrolling Enabled (296):       0
       libinput Natural Scrolling Enabled Default (297):       0
       libinput Disable While Typing Enabled (298):    1
       libinput Disable While Typing Enabled Default (299):    1
       libinput Scroll Methods Available (300):        1, 1, 0
       libinput Scroll Method Enabled (301):   1, 0, 0
       libinput Scroll Method Enabled Default (302):   1, 0, 0
       libinput Click Methods Available (303): 1, 1
       libinput Click Method Enabled (304):    1, 0
       libinput Click Method Enabled Default (305):    1, 0
       libinput Middle Emulation Enabled (306):        0
       libinput Middle Emulation Enabled Default (307):        0
       libinput Accel Speed (308):     0.000000
       libinput Accel Speed Default (309):     0.000000
       libinput Left Handed Enabled (310):     0
       libinput Left Handed Enabled Default (311):     0
       libinput Send Events Modes Available (273):     1, 1
       libinput Send Events Mode Enabled (274):        0, 0
       libinput Send Events Mode Enabled Default (275):        0, 0
       Device Node (276):      "/dev/input/event10"
       Device Product ID (277):        2, 7
       libinput Drag Lock Buttons (312):       <no items>
       libinput Horizontal Scroll Enabled (313):       1

とりあえず現時点でxf86-input-synapticsはsegvを起こすため入れることは出来ません.

前のラップトップでやっていた

INPUT_DEVICES='${INPUT_DEVICES} synaptics'

はやめておきましょう.

排除してみましたが起動せず.今度はログにもハッキリエラーと書かれているものはありません…

xorg - Alienware 13 touchpad not working under any distro - Ask Ubuntuによるとi2c_hidはブラックリスト行きにするのが正しいらしいですし,タッチパッドを放棄したけど何か影響があるかもしれないので無効化してみますか.元々無効でした.関係ないですね.

NVIDIAのカーネルモードセッティングを有効にしてみましょう.カーネルオプションにnvidia-drm.modeset=1を追加してみます.まあ当然変化なしですね…

nvidia-xconfigで中途半端に設定を作ってしまったのが逆に良くないのかもしれません.削除してみましょう.

削除したらLightDM起動してXMonad起動しました.は?nvidia-xconfigは罠で使ってはいけないということですね.

というかxf86-input-synapticsなしでタッチパッド特に問題なく動いてるんですよね.libinputの力かな?動きが遅く感じられるのは多分動きは同じで17インチディスプレイなので大きくなって,相対的に小さく移動してるように見えてるだけでしょうね.変えることも出来そうですが,そんな致命的に遅いわけでもなく,速くしてしまうと逆に正確な入力が難しくなりますし変えないでおきましょう.基本はトラックボールですし.

NVIDIAのGPUで起動したい

これ多分IntelのGPUで起動しています.

Firefoxも認識してませんし,glxinfoも動きませんし…nvidia-settingsも動きません.

そりゃNVIDIAのドライバを指定してないからNVIDIAのドライバで起動されないのはよく考えてみれば当然ですね.しかしそんな状態でよくこんな軽快に動きますね.

NVIDIA - ArchWikiを参考に自動設定に頼らずに書きましょう.

うーん書いたら起動しない.せっかくNVIDIAのGPUがあるのに使うのは無理なのか…?

最新のnvidia-drivers(418)だとRTX 2060は認識すると書いてあるんですが.RTX 2060だからというよりNVIDIA Optimusが使われてるのが問題だったりします?これを解決するにはIntelのGPUを無効化するのが一番手っ取り早いんですが,AlienwareのUEFIにはそんな設定項目はありません.

Windowsを起動して無効化すれば良いのでは?Windowsを開く→NVIDIAコントロールパネルを開く→優先するプロセッサ「高パフォーマンスプロセッサ」にセレクトを合わせて「適用」を選択しました.しても起動しません.まああくまで優先するってだけでiGPUを無効化してるわけじゃないですからね.WindowsのデバイスマネージャーからIntelのグラフィックスのプロパティを開いて無効にしてみましたが,まあ案の定Windows限定の話なので効果なしですね.

Optimusを無効化できないなら付き合っていくしか無いでしょう.ちゃんと記事を読むとNVIDIA Optimus - ArchWikiに色々書いてますね…なんで気が付かなかったし.なんで読まなかったし私.

あとKMSはとりあえず設定を消しましょう.出来てもあまり嬉しくないし問題を複雑にします.

うーんLightDMの項もちゃんと見て設定したのですが起動しませんね…

ログを見るとFatal server error no screens foundと出ていますね.設定を書くならscreensを書かないといけないということですかねそれならばnvidia-xconfigをしたやつを修正する方が楽なのでは?

修正して継ぎ足しても起動しない…no screens foundとでてしまう…

Intel iGPU で "no screens found" によって X が起動しないのそのものズバリのトラブルが書いてありましたがこの通り書き足しても起動しません.

なんかこの設定したらLightDMもXMonadもプロセスは起動しているが画面に出力はしてない奇妙な状態になりました.

もう一度「alienware disable Optimus」とかでググってみます…

何もわからない.DellにOptimus無効化する方法について聞くしか無さそう?

export DISPLAY=":0"することによってxrandrが動いた!glxinfoも動く!なのに画面には何も映らない!謎!

current 8x8ってなんだよ…

プロプライエタリのNVIDIAのドライバ使うの諦めてnouveau使うことを検討すらした方が良い気がしてきました.もしくはBumblebee - ArchWikiを使ってOptimusを使うか.でもBumblebeeはoptirunコマンドを一々かませる必要があるのであまり使いたくないですし,どうせ常に充電しているので無駄にIntelのGPUを使いたくないんですが…

Alienwareゲーマー向けラップトップなのだから常にOptimusを無効化するオプションを用意して欲しかったです.

他のAlienwareは無効化するオプションあったりするのにどうしてこれには無いの.

Optimusの有効無効切り替えは[Fn]キーと[F7]キーの同時押しに割り当てられており,Windowsの再起動が必要ではあるものの,Optimusを無効にできる。これは素晴らしい。

「ALIENWARE 17 R4」「ALIENWARE 15 R3」レビュー。GTX 10世代となった新世代ノートPCの性能と,視線追跡デバイスの使い勝手を検証 - 4Gamer.net

本の虫: なぜLinus TorvaldsはnVidiaを史上最悪の企業だと罵ったのか、字幕と翻訳と解説
本の虫: なぜLinus TorvaldsはnVidiaを史上最悪の企業だと罵ったのか、字幕と翻訳と解説

IntelのGPUを通して描画されるからけしてOptimusは無効にできないという説すらStackOverflowで出てきました.

念の為もう一度UEFI(BIOS)を見てもOptimusの無効化は書いていない.

長期に渡る戦いの末,以下の記述でちゃんと起動して画面も映ってFirefoxもGPUを認識することがわかりました!nvidia-settingsもちゃんと動きますし,GPUが刺さってる所にも負荷がかかってファンが回ります.

Section "Device"
    Identifier     "nvidia"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BusID          "PCI:1:0:0"
    Option "AllowEmptyInitialConfiguration"
EndSection

Section "Screen"
    Identifier     "nvidia"
    Device         "nvidia"
EndSection

Section "Device"
    Identifier     "intel"
    Driver         "modesetting"
    BusID          "PCI:0:2:0"
    Option         "AccelMethod" "sna"
EndSection

Section "Screen"
    Identifier "intel"
    Device "intel"
EndSection

LightDMの設定.

/etc/lightdm/display_setup.shに書いてdisplay-setup-script=/etc/lightdm/display_setup.shします.

#!/usr/bin/env sh
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto

どうやってもIntelを通さないと描画出来ないのかと諦めるところでした.この組み合わせを試してみて良かったです.でもなんでこんな謎の組み合わせでしか動かないのかは正直全くわかっていません.何故Intelを認識させずにNVIDIAだけを認識させる方法だと動かないのでしょう…やっぱりアプリケーションはNVIDIAのGPUを認識してるけど実はIntelをバイパスしてるとか?

実際Intel使うとモニタ名がeDP-1になるところNVIDIAだとeDP-1-1になるので何かしら関係はしてそう.

書き終えてみると非常にシンプルな設定ですが,これにたどり着くのに時間がかかりました.

人権を感じる

旅行や仕事の緊急対応が挟まれてなかなか移行が完了しませんでしたが,移行が完了したら快適な環境が作れました.

メモリ32GBは人権

メモリ32GBはもはや人権ですね.メモリ16GBはギリギリまだセーフかもしれませんが,メモリ8GBになるとtmpfsを使ってicedteaをビルドするだけでOOM Killerが働いてしまいます.

ガンガンアプリケーションを使ってもswapfileが大して使われないのを見て,これまで私がどれだけメモリ量に抑圧されていたのかわかりました.

ちなみに公式スペック表には書かれてなかったのですが,メモリはMicron製でSSDはSKハイニックス製でした.

CPUが安心できる

これまでの物理2コアのおもちゃのようなCPUではなく,物理6コアのCPUで作業出来るというのは感覚が全く違います.

Core-i9ではなくCore-i7を選択しましたが,それでもこれまで「この作業は時間がかかるから家で寝てる間にしよう」なんて考えてたのが「今やろう」になったのは革新です.

端子が豊富

普通のウルトラブックと違ってUSBポートが多いです(Type-Cも含めれば4つ).

Ethernetが直接つながるので変換アダプタを探す必要も無いです.

背面に

  • Thunderbolt 3
  • Mini-DisplayPort 1.3
  • HDMI 2.0

を搭載しているので何処に行っても変換アダプタを探して右往左往する必要はありません.VGA端子?流石にHDMIかUSB Type-C向けのアダプタは用意されてるでしょ…

Alienware Graphics Amplifier向けの端子があるのも一応将来性があって,Unityでの開発を割り振られた時に「RTX 2060では厳しい」となった時に,デスクトップPCを新しく支給してもらうよりかは,Alienware Graphics Amplifierと最上級GPUを支給してもらう方が敷居が低いでしょう.ハイエンドグラフィックボードを搭載したPC全体は30万円ぐらいにはなるでしょうが,Alienware Graphics Amplifierと最上級GPUなら15万円ぐらいで済むので.まあどちらにしても仕事にしか使えないものは会社が全額出すことになるのですが,通りやすいかどうかということですね.

一応LinuxでもAlienware Graphics AmplifierはOptimusへの対処と同じ方法で動くらしいですよ.Alienware External Graphics Amplifier working on Linux Also any optimus laptop, n00bproof guide installation included | Alienware ArenaRTX 2060をもってしても厳しいケースって多分VR用途でしょうから,流石にそうなるとソフトウェアのサポート的にWindowsを使うことになるでしょうが…

ディスプレイが綺麗

17インチ4Kディスプレイが非常に綺麗で,何故かこの間買ったAcerの4Kディスプレイより綺麗なんですよね.Acerの4Kモニタ(RT280K)を購入しました,GNU/LinuxでのフルHDモニタを混ぜたマルチディスプレイ環境もきちんと設定できました - ncaq安物とは違うということなのか,TN方式じゃなくてIPS方式だからなのか.

やはり大きなディスプレイは人権です.13インチより17インチですね.もちろん会社にも外部ディスプレイは置いてあって接続可能ですが,やはり一番近いところのディスプレイを眺めたくなります.

LEDは飾りじゃなかった

LEDある意味あるの?と思ってたら電源が繋がってるか色で表示してくれたり意味はありました.

色々な所にスピーカーがある

仕事で使わないけど.色々な所にスピーカーがあるのでラップトップなのに簡易的な疑似サラウンドが楽しめます.あくまで2chステレオでサラウンドみたいに見せかけてるだけですが…

サイズがギリギリセーフでした

XPS 13を入れていたカバンになんとギリギリ入ったのでカバンの買い替えは不要になりました.

カバンの様子
カバンの様子

欠点

やっぱ比較的重い

Alienwareの中では軽量級の約2.5kgと言ってもこれまで使ってたXPS 13は1.29kgだったのでそりゃ仕方ないけど重いです.

というか暫くはAlienwareでうまく行かなかった時の次善策としてXPS 13を両方持っていってたので当然重かったです…

しかしバッテリを増量したXPS 15も2kgはするのでそこまで重いというわけでも無かったりします.

キーボードのテンキーとマクロキーの使いみちが思いつかない

私は元々デスクトップPCですらテンキー使わない人です.

デスクトップではHHKB Pro 2を使っていて,

Elonaをプレイするためだけに別接続のMajestouchのテンキーを使っていました.(Elona以外にいまだ使ったことがない…)

それぐらいテンキーを使わない人なので,テンキーとその上のマクロキーの使いみちが思いつきません.思いつかなすぎてマクロキーがLinuxで動くか試してすらいません.動くらしい?特別なキーボードキー - ArchWiki

そもそもXMonadやkeyhacを使っていれば,任意のキーシーケンスにアクションを割り当てられるので,マクロキーを使うまでもなく普通のキーシーケンスにコマンドを割り当てられるんですよね.xdotoolを使えば細かい動作の割り当てもできますし.

今F1とF2にタッチパッドの有効無効化を割り当ててるのをマクロキーに移すかとも考えましたが,F1の方が手に近いから便利なんですよね.

テンキーなんて要らないからその分軽量化して欲しかった…と言いたい所ですが,本来この機種は「ゲーマー向け」だからフルサイズのキーボードを搭載しているのは仕方ないのでしょう.いやゲーマーってテンキー使うのか?←自分がElonaで使ってたじゃん.

調べてみたらAlienware m17のテンキーは多分非ゲーマ向けのオプションでした.Alienware m15がそういうデザインなので.

ですが,m15を選ぶような方というのはおそらく,ゲームだけでなく,ゲーム以外のことでもm15を使っていくことになるはずです。そこでm15ではゲーム以外で使うときの利便性を考えています。トラックパッドは[G]キーと[H]キーの間に中央が来て(文字入力時に)違和感がないようになっていますし,ゲーム以外の生活全般では10キーが便利です。10キーはゲーム以外の用途で頻繁に使われることになるでしょう。

薄型ノートPC「ALIENWARE m15」はどんなゲーマー向け? 「Aurora R8」は手動OCがメーカーサポート対象!? 製品担当者にいろいろ聞いてきた - 4Gamer.net

Alienware 13, Alienware 15にはテンキーが無いから多分同じ考えですね.Alienware 17には元々テンキーがあったので「空いてるから入れてしまえ」という考えなのかもしれませんが.

ただ文句を言いたいのは,XPS 13でFnキーと組み合わせて矢印キーを押すことでPageUp, PageDownが押せたのが,NumLockしたテンキーに移動して遠くなってしまったことです.このキーだけはよく使うんですよね…

XPS 13のキーボード
XPS 13のキーボード
Alienware m17のキーボード
Alienware m17のキーボード

唯一使っていたLilyTermのキーバインドを変更して解決しました.

キーボードの質が普通レベル

キーボードの質自体はXPSと大差ないというかほぼ同じですね.

ゲーマーの中ではアイソレーションキーボードだとか,Nキーロールオーバーに対応してないことが問題視されてますが,ゲームを本分に使わないので割とどうでも良かったりします.

アイソレーションキーボードは普通に使ってても打ち心地があまり良くないのですが,薄型にしようとすると仕方ないですね.いくら普通のウルトラブックより分厚くてEthernetを搭載できるとは言え,この厚さでキーストロークを深くするのは難しいですよね.

厚さ
厚さ

と思っていたのですが,ThinkPadがあの薄さであのキーストロークを実現しているのを見るともうちょっと頑張ってほしかった気もします.

C-mを1回押したつもりが2回押してしまうチャタリング現象がよく発生してしまいます.しばらく使ってても発生するので慣れの問題ではないようですね…パンタグラフだから仕方ないと言っても流石に多すぎませんかね.

天板のLEDについてるシールが剥がしにくい

あまりにも剥がしにくいのでシールは固定されてるのかと思いました.しばらく使ってたら剥がれました.

ディスプレイのベゼルがでかい

XPS 15ぐらいベゼルを小さくすればディスプレイサイズを保ったまま,もうちょっと全体サイズを小さくできたのでは?

XPS 15とディスプレイのスペックは同じなのでやろうと思えば出来たはず.144Hzのにも対応させようとしたらこうなってしまったのか?

総評

XPS 15を購入したら25万円の試算が出ていたところ,34万円に増やすことで17インチディスプレイとパワフルなGPUがついてきて満足しています.

特に17インチディスプレイは良い…もう小さいサイズのラップトップには戻れない気がします.

このPCは2年ぐらい使う予定ですが,次のDellのPCには17インチ以上のディスプレイにInfinityEdgeを搭載して,ディスプレイサイズを維持したまま更に小型軽量化したものを期待したいですね.後キーボードを良くして欲しい…