タグ

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

  • Linuxカーネルにおけるstrn系関数の挙動のまとめ - Qiita

    LKMLでパッチをレビューしていて気になったのと、一部の混乱の原因には私も加担していると思っているので、個人用のメモを兼ねてここらでまとめておきたい。適当にメモしたので間違っていたらあとで修正する。 対象となるカーネルは、linux-5.0(-rcX)である。 背景 Linuxカーネルには独自に実装されたstring操作系(特にコピー系の)関数がいくつか存在する。基的には標準ライブラリから持ってきたもの(カーネルはビルド時に標準ライブラリをリンクできない。標準ライブラリの関数はユーザ空間で実行されることを前提にしている)が多いのだが、OS特有の特権レベルやメモリ空間を意識した拡張関数も存在する。 問題は、これらの実装の中で、実装を見ていくと'\0'つまりNULL終端の扱いが色々と違っているのだ。 strncpy系 strncpy()、strlcpy()、strscpy()、strncpy

    Linuxカーネルにおけるstrn系関数の挙動のまとめ - Qiita
    labunix
    labunix 2019/02/20
  • 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
    labunix
    labunix 2016/12/03
  • MINCSによるLinuxコンテナ実装の裏側 - Qiita

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

    MINCSによるLinuxコンテナ実装の裏側 - Qiita
    labunix
    labunix 2016/11/22
  • Ftraceでカーネルの一部の処理を追いかける方法 - Qiita

    ftraceのfunctionトレーサやfunction graphトレーサを使うと、カーネルの関数呼び出し処理を追いかけることができます。 ftraceの諸機能をカーネルで有効にする方法については前回の投稿を参照してください。ただし今回書いている内容は、恐らくFedoraやUbuntuのカーネルではデフォルトで有効になっています。 関数コールトレーサ ftraceにはLinuxカーネル内の関数呼び出しをトレースする関数コールトレーサ・関数コールグラフトレーサをサポートしています。 関数コールトレーサはfunctionを、関数コールグラフトレーサは function_graph を、/sys/kerne/debug/tracing/current_tracerに書き込むだけで利用できます。 これらの関数コール(グラフ)トレーサは、インライン展開されていないすべての関数呼び出しをトレースし、

    Ftraceでカーネルの一部の処理を追いかける方法 - Qiita
    labunix
    labunix 2016/09/22
  • 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
    labunix
    labunix 2016/09/11
  • 1