ブックマーク / qiita.com/mhiramat (5)

  • Linuxカーネルの起動時トレースの話 - Qiita

    カーネル起動時トレース Linuxカーネルの起動処理は、様々なことが行われるのにそれをデバッグする方法はprintkだったり、逆にkgdbを外部デバッガから繋いだりと、結構な手間がかかっていました。カーネルが起動してしまえば、ftraceにperf, BPF, systemtapと複数の手段が使えるのに、起動時のデバッグは細かいことが出来ません。これは、起動時に指定できるオプションが大雑把になるのが大きな理由の一つでした。シェル芸ではないですが、1行プログラミングだけで様々なことをするのは大変です。 そこで導入されたのがExtra Boot Configuration (bootconfig)です。Bootconfigについては前回の記事を参考にしてください。 ここではカーネルコマンドラインのトレースオプションと、Bootconfigによって拡張されたBoot-time trace(CON

    Linuxカーネルの起動時トレースの話 - Qiita
    nishitki
    nishitki 2020/12/03
  • LinuxにFtraceを導入する - Qiita

    Linuxカーネルを再構築(リビルド)してftraceを有効にする方法について説明します。基的には必要なカーネルのCONFIGの説明だけです。 カーネルコンフィグ ftrace関係の設定項目は、基的にKernel hackingにあるTracers以下にまとまっています。まずこのTracers(CONFIG_FTRACE)を有効にします。 [*] Tracers ---> この項目に入ると、色んなオプションがあるのが解ると思います。 一つづつ見ていきましょう。 Kernel Function Tracer (CONFIG_FUNCTION_TRACER) いわゆる関数コールトレースです。インライン展開されていない実体のある関数の呼び出しを記録することが出来ます。後述するCONFIG_DYNAMIC_FTRACEをサポートしているアーキテクチャ(x86,armなどほぼ全て)では、通常使っ

    LinuxにFtraceを導入する - Qiita
    nishitki
    nishitki 2018/01/19
  • デバッグ情報の歩き方 - Qiita

    はじめに すごーい!きみはでばっぐじょーほーがよめるフレンズなんだね! (雑な挨拶) 実行時に解釈するスクリプト言語ではなく、ソースコードをコンパイルしてマシン語バイナリを作るコンパイル言語では、プログラムを実行する時に出たバグを解析するのに、ソースコードとの突き合わせ作業が必要になります。とはいえIDEやエディタの拡張機能を使っていれば、ユーザはほとんど何も気にすることなく、プログラムのソースコード上のある行番号で実行を止めたり、その時の変数の値を調べたりすることが出来るでしょう。 この記事では、そうした技術の裏側にあるデバッグ情報について説明をし、デコードしたデバッグ情報からある程度の情報を得られることを目指します。前半部分ではデコードしたデバッグ情報を読むためのDWARFの基礎知識について説明し、後半部分ではサンプルコードをコンパイルし、そこからデバッグ情報を実際に表示させて辿ってみ

    デバッグ情報の歩き方 - Qiita
    nishitki
    nishitki 2017/02/16
  • Ermine:MINCSでQemuを使ってClear Containerもどきを作る - Qiita

    これは何か Intelが2年ほど前に仮想環境とコンテナを組み合わせたClear Containerを発表しましたが、実装を調べるのを面倒くさがっていました。 今回LPCで「Qemuと9pfsを組み合わせた」という話を聞いたので、早速MINCS(Mini Container Shellscripts)に実装して、実際にどう動くのかを試しました。ちょうどLinux Advent Calenderがあったので報告します。 MINCS Qemu mode MINCS Qemu modeは指定したコンテナrootfsの上で、Qemuを使ったコンテナを実行するモードです。単純に面白いので実装した感じで、隔離性は高いものの、あまり実用性はないです(笑)。Clear Containerとは違い、MINCSのコンテナの動作モードの一つとして動きます。(同じイメージを使って普通のコンテナとQemuコンテナの両

    Ermine:MINCSでQemuを使ってClear Containerもどきを作る - Qiita
    nishitki
    nishitki 2016/12/02
  • MINCSによるLinuxコンテナ実装の裏側 - Qiita

    これは何か MINCSのコンテナ実装の基設計を解説する記事です。MINCSの概要については以前の記事を参照してください。 この記事では実際にMINCSのコードを見ながら、シェルスクリプトあるいはコマンドラインから最小限のコンテナ環境を作る方法を説明しています。 MINCSの基設計 MINCS(mincコマンド)はPosixシェルスクリプト1としてコンテナを実装することを目的としていたため、基的には特殊なコマンドを使わず、Linuxの基コマンド(coreutilsやutil-linux)を利用して実装しています。 Linuxコンテナの基礎 Linuxコンテナとは何でしょうか? 個人的には、広義の(狭義の?)Linuxコンテナとはnamespaceを利用した空間分離のことを指すと考えています。このnamespaceは基的にはプロセスから見えるリソースを別空間に分離する機能だと思ってく

    MINCSによるLinuxコンテナ実装の裏側 - Qiita
    nishitki
    nishitki 2016/11/22
  • 1