Tweet Linux カーネルの中には、カーネル内でのデッドロックやメモリリークなど、カーネル自身のデバッグを行うための様々な機能が含まれています。しかし、 kernel パッケージに含まれている普通のカーネルでは大部分が無効化されているため、実際に運用を開始してトラブルに遭遇するまで、カーネル自身のバグに気が付かないケースが多くあります。 RHEL の場合、多くのデバッグ機能を有効にした kernel-debug というパッケージも提供されています。 kernel-debug パッケージに含まれているデバッグ用カーネルを用いてシステムの構築時に試験を行うことで、運用開始後に遭遇する可能性のあるバグの一部を事前に見つけて対処を行うことができます。また、運用開始後でも、原因の究明に役立つことがあります。 kernel-debug パッケージのインストールは、以下に示すように yum コマン
ftraceの使い方については、以下の記事でも紹介しましたが、 ftraceを試してみました - へにゃぺんて@日々勉強のまとめ 過去には紹介しなかった使い方も分かったので、あらためてまとめます。 過去に紹介したときは、 「関数単位でカーネルの実行状況のトレースログを出してくれる機能」 という紹介でしたが、実は他にも機能があります。 なお以降の説明は、Linux 3.14.51で確認したものです。 また、debugfsのマウントポイントをで略記しています。 参考: debugfsのマウント方法 (マウントポイント /sys/kernel/debug の場合) sudo mount -t debugfs none /sys/kernel/debug カーネルコンフィギュレーションの変更 ftraceを使用する際もカーネルコンフィギュレーションの変更が必要です。 Kernel hacking
本章では、Armadillo-400 シリーズに固有な Linux カーネルのデバイスドライバーの仕様について説明します。 Armadillo-400 シリーズでは、カーネルコンフィギュレーションを変更することにより、標準で有効になっているもの以外の様々な機能を使用することができます。 Armadillo-400で、標準で有効になっていないデバイスドライバーを使用するためには、以下の手順でカーネルコンフィギュレーションをおこなう必要があります。 ボードオプションによりどのピンに機能を割り当てるか選択する。 ボードオプションは、make menuconfig でコンフィギュレーションを行う場合、Linux Kernel Configuration の System Type -> Freescale MXC Implementations -> MX25 Options -> Armadil
『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0063 号 バックナンバー Rubyist Magazine 0063 号 Rubyist Magazine 0062 号 Kaigi on Rails 特集号 RubyKaigi Takeout 2020 特集号 Rubyist Magazine 0061 号 Rubyist Magazine 0060 号 RubyKaigi 2019 直前特集号 Rubyist Magazine 0059 号 Rubyist
もしかしたら、コンピュータやネットワークの基本を学びたければ、僕たちはLinuxのカーネルを読んで理解するべきなのかもしれない。 僕たちは、プログラミングの勉強といったら、とりあえずやりがちなのが、Swiftを学んでiOSアプリを作る、PHPを学んで、Webアプリを作る。ネットワークの本を読む。などである。 でも、それでいいんだろうか。それをやることは否定しないけど、SwiftやPHPはゴロゴロ変わっていって、ちゃんとした技能が残らない感じするのである。ネットワークの本は本で、一次情報じゃない。 もちろん、アプリを構築するときのノウハウは手に入る。 でも、もしかしたら、僕たちは賽の河原の石積みをやっているのかもしれない。もしかしたら、コンピュータの表層的なことを理解するのではなく、もっと根本から理解するべきなのかもしれない。 コンピュータの根本とは何か、それは、ハードウェアだったり、OSだ
この記事はLinux Advent Calendar 2016 9日目の記事です。 遅刻してしまい申し訳ございません。。。 とある事情があって1ヶ月半ほど独自NICのLinux向けのネットワークドライバを開発していた。 今回はARM用のデバイスドライバを開発した。NICはXilinx社のFPGAであるZYBOを用いて開発した。 まだ十分に実用段階というわけではないが、ひとまず独自NIC経由でのpingやiperfが通ったので、後学のために知見を残しておきたい(誰得だ、という感じだが)。 ソースコードはまだ公開されていないが、そう遠くないうちに公開する予定(たぶん)。 はじめに Linuxのデバイスには キャラクタデバイス - バイト単位のデータ通信 (e.g. シリアルポート) ブロックデバイス - ブロック単位のデータ通信 (e.g. ディスク) ネットワークデバイス の3種類がある。ネ
In Visual Studio 2022 17.10 Preview 2, we’ve introduced some UX updates and usability improvements to the Connection Manager. With these updates we provide a more seamless experience when connecting to remote systems and/or debugging failed connections. Please install the latest Preview to try it out. Read on to learn what the Connection ...
UIO: ユーザー空間でデバイスドライバ作成が可能に UIOがLinux Kernel 2.6.23-rc1でマージされました。UIOはユーザー空間でドライバを作成するための仕組みです。Hans-Jurgen Kochの提案したパッチで、Greg K-H経由でマージされています。 UIOは、これらのハードルがあるカーネル空間でのドライバ開発部分をテンプレート化することで簡便にしてしまいます。一部の定義をカーネル空間で用意する必要がありますが、大半の部分をユーザー空間だけで実装できるようです。メモリにデバイスのレジスタなどさえマップできればよい、あるいは割り込みの通知さえ行えればよいのであれば利用できます。 ユーザー空間でUIOを利用する側からは、/dev/uio0をopenしてmmapすると、デバイスのメモリ空間が見えます。また/dev/uio0からreadすると、割り込みが起きるまでブロ
[Phoronix] LLVM/Clang 3.3 Should Be Close To Building Linux Kernel LLVMLinux Bug 9254 – clang can't build iptables in Linux kernel: error: fields must have a constant size: 'variable length array in structure' extension will never be supported ClangでLinuxカーネルをビルドできる状況は、多くの勢力に望まれてきた。理由は様々だ。Clangはビルド時間が短い。静的解析による警告も優れている。ソースコードも綺麗だ。複数の独立した実装でコンパイルできるコードは、誤りを静的に発見しやすい移植性にも優れる。より優れたコピーレフトなライセンスであるGPLv
2009/6/23 更新( Debian5 での準備追加) 2008/4/29 更新(ブロックデバイス追加) 2008/3/18 作成 目次 [1] はじめに [2] 準備 [3] 簡単なモジュール [4] モジュールパラメータ [5] procファイルシステム [6] キャラクタデバイス [7] ブロックデバイス [1] はじめに Linux(kernel-2.6系)のカーネルモジュール(ドライバ)を作成する。 テストした環境は次の通りである。 OS: Fedora7 カーネル: kernel-2.6.23.15-80.fc7 OS: Debian5 カーネル: kernel-2.6.26-2-686 [2] 準備 (2-1) Fedora7,Fedora8 の場合 Fedoraでカーネルモジュールを作成するにあたり、まず fedora wikiを参考にしながら カーネルモジュールをコン
トム「やあ、マイケルどうしたんだ。やつれた顔して」 マイケル「やあ、トム…どうしたもこうしたもないよ。全くバグがとれないのさ」 トム「ふーん?どこでどんなふうになっているんだい?」 マイケル「それがわからないから困っているのさ…!」 トム「ん?」 マイケル「このソフトなんだがね、起動中にどこかで無限ループしているようなんだよ。だけどどこかわからなくって」 トム「gdbの中で走らせて、killしてやったら?」 マイケル「そうするとほら」 % gdb --args ./src/hengband -- -n1 GNU gdb (Gentoo 7.2 p1) 7.2 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses
アーキテクチャ固有のレジスタ† CPSR があるのとないのとで struct pt_regs のレジスタ数が違う。 Armadillo-9 に使われている ARM9 は CPSR を持っているので armv の方である。 CPSR レジスタがある CPU -> include/arch-arm/proc-armv/ptrace.h がインクルードされる ない CPU -> include/arch-arm/proc-armo/ptrace.h がインクルードされる もっとも CPSR が何のレジスタであってもかまわないのだが、カーネルのヘッダがこういう定義をしているため非常にやりづらい。どういうことかというと CPSR の有無によって struct pt_regs 内での ARM_ORIG_r0 の位置が変わってしまうのである。 //include/arch-arm/proc-armv/p
kernel2.6.13から導入された、apiでinotifyというものがあります。これは、ファイルシステムのイベントを監視するためのもので、指定したディレクトリ配下に対しての操作をとることができます。 たとえば、/tmp を監視しているとしたら、/tmp配下への操作をこのapiで監視をすることができます。 kernelのapiですが、コマンドラインで使用するためにはinotifywatch等のコマンドが必要になるのでインストールをしてみます。debian系ならaptで一発で入ります。 インストールする debian/ubuntu sudo apt-get install inotify-tools これでOK。 早速使ってみる inotifywatchの使い方は簡単です。コマンドの引数に対して監視対象を渡すだけ。 今回はディレクトリ単位で監視をしようと思いますので、再帰的に取得をしてみよ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く