linux

Linux 5.14.4のregressionがどんな感じだったのか調べる

Linux 5.14.4のリリースして同日にregressionが報告されて次の日には5.14.5がリリースされてたんですが、これがどんなバグだったのかなというのを調べたメモです。 バグ報告の内容としては5.14.4でNextcloudっていうphpのwwebアプリケーションを実行するとハ…

Raspberry Piのdtoverlay・dtparam、dtbそしてブートプロセスのメモ

はじめに この記事はRaspberry Pi 3B+の実際の挙動と公式のドキュメントから大体こんな感じだろうというところで書いてるので正確さは期待しないでください。 下図のような構成でLinux kernel(Raspberry Pi向けのカーネルじゃなくて、mainlineとかstable tr…

fanotify(7)めも

fapolicydがどのようにアプリケーションの実行を禁止しているのだろうか?と思って調べためもです。 fapolicydがアプリケーションの実行を禁止する仕組み 仕組みとしてはfanotifyの仕組みを使ってファイルが実行のために開かれた場合に通知を受け取り、設定…

マイペースなOSSコントリビュート生活 fedora編

この記事はLinux Advent Calendar 2020の17日目の記事です。 OSSのコントリビュート方法はpatchを書いたりドキュメントを翻訳したり、バグレポートしたりと色々な方法がありますね。fedoraでテストというとリリース前のベータ版のテスト、パッケージがアップ…

1999年発行(日本語翻訳版)のLinuxカーネル解説本を見返してみる

この記事はLinux Advent Calendar 2020の24日目の記事です。 自分がLinuxを使いだした頃、OSはどうやってブートしてんるんだろうとか色々知りたくて買ったのが↓の本です。 Linuxカーネルインターナル 買った当時は知識がなくて読むのが大変だったけど今はそ…

vgrep便利ですねという話

この記事はLinuxその2 Advent Calendar 2020の4日目の記事です。 今回はtoolネタです。vgrepというgrep系のツールがあって結構便利です。これは今年のOpen Source Summit + Embedded Linux Conference North America 2020でのAsk the Expert SessionでGreg K…

Tiny Core LinuxでLinuxのinitプロセスが実行されるあたりを調べる

この記事はLinux Advent Calendar 2020 - Qiitaの1日目の記事です。 Tiny Core Linux(以下tcl)を使ってLinuxのブートプロセスを見てましょう。Tiny Core Linuxは軽量ディストリビューションで最小のisoイメージだと11MBほどです ブートプロセスを見ると言っ…

kdump: fedora系カーネルとupstreamカーネルの微妙な差

kdumpで利用するcrashkernelパラメータに渡せる値はfedora系カーネルとupstreamカーネルの微妙な差があるので自分でビルドしたカーネルを使う場合は気をつけろという自分へのメモです。 kdumpをfedora・rhelなどでdumpを利用する場合、crashkernelに渡す値に…

Linux Advent Calendar 2019で書いた「unameコマンドから始めるデバッグ&カーネルハック入門」を電子書籍化しました

Linux Advent Calendar 2019でunameコマンドから始めるデバッグ&カーネルハック入門という記事を書きました。 kernhack.hatenablog.com このときはFedora 31を実験環境として選んで書いたんですが、環境をCentOS 8にして内容を加筆修正して電子書籍にしまし…

Linux起動時のカーネルパニック(at ring_buffer_set_clock())修正めも

機種依存ですが、fedoraで5.4系のカーネルで起動時にカーネルパニックするようになり、自分もこのバグに当たったので修正してパッチをlkmlに投稿しました。 このパッチはLinux5.5.に取り込まれました github.com ついでなのでどんな感じでデバッグしたかの記…

secure bootが有効な環境で自前ビルドのカーネルに署名する方法(fedora向け)

fedoraなら多分一番手軽だと思う署名方法です。他のディストリビューションはわかりません テスト環境 ディストリビューションは(もちろん) fedoraです。バージョンは31です。実機ではなくてqemuでテストしました。 準備 まずpesignとnss-toolsパッケージを…

killコマンドのあれこれ

(´-`).。oO(killコマンドを提供するプロジェクト多いなって killコマンドを提供するプロジェクト とりあえず気付いた範囲で4つ。 util-linux procps-ng coreutils busyboxl 上のリストはmanページへのリンクになっているのでオプションの違いとかはそちら…

unameコマンドから始めるデバッグ&カーネルハック入門

この記事はLinux Advent Calendar 2019の1日目の記事です。 はじめに 環境 おことわり uname(1) uname(1)が出力する内容 strace(1) gdb(1) bpftrace systemtap Kernel Hack Livepatch おまけ RHEL 8.1 CentOS 8 まとめ はじめに 本記事ではLinuxサーバのホス…

Fedora Kernel test week参加記録

FedoraではkernelのテストイベントとかGnome 3.34 Test Day、I18N Test Day などのテストイベントがちょくちょくあります。 今回はKernel 5.3 Test Weekの備忘録です。ちなみに、この手のイベントはfedora MAGAZINEで紹介されることがあります。 今回の参加…

UEFIのSecure boot + kdump・kexec

UEFIのSecure boot + kdump・kexecの動作確認 uefiのSecure bootが有効な環境でkdump・kexecは動作するのか?ってところの確認です。 Secure bootとは?というところはこちらのドキュメントを参照してください。 access.redhat.com テスト環境 テスト環境に…

raspberry pi 3 b+ and u-boot and mainline kernel, and meta-fedora

Raspberry Pi(以下rpi)のカーネルではなくて、mainline等のカーネルを使いたい場合のメモです。 TL;DR 基本的に次のwebサイトを見れば事足ります。 elinux.org 概要 rpi向けのカーネルは以下なのですが、mainlineのカーネルを使いたい等の理由がある場合の環…

自分用にLinuxカーネルのBuildbot + LAVAでCI環境を作るめも

ちょっとCI環境でも作るか〜ということで。 CI だいたいこんな構成です。 構成 いまのところすべてローカル環境で閉じてます。うちはマンションタイプのBフレッツでそんなに速いわけでもないからローカルで閉じてるほうがテスト時間が短くて済むというとこで…

meta-fedoraなんてものを作り始めた(*ノω・*)テヘ

meta-fedora はじめに もし、meta-fedoraと聞いてピンときた場合はその感は当たりですw 主に組み込み向けのLinuxディストリビューションを作るためのものとしてyocto projectがありますね。yoctoプロジェクトのリファレンスディストリビューションとしてpok…

Linuxカーネル4.1の名前空間(ドラフト)

はじめに 名前空間 名前空間の利点 名前空間の種類 Mount名前空間 IPC名前空間 UTS名前空間 Net名前空間 PID名前空間 User名前空間 名前空間の管理 プロセスと名前空間 名前空間のエクスポート nsfs 名前空間共通データ NSProxy構造体 NSProxyと名前空間 参…

Linuxカーネル4.1のvmalloc()(ドラフト)

はじめに スラブアロケータ以外の動的メモリ確保 vmalloc関数 vmalloc関数で使用するデータ構造 vmallocの初期化 vmallocでのメモリ確保 vfree関数でのメモリ解放 その他の非連続メモリ領域からメモリを確保する関数 vmap関数 ioremap関数 /proc/vmallocinfo…

Linuxカーネル4.1のメモリレイアウト(ドラフト)

はじめに ユーザプロセス空間とカーネル空間 x86_64のメモリレイアウト ダイレクトマップ(ストレートマップ)領域 vmalloc/ioremap領域 仮想メモリマップ %esp fixup stack カーネルテキスト領域 モジュールマッピング領域 vsyscall 固定マップ領域 はじめに…

Linuxカーネル4.1のSLUBアローケータ(ドラフト)

はじめに スラブアローケータ Linuxのスラブアローケータ slabアローケータ slobアローケータ slubアローケータ スラブオブジェクトの管理 使用中リスト スラブのマージ機能 Chache Coloring スラブの不活性化 frozen状態 スラブキャッシュの情報 slubアロー…

fedora 30からgrubの仕様が変わったのでφ(..)メモメモ

Fedora 30でChanges/BootLoaderSpecByDefaultというプロポーザルがあって、Fedora 30βでは実際にこの仕様になってます。カーネルを弄る人にはちょっと影響があるかなって感じです。 仕様 The Boot Loader Specificationに書かれています どんな風になったか …

dynamic_debugはどのようにソースコードの行数、関数名などを読み取っているのか

dynamic_debugのcontrolファイルを読むとこんな感じでファイル名、関数名、そしてpr_debugに渡している文字列などが見れます。これってどうやってんだろ?というのが今回調べたところです。 masami@kerntest:~/pr_debug_test$ sudo cat /sys/kernel/debug/dy…

Linuxカーネルソースに付属のscripts/の探索

この記事はLinux Advent Calendar 2018の12日目の記事です。 カーネルのソースコードに含まれるscripts/を探索してみます。カーネルのビルド中で使うようなものもあるし、それ以外の時に使うものもあります。今回は後者の方を探してみましょう。 diffconfig …

RHEL 8 betaのsrpmをリビルドしてmockでshellでログインできるところまで作る

この記事はLinux Advent Calendarの13日目です。 いんとろ Powering IT’s future while preserving the present: Introducing Red Hat Enterprise Linux 8 Beta キタ━━━━(゚∀゚)━━━━!!って感じですよね。 srpmも公開されています。Index of /redhat/rhel/rhel-8-…

mockとpackageのgitリポジトリとリビルド

この記事はLinux Advent Calendarの19日目です。 概要 今回はsrpmをダウンロードしてきて何かをするのではなくて、パッケージのgitリポジトリからcloneしてきてビルドするときのメモです。パッケージのビルド方法としてはfedpkgを使うかmockを使うかの2通り…

Linuxカーネルをgdbでデバッグ(またはディストリビューションのカーネルを使うときは当たってるパッチにも注意しよう)

この記事はLinux Advent Calendar 2018の1日目ですΣ(゚∀゚ノ)ノキャー イントロ ほんとは別の内容にしようと思ってたのですが、進めてる途中でカーネルのデバッグをするハメになったのでカーネルデバッグをネタにしてみました。カーネルのデバッグと言っても普通の…

Linuxでプロセス単位にaslrのon/offを切り替える仕組みめも

gdb turns off ASLR « codeblogを見ていてpersonality(2)を使えば良いのか〜と知ったのでめもです。 tl;dr personality(2)でADDR_NO_RANDOMIZEをセットすればoffにできる。 personality(2) aslr以外にも設定可能な項目はいくつか有ります。設定されている内…

libbfdのめも

libbfdの使い方のめもです。利用してるバージョンはbinutils-devel-2.31.1-13.fc29.x86_64です。 nmもどき アドレスとセクション名、それにdebug情報があればファイル名と行数を表示。連想配列が使いたかったのでヘッダファイルだけで実装されてるuthashとい…