タグ

カーネルに関するFluss_kawaのブックマーク (9)

  • Linuxネットワークドライバの開発 - Handwriting

    この記事はLinux Advent Calendar 2016 9日目の記事です。 遅刻してしまい申し訳ございません。。。 とある事情があって1ヶ月半ほど独自NICのLinux向けのネットワークドライバを開発していた。 今回はARM用のデバイスドライバを開発した。NICはXilinx社のFPGAであるZYBOを用いて開発した。 まだ十分に実用段階というわけではないが、ひとまず独自NIC経由でのpingやiperfが通ったので、後学のために知見を残しておきたい(誰得だ、という感じだが)。 ソースコードはまだ公開されていないが、そう遠くないうちに公開する予定(たぶん)。 はじめに Linuxのデバイスには キャラクタデバイス - バイト単位のデータ通信 (e.g. シリアルポート) ブロックデバイス - ブロック単位のデータ通信 (e.g. ディスク) ネットワークデバイス の3種類がある。ネ

    Linuxネットワークドライバの開発 - Handwriting
  • Linuxカーネルのデバッグでprintk(9)デバッグを卒業したいっ! - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    この記事はLinux Advent Calendar 2015の25日目の記事です。 Linuxカーネルのデバッグである意味一番手軽なのがprintk(9)によるデバッグだと思うんですが(ユーザランドのプログラムで言うところのprintf(3)デバッグ)、この場合h速いCPUを積んだマシンならビルドはすぐに終わるけど、カーネルを変えている以上は再起動はしないといけないし、ちょっと手間ですよね。ということで、printk(9)によるデバッグはそろそろ卒業しようというのがテーマです。 ちなみに、printk(KERN_INFO"foobar\n")よりもpr_info("foobar\n")のほうがお手軽です。pr_で始まるマクロがinclude/linux/printk.hに定義されています。 Linuxのデバッグをするための方法としても下記のようなものがあります(kmemleakとかloc

    Linuxカーネルのデバッグでprintk(9)デバッグを卒業したいっ! - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
  • Linux Insides : カーネル起動プロセス part3 | POSTD

    ビデオモード初期化とプロテクトモードへの移行 カーネル起動処理シリーズのパート3です。前回の パート では、 set_video ルーチンを main.c .から呼び出す直前までを扱いました。今回は、次の内容を見ていきます。 カーネルセットアップコードにおけるビデオモードの初期化 プロテクトモードに切り替える前の準備 プロテクトモードへの移行 注 プロテクトモードについてよく知らない場合は、前回の パート の内容を見てください。また、参考になる リンク も同ページに掲載しています。 上にも書いたように、 arch/x86/boot/video.c ソースコードファイルに定義された set_video 関数から始めましょう。内容を見ると、まずビデオモードを boot_params.hdr 構造体から取得することから始まるのがわかります。

    Linux Insides : カーネル起動プロセス part3 | POSTD
  • Linux Insides : カーネル起動プロセス part2 | POSTD

    カーネルセットアップの第一歩 前回の パート では、Linuxカーネルの内部について探り始め、カーネルをセットアップするコードの最初の部分を見ていきました。前回の投稿は arch/x86/boot/main.c 内の main 関数(C言語で書かれた最初の関数)を呼び出すところまで確認しました。 このパートでは、引き続きカーネルのセットアップコードについて調査し、併せて以下の内容も学びます。 protected mode (プロテクトモード)の概要 * プロテクトモードに移行するための準備 ヒープとコンソールの初期化 メモリの検出、CPUの検証、キーボードの初期化 その他もろもろ それでは始めていきましょう。 プロテクトモード ネイティブのIntel64の ロングモード に移行する前に、カーネルはCPUをプロテクトモードに切り替える必要があります。 では、この プロテクトモード とは何でし

    Linux Insides : カーネル起動プロセス part2 | POSTD
  • 第384回 Initramfsのしくみ | gihyo.jp

    Ubuntuはカーネルを起動したあと、ルートファイルシステムをマウントするために「Initramfs」というイメージファイルを使用します。今回はこのイメージファイルについて説明しましょう。 Initramfsの役割 Ubuntuはさまざまなディスクデバイスにルートファイルシステムをインストールし、起動するOSです。カーネルはブートローダーによって起動されたあと、ルートファイルシステムをマウントするために、サポートしているすべてのディスクデバイスのドライバを持っている必要があります。 しかしながらこのドライバをすべてカーネルに組み込んでしまうと、カーネルが肥大化してしまいます。しかもそのほとんどは、今使っているディスクデバイスでは不要なドライバです。必要なドライバを必要に応じてロードする仕組みとして「カーネルモジュール」がありますが、今度はその「カーネルモジュール」をどこに保存するのかという

    第384回 Initramfsのしくみ | gihyo.jp
  • Linux/arm64のブートプロセスについてのメモ - Qiita

    Linuxのブートプロセスを追うときに見るべきファイル(x86_64編)のarm64版のようなもの。 ブートストラップ linux/Documentation/arm64/booting.txt によると、現在のarm64用カーネルは、x86_64用カーネルが持つようなブートストラップの機能が存在しない。実際、arch/arm64/boot/以下にはx86_64のようなソースコード(head_64.S等)が存在しない。ブートローダがハードウェアの最低限の初期化をして、解凍された生のカーネルイメージ(ELFではない)を配置、エントリポイントにジャンプしてやらないといけない。カーネルに実行を移すときの要件も、booting.txtに書かれている。 ブートローダとしては、ubootやUEFIが使えると思われる。(Boot Wrapperというのも使えるみたいだが、今も使えるかは分からない。) a

    Linux/arm64のブートプロセスについてのメモ - Qiita
  • 【Linux】カーネルのwrite処理の流れ【pdflush】 - ichidou のブログ

    2013-09-20 【Linux】カーネルのwrite処理の流れ【pdflush】 久々更新。備忘録も兼ねてメモ。 それとなくピンと来たので、メモ。こういったことは運用中のトラブルシューティングの キッカケになる可能性があるため、恒久的に覚えて然るべき。なにより、Linuxカーネルの動作が 少しでも分かったような気になるため、非常に楽しい。Linuxカーネルの write 処理の流れについて。 1. プロセスが write(2) システムコールを発行 2. write(2) 対象のデータをカーネルがページキャッシュに蓄積 3. カーネルが該当のページ(データ)にDirtyフラグを付与 4. 問答無用で5秒に1回、あるいはDirtyページが多くなってきたなどの要因で、 カーネルスレッドの pdflush([pdflush] or flush-8:0 ?) が発動 (例外として、プロセ

    【Linux】カーネルのwrite処理の流れ【pdflush】 - ichidou のブログ
  • Linux カーネル開発に貢献するのは思いのほか簡単です

    記事の筆者、Konrad Zapalowicz は Cybercom Poland のソフトウェア開発者で、どちらかと言えば新しい Linux カーネル貢献者ですが、同時にランナーでもあります。彼の Web サイトは zapalowicz.pl です。 私は昨年デュッセルドルフで開催された Linux Con Europe において、Linux カーネル開発に参加するのがいかに容易かを人々に伝えるための講演を行いました。このテーマを退屈と感じるくらい聴衆が上級者だったらどうしようという私の心配をよそに反響は良く、このようなガイドラインやアドバイスは大歓迎だという意見を多数頂きました。会場の最大収容人数は約 30 名で、あまり大きな会場ではありませんでしたが、このテーマに関心を持ってくださる方が世の中にもっといるのではないかと感じています。そこで私はこのプレゼンをシリーズ記事にしようと決め

  • 30日でできない 自作Linuxクローン開発 - るくすの日記 ~ Out_Of_Range ~

    この記事は 自作OS Advent Calendar 2014 - Adventar 12/25の記事です。 一ヶ月程前からLinuxカーネルのコードを読み始めたので、解読ついでに自分でもカーネルを作ってみました。 とはいっても、まだ半分も完成してないです() 当初は、30日でできる 自作Linuxクローン開発 を予定していたのですが、 予想以上の規模で、解読とフルスクラッチ開発を併行するのは結構大変でした... という訳で、現在実装できている所まで紹介します。 開発レポジトリはこちらです。 RKX1209/Abyon · GitHub (インストール方法や実行方法はここに書いてます) 実装した機能 プロセススケジューラー Runキュー ハードウェア割り込み(PIC 8259A) 遅延割り込み Tasklet グローバルタイマー(PIT) タイマーリスト 仮想ページング(IA-32 MMU

    30日でできない 自作Linuxクローン開発 - るくすの日記 ~ Out_Of_Range ~
  • 1