タグ

linuxに関するf99aqのブックマーク (147)

  • Linux Kernel Watch番外編:セキュリティをやってるやつらは狂っている?! - @IT

    中村 雄一 日SELinuxユーザ会 2007/10/31 “insane”とは「正気でない」「狂った」「非常識な」という意味があります。その言葉があのLinusから、セキュリティを考える人たちに投げられました。はたしてその真意とは? Linuxフォーラムで人気の連載「Linux Kernel Watch」番外編として、メーリングリストから気になる発言をピックアップしてみました。Linuxフォーラムの記事「10月版 あんなコアいいな、吐けたらいいな」も同時公開しておりますので、あわせてお読みください(編集部) きっかけはLinusの発言 いつもはLinuxフォーラムで連載されている「Linux Kernel Watch」ですが、今回はその番外編として、セキュアOSに注目したKernel Watchをお届けしたいと思います。 まずきっかけとして取り上げたいのは、あのLinus Torv

  • システムコールによる非同期I/O API - takkan_mのNo planな日常

    このAPIは、カーネル2.6以降にカーネルに追加された機能をつかうためのシステムコールになります。 カーネルは、非同期I/Oをサポートするために、VFS層のファイルオブジェクト(簡単に説明すると、実際のファイルシステムがファイルに対する操作を保持するオブジェクトだと思います。この中に、f_opというファイル操作のための関数テーブルをもっています。オブジェクト指向におけるスーパークラスのようなものです。)のf_opに、ファイル操作のaio_read()とaio_write()というエントリポイントがもうけられるようになりました。(個人的に、POSIXのAPIと名前がかぶるので、ここで一度混乱しました。Linuxのカーネル周りは、日語に直しているせいかもしれませんが、同じ名前で呼べるけど実は別物というものがいくつかあります。まぁ、でもそれはおいおい) このAPIをもちいると、I/O処理をカー

    システムコールによる非同期I/O API - takkan_mのNo planな日常
  • POSIX準拠の非同期I/O - takkan_mのNo planな日常

    これは、ライブラリ関数として実装されており、以下の関数群を持ちます。 aio_read(),aio_write(),aio_fsync(),aio_error() aio_return(),aio_cancel(),aio_suspend()詳しい使い方は説明しませんが、aio_read(),aio_write()を使い、I/O要求を発行します。I/O要求は、それぞれの関数中で要求を発行した段階で復帰してくれます。 では次のような、aio_readを行うプログラムを書いて、このライブラリ関数がどのように実装されているかを見てみます。aio_readの動作が見たいだけなので、たぶん、この非同期I/Oライブラリの使い方としては、だめだめです。 #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <s

    POSIX準拠の非同期I/O - takkan_mのNo planな日常
  • Linux 2.6.22 released | スラド

    7月8日(国内では9日)、最新の安定版カーネル 2.6.22 がアナウンスされました。 kernelnewbies.org によると、今回の主要な強化点は以下の通り。 新しい SLAB アロケータ「SLUB」 Devicescape が寄贈した新ワイヤレススタック 新しい IEEE1394 スタック ファイルディスクリプタを介したシグナル/タイマ/イベント通知 Blackfin アーキテクチャサポート フラッシュデバイス用 LVM「UBI」 RxRPC プロトコルのサポート プロセスのフットプリント情報追加 utimensat() システムコール追加 大量のドライバ追加・更新

  • linux 2.6.23リリース | スラド

    linuxカーネル2.6.23がリリースされました。 今回もいろいろ機能が追加されたり、修正/改善(改悪もか?)が入っております。 スケジューラとしてCFSという新しいものが入りました 仮想化機能のひとつとしてlguestが追加されました(rc時代だと実験コードという感じだったけどどうなったかな…) 同様にXenのサポートも入りましたが、こちらはdomUのみです、他にも制限がいくつかある模様 UIO(userspace I/O)の導入でユーザランド空間で動くドライバの開発ができるようになった x86ベースのアセンブラ(起動時に使ってる部分)をよりまともにした 各種ハードウェアのドライバ追加/改良 より細かい情報については、 KernelNewbiesにあるサマリなどをごらんください。各地のミラーでソースはダウンロードできると思います。

  • ユメのチカラ: カーネルにおけるリグレッションの特定

    例えば、2.6.17では問題ないのに、2.6.18だとなぜか問題が発生するとする。linux kernel は git というソースコード管理システムによって、全ての変更が管理されているので、その機能を利用して問題を発生させたパッチを特定する事ができる。 基的な考え方は、コミットしたパッチを問題を発生させた組と、発生しない組にわけていって、問題を絞り込む。2分検索だ。 例えば、1000個分の変更がコミットされていたとする。これを問題が発生しない状況から一個一個順ぐりにあてていき、問題が発生したら、最後にあてたパッチが原因だということがわかる。この順ぐりにあてていく場合、最悪1000回試行錯誤しなくてはいけない。 2分検索の場合、まづ、500個分あてた状態で(gitで簡単にそのような状況をつくれる)試験をし、仮に問題が発生しなければ、残りの500個に問題があるので、さらに、その半分250個

  • Linux JF (Japanese FAQ) Project. (Japanese)

    JF は、Linux に関する解説文書・FAQ などを作成・収集・配布するプロジェクトです。JF は, Linux に関する解説文書・FAQ などを作成・収集・配布するプロジェクトです. オリジナル文書 (日語) の執筆, LDP (Linux Documentation Project) の HOWTO や Linux カーネル付属文書の翻訳などを行っています. この Web Site では, JF の活動成果である 300 を超える文書が閲覧できます.

  • Linux カーネルのコンテキストスイッチ処理を読み解く - naoyaのはてなダイアリー

    Linux カーネルのプロセススケジューラの核である kernel/sched.c の schedule() を読み進めていくと、タスク切り替え(実行コンテキスト切り替え)はその名も context_switch() という関数に集約されていることが分かります。2.6.20 の kernel/sched.c だと以下のコードです。 1839 static inline struct task_struct * 1840 context_switch(struct rq *rq, struct task_struct *prev, 1841 struct task_struct *next) 1842 { 1843 struct mm_struct *mm = next->mm; 1844 struct mm_struct *oldmm = prev->active_mm; 1845 184

    Linux カーネルのコンテキストスイッチ処理を読み解く - naoyaのはてなダイアリー
    f99aq
    f99aq 2007/09/30
    binary hacks もう一回読もうかな。
  • C言語: UNIX最速ファイルコピー

    Created: Kazuki Ohta, 2006/06/14 Last Update: Kazuki Ohta, 2006/06/14 「write(2)の正しい使い方」と同じく、OS演習でやった事の延長線の記事を書いてみる。お題は「UNIX上で大規模ファイルを最速でコピーする方法」だ。一般的に、UNIXでファイルをcopyする際には以下のような方法が有る。 read -> write read -> write with posix_fadvice mmap -> mmap -> memcpy -> fsync mmap -> mmap -> memcpy -> fsync with madvise mmap -> write mmap -> write with madvise read, write, mmap辺りは良いとして、posix_fadviseというシステムコールが有

  • Branch Tracer for Linux

    btraxとは btraxの機能概要 スクリーンショット 適用例 リンク このプログラムの一部は、「独立行政法人 情報処理推進機構 オープンソースソフトウェア活用基盤整備事業」に係る委託業務の一環として開発しました。 btraxとはbtrax(Branch Tracer for Linux) は、Pentium4, Xeon, Pentium-M CPU のデバッグ機能である最新分岐記録機構を利用した、分岐命令トレーサです。カーネルに変更を加えることなく、カーネル/ドライバおよびアプリケーション/ライブラリの分岐命令実行状況を取得でき、そのログ情報を元に分岐カバレージ情報と実行経路を表示することができます。 btraxプログラムbtraxは、次の2つの機能から構成されます。 分岐命令実行ログ取得機能 ログ解析機能 分岐命令実行ログ取得機能には、分岐命令トレース用の体ドライバとは別に、下記

  • I, newbie » プログラマへのお願い

    インストールに必要な要件を書いてください。なにが必要で、なにがオプションなのか書いてください。 配布物のファイル名はてきとーにしないでください。package-$major-$minor.tgzでなぜだめですか。package-$major-rc4-$date-beta.tgzとか嫌がらせですか。 同じファイル名で違う内容の配布物を再リリースしないでください。hash値ってファイル名とその内容に対して作成されるんですよ。どんな小さな修正でもバージョンを上げてリリースしてください。 インストーラを再発明しないでください。対話的なインストーラだからインストールが簡単ですよって、人間がインストールすると仮定しないでください。そういうのはパッケージ管理システムに任せてください。 エラーをSTDOUTに出力しないでください。通常の出力はSTDOUT、エラーなどはSTDERRであることが期待されていま

    f99aq
    f99aq 2007/09/08
  • 子プロセスに LD_PRELOAD を継承させない - bkブログ

    子プロセスに LD_PRELOAD を継承させない Linux で LD_PRELOAD 環境変数を使うと共有オブジェクト (共有ライブラリ) のプリロードを行うことができます。通常、LD_PRELOAD が設定されている間は、あるプロセスから呼んだ子プロセスも同様にプリロードを行いますが、場合によっては子プロセスにはプリロードさせたくないときもあります。 たとえば、make に対して foo.so をプリロードさせるつもりで、 LD_PRELOAD=./foo.so make と実行すると、make が呼び出すあらゆるコマンドも foo.so をプリロードします。 その結果、gcc や gcc の呼び出すプログラム cc1, as, collect2, ld まで foo.so をプリロードします。 foo.so が make の挙動を変えることのみを目的としていた場合、 gcc まで影

    f99aq
    f99aq 2007/08/26
    ctor で unsetenv("LD_PRELOAD")
  • naoyaのはてなダイアリー - sched_setaffinity(2) を使って任意のプログラムを任意のCPU上で動かす

    Linux 2.6 には sched_setaffinity(2) というシステムコールがあり、これを利用して任意のスレッドを(マルチCPU環境下で)特定の CPU で実行させることができます。http://www-06.ibm.com/jp/developerworks/linux/051028/j_l-affinity.shtml によるとリアルタイムプロセスでマネージャとなるスレッドをこのシステムコールで特定の CPU に固定する...といった応用が考えられるそうです。 へえ、と思ったのでちょっと遊んでみました。LD_PRELOAD を使って任意のプログラムを任意の CPU に固定して動かしてみます。GCC の __attribute__)((constructor))( で sched_setaffinitiy(2) を呼びます。(参考: http://0xcc.net/blog/

    naoyaのはてなダイアリー - sched_setaffinity(2) を使って任意のプログラムを任意のCPU上で動かす
  • ウノウラボ Unoh Labs: yumのローカルミラーリポジトリを構築する方法

    naoya です。 フォト蔵などのサービスは、社内にあるサーバ群で運用しています。現在、サービスの規模が成長するにつれて、サーバの台数も約20台強くらいになってきました。 すべてのサーバには、Fedora Core 5がインストールされていて、すべてのサーバにまったく同じパッケージがインストールされています。パッケージの更新には、Fedora Core 5に付属しているyumを使ってすべてのサーバを定期的に更新をしているのですが、yum-fastestmirrorをインストールしている状態でもパッケージの更新に時間がかかるようなってきました。 そこで、一台のサーバにyumのローカルミラーリポジトリを構築してパッケージのダウンロード時間を減らしてみました。今日は、yumのローカルミラーリポジトリを構築する手順を紹介します。 1.必要なパッケージのインストール yum-utilsとcreate

  • Skype for Linux 1.4ベータ更新 - Skype 日本語ブログ

    Skype for Linux 1.4ベータが更新されました。前回のアップデートとあわせ、1.3からの主な変更点は以下の通り。 動くエモーティコンの改善(今回の更新)音量自動調整機能追加標準ビットレート以外のUSBオーディオデバイスへの対応改善(今回の更新)Skypeを最小化したまま起動可能に(今回の更新)オフラインのユーザを非表示にできるように(今回の更新)過去のイベントをクイックフィルタで検索可能に(今回の更新)SuSEとMandrivaのRPMパッケージ追加(今回の更新)新規アカウントの作成が可能にダイヤルパッド追加通話の技術的情報追加X11とD-BUSを通じてSkype APIがアクセス可能に誕生日リマインダー表示機能追加 ダウンロードはこちら。 その他にもバグ修正や改善点が盛りだくさんです。詳しくは変更ログでどうぞ。

  • inetd の仕組みを見てみる - naoyaのはてなダイアリー

    inetd や xinetd (以下 inetd) はインターネットサービスをデーモン化するのに共通している処理を担い、ほとんどの時間をアイドル状態で過ごすその手のサービスに必要なリソースを節約する役割を果たします。 inetd のひとつ面白いところは、inetd でサービス化したいプログラムの標準入力/標準出力がクライアントソケットの入出力に接続されるところです。例えば daytime 相当のサービスを自分で作ろうと思った場合 #!/usr/local/bin/perl # daytime.pl use strict; use warnings; use DateTime; use IO::Handle; STDOUT->autoflush(1); STDOUT->printf( "%s\n", DateTime->now(time_zone => 'Asia/Tokyo') ); と標

    inetd の仕組みを見てみる - naoyaのはてなダイアリー
  • Linuxでaio - (ひ)メモ

    実装が2つある。以下、あくまで今の時点でのLinuxの場合の状況/実装のおはなし。 POSIX aio aio_read(3) とか aio_write(3), aio_error(3), aio_return(3) とか。 インターフェースはPOSIXで定義されているのと同じ。 システムコールじゃなくてライブラリ関数(librt) 裏でpthreadつくってがんばってるげ。 libaio http://lse.sourceforge.net/io/aio.html http://ftp.jaist.ac.jp/pub/Linux/Fedora/development/source/SRPMS/libaio-0.3.106-3.2.src.rpm とか io_prep_pread(2), io_prep_pwrite(2), io_submit(2), io_queue_init(2),

    Linuxでaio - (ひ)メモ
  • Linux カーネル コーディング規約

    Linux カーネル コーディング規約 [プレインテキスト版] 原著作者: Linus Torvalds <torvalds at osdl dot org> 翻訳者: Ken Iwamoto <iwamoto dot kn at ncos dot nec dot co dot jp> Toshikazu Nakayama <nakayama dot ts at ncos dot nec dot co dot jp> Nobuo Yoshida <yoshida dot nb at ncos dot nec dot co dot jp> バージョン: 2.6.24 翻訳日時: 2008/03/26 ================================== これは、 linux-2.6.24/Documentation/CodingStyle の和訳 です。 翻訳団体: JF

    f99aq
    f99aq 2007/06/27
  • JF: Linux Kernel 2.6 Documentation: ManagementStyle

    Linux カーネルのマネージメントスタイル [プレインテキスト版] 原著作者: Unknown 翻訳者: Noriyuki Taniuchi < n-taniuchi at ay dot jp dot nec dot com> バージョン: 2.6.20 翻訳日時: 2007/02/21 ================================== これは、 linux-2.6.20/Documentation/ManagementStyle の和訳 です。 翻訳団体: JF プロジェクト < http://www.linux.or.jp/JF/ > 翻訳日 : 2007/2/21 原著作者: Unknown 翻訳者 : Noriyuki Taniuchi < n-taniuchi at ay dot jp dot nec dot com > 校正者 : Seiji Kane

    f99aq
    f99aq 2007/06/27
  • ユメのチカラ: Who wrote 2.6.20? 誰がlinux 2.6.20を書いたのか?

    http://lwn.net/Articles/222773/ 先週のカーネル読書会でGreg KHがLinux Kernel開発コミュニティのお話をしていて、その中で開発の量的な側面についていろいろ紹介していた。そのスクリプトを眺めていたら、元ネタは、Jonathan Corbetという人が書いた「Who wrote 2.6.20」というLWNの記事ということをREADMEファイルから発見した。そこで早速Googleしてみた。それが上のリンク。 その記事はざっくり言うと、Linux Kernel 2.6.20を誰が開発し、その人はどこの会社に雇用されているかというのをgit(Linuxのコード管理システム)のログから定量的に解析したものである。 Linuxは多くのボランティアの自発的な貢献によって開発されていると良く言われているが、それがどのくらい正しいのか、そうでないのかを検証している

    f99aq
    f99aq 2007/06/10