karubabuの日記

タイトルに解決と書いているものがあるけれど、別に付いていない物は解決していないというわけではないです。つまるところ記事を書いた後に解決してちょっと嬉しかったので付けました。

linux版 Civ5はsys-libs/glibcとx11-libs/libxcbをsys-devel/gcc-8.2.0-r2でビルドすると動作しなかった

タイトルの通りです

なにがあった

# gcc-config -l  
 [1] x86_64-pc-linux-gnu-7.3.0 
 [2] x86_64-pc-linux-gnu-8.2.0 *

この状態で

# emerge -e @world

してシステム全体をビルドし直すと、Civ5を起動出来無くなった

実際はビルドし直した後からしばらく経ってからCiv5を起動してみているので本当にここが原因か確実と言える自信はないのかも…

どうした

コンソールで直に起動しようとすると、segmentation faultと出て終了している
dmesgを見ると、

と言われている
とりあえず前のemerge -e @worldが原因の可能性があるので、gccを7.3.0に戻した状態でlibxcb.soをインストールしたパッケージであるx11-libs/libxcbを再ビルドする

% equery b libxcb.so  
 * Searching for libxcb.so ... 
x11-libs/libxcb-1.13 (/usr/lib64/libxcb.so -> libxcb.so.1.1.0)
x11-libs/libxcb-1.13 (/usr/lib32/libxcb.so -> libxcb.so.1.1.0)
# emerge -av x11-libs/libxcb

これをやったところ、まだsegmentation faultで落ちた
dmesgを見ると、

今度はlibpthread-2.27.soで落ちているのでsys-libs/glibcをビルドし直した

% equery b libpthread-2.27.so
 * Searching for libpthread-2.27.so ... 
sys-libs/glibc-2.27-r6 (/lib64/libpthread-2.27.so)
sys-libs/glibc-2.27-r6 (/lib32/libpthread-2.27.so)
# emerge -av sys-libs/glibc

これで無事起動する様になった

おわりに

なんか一瞬で解決したしdmesgとか使って何が悪いのか調べたし雰囲気めっちゃ強そうじゃない??
ほめてね(何もわからんのにgcc8でシステムをビルドし直すな)

新しめの無線子機を使う時に確認しておきたいドライバ内容

なんか本文で何を言いたいのかよくわかんないね
新しめの無線アダブターを使おうとすると大体ギッヨパブからドライバーのソースコードを拾ってきて自前でビルドしてmodprobeみたいな流れをしなければならないよね
その無線アダプターが使うチップセットに対応したドライバでもその無線アダプターで使えることをドライバが知らないことがあるので、それを対応付ける作業が必要になるかもしれない
ということです

私もよくわかっていないけれど多分こんな感じだと思う

どういうことなものなの

ソースコードをcloneしてディレクトリの中に入った後grep USB_DEVICE\(0 ./os_dep/linux/usb_intf.cするとズラズラと何かが出てくる
これらがこのドライバをインストールした時に使える様になるデバイスの一覧、だと思っています
つまりここに無ければ起動しない(一敗)
ここに自分が使う無線アダプターの情報を書き加えてビルドし直す必要がある

どうした

公式がソースコードを公開している場合が多いので、それを取得してくる
公式が公開しているソースコードは自分の環境で動くかどうかは別として、その無線アダプターに対応したコードなので上記のデバイス一覧に間違いなく目的のコードが入っている
その行を見付ける為の目星を付ける必要がある
そこでその無線アダプターのBus IDを調べる
これはlsusbですぐ分かる
例としては、TP-LINK Archer T4U v3ではBus 003 Device 002: ID 2357:0115 TP-Linkとなっているので2357:0115のあたりがそれだと思う
後は公式のソースコードがあるディレクトリでgrep USB_DEVICE\(0 ./os_dep/linux/usb_intf.c | grep 2357とかをすると目的の行が見付けられる

後は知り得た情報を使ってソースコード追記する
追記するファイルは./os_dep/linux/usb_intf.c
追記する場合、プリプロセッサCONFIG_RTLXXXXBなどのディレクティブに注意して貼り付けること
大体コピペする予定の行にある.driver_infoCONFIG_に続く内容になっているので適当に探す

ビルドする できる

おわりに

これをTP-LINK Archer T4U v3についてやったものがこれです
GitHub - karubabu/rtl88x2BU_WiFi_linux_v5.2.4.4_26334.20180126_COEX20171012-5044: rtl88x2bu driver updated for modern kernels.
$ uname -r 4.17.12-gentooで動いています
多分もっときちんとググればこんなことプヨが既にやってあるコードを見付けられそう

keybaseのprivateレポジトリにアクセスしたらkeybase This device does not yet have read access to directoryと言われる

This device does not yet have read access to directory /keybase/private/d1rewolf, log into Keybase from one of your other devices to grant access: is not readable by d1rewolf (uid: )

とか出たらこれです
ログインして認証が通っているのにも関らずこれが出た場合とりあえずkeybase関連のサービスを全て再起動すればアクセス出来る様になることがある
私はよくわからなかったのでパヨヨンごと再起動しました

DNS over Torする

やってみたかっただけDNSネタまたやった
公式がめちゃ丁寧に解説してくれるので特に困らず設定が出来てえらい
折角なので残しておくけれど本当に公式を読めばよいだけになっています
とは言っても本当に出来ているのか不安になる不死はあるので、出来てないやん!みたいなやつはおしえて…
特にDNS over HTTPS over Tor with dnsmasqあたりは本当に不安になっています

よくよむ

Introducing DNS Resolver for Tor
DNS over Tor - Cloudflare Resolver

とくによむ

DNS over Tor · pi-hole/pi-hole Wiki · GitHub

ここすき

Your personal anonymity, however, is not the only reason why you should use this service. The power of Tor in ensuring everyone’s anonymity rests on the number of people who use it. If only whistleblowers, for instance, were to use the Tor network, then anyone connecting to the Tor network would automatically be suspected of being a whistleblower. Therefore the more people use Tor to browse memes or to watch cat videos on the Internet, the easier it will be for those who truly need anonymity to blend in with the traffic.

続きを読む

floでopengappsがインストールできるAICPをビルドした

そのままビルドすると/systemの容量が足りなくてopengappsが追加で入らない
なのでAICPに標準で入っているアプリや機能をいくらか消して容量を減らすよというやつ
私は成功したけれど他の人が成功するのか全くわからないし、完全にその場凌ぎなので数ヶ月後にはまたopengappsが入らなくなりそう

なにをした

基本的に一つ前の記事の続きをやっています
GitHub - karubabu/IceManifests: floでAICPをopengapps付きで使うためのlocal_manifests
このレポジトリにあるxmlファイルをlocal_manifestsに追加してrepo syncする
local_manifestsとはなんぞやとなった時はAndroid ビルドで学ぶ git-repo 入門 | dev:mordifordを読む
✨ほたし本当にありがとう✨

後はビルドしてスマンホホにROM.zipとopengappsのpico.zipを焼く
ここでopengappsが焼けなかったら容量が足りないのでまた何か策を考えるしかない どうしようね

おわり

根本的な解決がしたいけれど、/systemパーティションを雑に拡大すると焼けなくなるんやでという話もフォーラムで見かけた気もしてわからないね
そんな石器時代のスマンホホを使うなといわれればそう🦆…

gentoo上でfloのandroidカスタムROMをビルドした

特に困ったこともなくgentoo公式レポジトリの範囲でパッケージを追加してrepo syncしてbrunchしておわった
ありがたいー🙏

どうした

よく読む

LineageOS 15.1 のビルド方法 | dev:mordiford
Android ビルドで学ぶ git-repo 入門 | dev:mordiford

追加したパッケージ

☝️の記事を参考にして同じようなパッケージを投入すればいける
頑張ってぐぐって
これらは私がビルドのために追加したパッケージだよ
つまりこれだけ入れれば良い訳ではなく、ましてやこれらが本当に必要かどうかも分からないよ

sudo emerge -av
=dev-libs/expat-2.2.5  
=dev-java/lzma-9.18  
=app-arch/lzma-9.20-r1  
=app-arch/lzop-1.04  
=sys-apps/texinfo-6.5  
=sys-fs/squashfs-tools-4.3-r2  
=sys-process/schedtool-1.3.0-r1  
=media-gfx/pngcrush-1.8.13  
=dev-java/maven-bin-3.3.9  
=dev-libs/libxml2-2.9.8  
=x11-libs/wxGTK-3.0.4-r300  
=media-libs/libsdl-2.0.8-r2  
=app-arch/lzip-1.20  
=media-gfx/imagemagick-7.0.7.35  

ncursesは5が必要かつtinfoのUSE flagを立てる必要があるよ

sudo flaggie --strict '=sys-libs/ncurses-5.9-r101:5' +tinfo
sudo emerge '=sys-libs/ncurses-5.9-r101:5'

その他の環境

$ gcc-config -l  
 [1] x86_64-pc-linux-gnu-5.4.0
 [2] x86_64-pc-linux-gnu-7.3.0 *
$ eselect java-vm list   
Available Java Virtual Machines:
  [1]   icedtea-bin-8  system-vm

repoはpython2系でないと動かないので,dev-python/virtualenvをインストールしてrepo initしたディレクトリでよしなに使う
virtualenvの使い方はarchwikiがえらいよ

. build/envsetup.shの様なコマンドを逐一source build/envsetup.shに読み替えたりするのが面倒なのでzshを使っている人はbashにした方がよさそう
わたしはしました

あとはぱっとbrunch flo 2>&1 | tee lineage_$(date '+%Y%m%d_%H-%M-%S').logして待つ
メモリがめがっさ持っていかれるので10Gくらいは余裕を持っていた方がよさげだった
私はswap無しのRAM12GBの環境でホイヤホクスで音楽を聞きながらデスコーヨでチャットしていたらピーク時にどちらもOOMKillerに殺されました…

おわりに

ほたしがえらい
無限に感謝しています