タグ

kernelに関するWackyのブックマーク (10)

  • Linux Kernel ~ 割り込み処理 ~ - レガシーガジェット研究所

    概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回は割り込み処理について見ていく。(*nは参考文献のn番目に対応する) 割り込み処理 例外ではほとんどの場合その例外の発生元となっているカレントプロセスにシグナルを送信することで処理する。例外処理もシグナルを受け取るまでは遅延される。 しかし割り込みの場合には別の無関係なプロセスが動作している際に発生することがあり、単純にカレントプロセスにシグナルを送信するだけではない。 割り込みは大きく3種類に分類される。 I/O割り込み 当該割り込みでは割り込みに対応する動作を決定するために割り込みハンドラからデバイスに対して問い合わせを行う必要がある。 タイマー割り込み ローカルAPICタイマや外部タイマなどが発生させる割り込みで

    Linux Kernel ~ 割り込み処理 ~ - レガシーガジェット研究所
  • linux systemにおけるinitの最期

    Linux Advent Calender 2018の18日目です。 元々の予定はボツになった!?ので ちょっと古い話になります。 7日目のsystemd理解のヒント - systemdの概念と歴史と相反するような記事です。 古い情報も必要としている組込もんもいるので、その助けとなりましたら幸いです。 initとは PID=1として、カーネルの初期化が終わって初めて生成されるプロセスです。 ユーザランドで必要なファイルシステムのマウント・システム設定・サービス(デーモン)やプロセス起動を行います。 kernel parameterに init=でinitコマンドを指定することができます。省略すると /sbin/initなどが参照されます。 init=/etc/preinit ここでは 組込装置を前提として、busyboxのinitを想定します 設定ファイル initが起動すると、以下のファ

    linux systemにおけるinitの最期
  • Linuxカーネルをgdbでデバッグ(またはディストリビューションのカーネルを使うときは当たってるパッチにも注意しよう) - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    この記事はLinux Advent Calendar 2018の1日目ですΣ(゚∀゚ノ)ノキャー イントロ ほんとは別の内容にしようと思ってたのですが、進めてる途中でカーネルのデバッグをするハメになったのでカーネルデバッグをネタにしてみました。カーネルのデバッグと言っても普通のデバッグと変わらないよね〜というところがわかると思います。(`・ω・´)<コワクナイヨー デバッグの環境としてはlibvirt(qemu)で動いてるゲスト環境にホスト側からgdbでデバッグする感じです。ディストリビューションはFedora 29です。デバッグするカーネルはFedoraのカーネルで4.19.2-300.fc29.x86_64です。 テストコード テストコードは↓です。これはdebugfsのディレクトリ(大概は/sys/kernel/debug/だと思います)にopen-testってファイルを作って、その

    Linuxカーネルをgdbでデバッグ(またはディストリビューションのカーネルを使うときは当たってるパッチにも注意しよう) - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
    Wacky
    Wacky 2018/12/01
    “デバッグされるホストのカーネルのほうでKASLRが有効になっていてリモートデバッグするときにはこのままだと適切な場所にブレークポイントを張ったりができないので、これを無効にする必要があります。”
  • 本当に恐ろしいsnmpd - Qiita

    昨今の Linux での仮想マシン、コンテナの使われ方をみるに、一つのマシンの中で netdev がたくさん存在するケースは普通になってきたと思う。そんな状況で見かけた恐ろしい現象。 snmpd を起動させるだけで CPU 100% で回り始める。 再現方法は後述するけれども、調べてみると、同様の現象に見舞われている人たちがみつかる。中でも詳しいのはこの記事 で、巨大な BGP routing table を持つシステムの例と、数千の VLAN を持つ例も同様なんだそうな。原因は定期的なキャッシュ更新で、ipaddress, netdev の数に対して、爆発的に増大するアルゴリズムが使われているため。私も調べてみた限りでは、手っ取り早く設定ファイルで抑制する方法は存在しない。 単純に時代の変化で、net-snmp snmpd が作られたころと今とで想定数が異なるんだろうな、というのは理解で

    本当に恐ろしいsnmpd - Qiita
  • LKL.js: Linux kernelを直接JavaScript上で動かす - Blog posts by @retrage

    Linux kernelを直接JavaScript上で動かした. つまり,JSLinuxのようにEmulatorをJavaScriptで作成し, その上でLinuxを動かすのではなく, JavaScriptで書かれたLinuxを生成し,それを動かす,ということである. LKL.js Architecture リポジトリは以下の通り. https://github.com/retrage/linux/tree/retrage/em-v2 なお lkl.js Demo にデモを用意した. SharedArrayBufferを有効にして試してみてほしい. Linux Kernel Library (LKL) ここでは,Linux kernelをLibrary OSの形態の1つであるAnykernelにする Linux Kernel Library (LKL)を利用する. LKLはLinux ke

    LKL.js: Linux kernelを直接JavaScript上で動かす - Blog posts by @retrage
  • Linuxカーネルのソースコードを機能とレイヤーで分類して表示してくれる「Linux kernel map」

    Linuxのカーネルは膨大な数のソースコードから成り立っており、どこに何の処理が書いてあるのかぱっと見当をつけるのにはかなりコードを読み込む必要があります。「Interactive map of Linux kernel」はそのソースコードを機能とレイヤーで分類して表示してくれるサイトということで、使い勝手を試してみました。 Interactive map of Linux kernel http://www.makelinux.net/kernel_map/ サイトにアクセスし、ロードが終わると下の画像のように6列6行の表が表示されます。列が機能の分類を表しており、「インターフェース」「システム」「処理」「メモリー」「ストレージ」「ネットワーク」という分類になっています。行はレイヤーを表しており、上からシステムコールなどの「ユーザースペースインターフェース」、「バーチャル」、「ブリッジ」

    Linuxカーネルのソースコードを機能とレイヤーで分類して表示してくれる「Linux kernel map」
    Wacky
    Wacky 2018/03/23
    “機能とレイヤーで主なソースを分類して表示してくれるので、「カーネルの〇〇の機能の部分だけ読みたい」という時にさっと場所を特定できて便利なマップとなっていました。”
  • net.ipv4.tcp_tw_recycle は廃止されました ― その危険性を理解する - Qiita

    Disclaimer 私はネットワークの勉強もちゃんとしたことないし、Linux のソース読むのもはじめてな素人です。 何かおかしなところなどあれば、遠慮なくコメント欄でまさかりをお願いいたします。 ソースコードの引用に関して 文中で Linux のコード/ドキュメントを引用している箇所がありますが、すべてタグ v4.11 のものです。また、日語のコメント・翻訳文は筆者が入れたものです。 TL; DR Linux のカーネルパラメータ net.ipv4.tcp_tw_recycle は、バージョン4.12から廃止されました。 今後はこの設定は行わないようにしましょう(というかできません)。 一方、net.ipv4.tcp_tw_reuse は安全であり、引き続き利用できます。 …というだけの話なのですが、自分用にメモがてら経緯・背景などを記録しておきます。 なんで気がついたか このパラ

    net.ipv4.tcp_tw_recycle は廃止されました ― その危険性を理解する - Qiita
  • mruby を Linux カーネル内で動作させる(2017 ver) : DSAS開発者の部屋

    このエントリは KLab Advent Calendar 2017(兼 mruby Advent Calendar 2017)の 12 日目の記事です。 今年は(前半は)Keepalived にフルタイムでコントリビュートしていたり(後半は)ひたすら mruby をいじっていたりと、実に OSS 充な一年だった @pandax381 です。 タイトルにある試みについては、2015 年の時点で東京大学の品川先生が「mrubyLinux カーネル内で動作させる」という素晴らしい記事を書かれていて、Kernel module に組み込んだ mruby が動作することを実証されています。 mruby をカーネル内で動作させるために大きく問題となるのが、浮動小数点演算です。mruby は Float を標準的なクラスとして提供していると共に VM 内部でも浮動小数点演算を行っている一方で、Ke

    mruby を Linux カーネル内で動作させる(2017 ver) : DSAS開発者の部屋
    Wacky
    Wacky 2017/12/12
    “現在の mruby には MRB_WIHTOUT_FLOAT という「ビルド時に Float クラスをはじめとする全ての浮動小数点数を取り除く」ためのオプションが追加されています”
  • The OOM CTF

    カーネルのバージョンやシステムの構成や実行するタイミングなどの変動要因により、結果が異なる場合がありますことを予めご了承ください。 0.3 自己紹介:熊Linux との関わりについて OSレベルでのセキュリティ強化 2003年4月から2012年3月までは、 TOMOYO Linux という Linux システム向けのアクセス制御モジュールの開発に携わってきました。バッファオーバーフロー脆弱性やOSコマンドインジェクション脆弱性を撲滅できない状況で、当初は SELinux という難解なアクセス制御モジュールしかありませんでした。 TOMOYO Linux のメインライン化にまつわる苦労話は、セキュリティ&プログラミングキャンプ2011の講義資料を参照していただければと思います。 TOMOYO Linux から始まって AKARI や CaitSith に至るまでの変遷は、セキュリティ

    The OOM CTF
    Wacky
    Wacky 2017/10/01
    OOM Killer
  • Out of memory and no killable processes... のカーネルパニックを起こしたい - hibomaの日記

    イントロ dsas.blog.klab.org こちらのエントリを拝見したのだが Out of memory and no killable processes... というログを出してカーネルパニックするケースがあるのだなと初めて知った。 幸いにして、過去に同様のメッセージを出すカーネルパニックには遭遇したことがない。あるいはログが取れてなくて気がつかなかっただけかもね! モチベーション 故意に異常を起こして、このカーネルパニックを見てみたい 🔥💀 Out of memory and no killable processes ... のコード 該当のログを出してカーネルパニックするコードは out_of_memory に書かれている (ソースは CentOS7.4 1708 ) /** * out_of_memory - kill the "best" process when w

    Out of memory and no killable processes... のカーネルパニックを起こしたい - hibomaの日記
  • 1