Linux

Linux on ThinkPadのバッテリー設定をいい感じにする

僕は ThinkPad X1 Carbon の 2019 年モデルを使っていて,少なくとも僕が学生の間は買い換えないつもりでいる。 そこでちょっと気になるのがバッテリーの劣化という面。ThinkPad はバッテリーが取り出せないので 工夫して使わないとバッテリーをいじめる結果になってしまいそうだと思う。 で,ACアダプタにつないだときにバッテリーに充電する閾値を設定する方法。 入れる。 $ sudo pacman -S tlp acpi-call を入れることを薦められたりするが,これはバッテリーの内部ゲージのリセットとかをしようと しない限り必要ないようだ。 tlp-stat というユーティリティも同時にインストールされるので次のような感じで現在の設定値を確認できる。 $ sudo tlp-stat -b まあ確認するだけなら適当なファイル(/s

KASLRを無効化する

Linux カーネルには Kernel address space layout randomization という仕組みがある(別に Linux カーネルじゃなくてもあると思うが)。 これはカーネルのコードが置かれる仮想アドレスを起動するたびにランダムにするというもので, 悪意のあるソフトウェアのカーネルへの攻撃を難しくしている。ってのはまあどうでもいい話。 で,これ,セキュアになるのはいいんだけどあんなことやこんなことをする時(つまり自分が悪意のある側, とまではいかないが何かの手段としてそれに近いことをしようとした場合)に 面倒臭いことがあって,かといって自分で無効化してコンパイルし直すのもなということでメモ。 nokaslr をカーネルパラメータに追加する1だけ。終了。 一応これをデフォルトにするのは良くない

Linuxの一般ユーザではどうしようもない失敗に対処する

面倒臭い失敗をしてしまった(戻せるのでセーフ) pic.twitter.com/GSo48SZ9Vw — kofuk (@man_2_fork) August 17, 2020 覚えていたのでパッと対処できたけど忘れないとも限らないのでメモ。grub じゃない環境での方法は分からない。 再起動する。 GRUB のメニューが表示されたら eを押すと起動のコマンドを編集できる。 linux から始まる行での後ろに init=/bin/bash と書き加える。 Ctrl-x で起動する。 Bash が起動しているので何でもアリの無法地帯。 終わったら exec /sbin/init して起動する。 init を起動せずに Bash から exit すると kernel panic するので注意。

LinuxではメモリはCOWになっている(今更)

んだなぁ,と試してて思った。 以下のようなプログラムだとすぐメモリがあふれて死にそう(というか OOM Killer にやられる) な気がするけど実際そうならない。 #include <stdlib.h>#include <stdio.h> #include <unistd.h> int main(void) { size_t alloc = 0; for (;;) { char *mem = malloc(1024 * 1024 * 1024); ++alloc; printf("%zd GiB allocated\n", alloc); sleep(1); } } で,実行して top で見てみてもメモリ使用量はいっこうに増えない。 これを下のように編集すると状況が変わって,リアルにメモリを食い始める。 #include <stdlib.h>#include <stdio.h>#include <string.h> #include <unistd.h> int main(void) { size_t alloc = 0; for (;;) { char *mem = malloc(1024 * 1024 * 1024); memset(mem, 0, 1024 * 1024 * 1024); ++alloc; printf("%zd GiB allocated\n", alloc); sleep(1); } }