Linux

(自分メモ)Meltdown・SpectreのGoogle Project Zeroの報告内容について

Meltdown・Spectreについて報告されている Project Zero: Reading privileged memory with a side-channel の内容について、自分なりに理解した自分メモを記録として残しておきます。

Linux 4.12: livepatch: 適用したライブパッチを無効化する機能の動作確認

久々のLinuxの記事です。一つ前のリリースですが、Linux 4.12でライブパッチ(livepatch)へ機能追加がなされ、 適用したライブパッチを無効化することができるようになりました。サンプルに記載のとおりですが、試してみたので記事にしてみます。 なお、ライ…

chrootとunshareを使い、シェル上でコマンド7つで簡易コンテナ

コンテナ型仮想化であるDockerは、様々な名前空間の分離やcgroupなどのLinuxの機能を使用して実現されています。 ここでは、簡易的に機能を「ルートディレクトリとPID名前空間も分離されている」と限定し、シェル上で7つのコマンドでコンテナを立ち上げてみ…

libcgroup無しで、cgroupによるプロセスへのCPU割り当て制限

LinuxカーネルにはCPUやメモリといったリソースをプロセス単位で制限できるcgroupという機能があります。 cgroupの使い方を紹介する多くの記事ではaptやyumでlibcgroupをインストールしていますが、 組み込みなどでは、apt/yumを使えず、ライブラリの追加が…

out of treeでライブパッチを試す、/dev/nullへのパッチ紹介

Linuxカーネルのバージョン4.0から追加されたライブパッチ(Livepatch)機能を今更ながら、試してみました。 (Linux4.0の記事でライブパッチに触れていますが、32bitのマシンしか無く、試せなかったんですね。。) なお、本記事は「CLR/H #clrh101」のLTで発表…

Linux 4.6-rc1がリリースされました

旧聞ですが、ESTで3/26の19時半頃、 日本で3/27の9時半頃にLinux 4.6-rc1がリリースされました。 Linux-Kernel Archive: Linux 4.6-rc1 かなり大きなマージウィンドウとなりそうで、1日早くクローズしたとのことです。LKMLをちゃんと追っているわけでもなく…

Linux 4.5がリリースされました

やや旧聞ですが、 リーナスのロサンゼルス時間では3/13(日)の22時頃、 日本時間では3/14(月)の14時頃にLinux 4.5がリリースされました。 LKMLでの告知内容を要約すると以下のとおりかと思います。 rc8は実施せず、4.5をリリースすることに決めた 問題点もあ…

Linux 4.5-rc7(最後のrc)がリリースされました

リーナスのロサンゼルス時間で昨日(3/6)の15時頃、 日本時間で今日(3/7)の朝8時頃にLinux 4.5-rc7がリリースされました。 前回のリリースでは「rc7が落ち着いてこなければ、rc8のリリースもあり得る」といったことが書かれていましたが、 どうも落ち着いてき…

Linux 4.5-rc6がリリースされました

リーナスのロサンゼルス時間で昨日(2/28)の朝9時、日本時間では今日(2/29)の午前2時に Linux 4.5-rc6がリリースされました。 https://lkml.org/lkml/2016/2/28/207 いつも通り、リーナスのアナウンスメールを翻訳してみました。 なお、要約すると以下のとお…

getcpu_cacheシステムコール追加パッチを試してみました(後編: サンプルを動かしてみた)

昨日(2/24)の記事の続きです。 2/24に、LKMLで流れていた以下のパッチについて、 http://article.gmane.org/gmane.linux.kernel/2159632 昨日(2/24)は、以下の1.と2.まで紹介しました。 1. getcpu_cache()について、主にメール本文やコミットメッセージから…

getcpu_cacheシステムコール追加パッチを試してみました(前編: pwclientでパッチ適用まで)

今日(2/24)、LKMLで以下のパッチが流れていました。 http://article.gmane.org/gmane.linux.kernel/2159632 「getcpu_cache()システムコールを追加する」パッチで、Linux 4.6に向けたものなので、 もう少し先のパッチです(現在は4.5のrc期間)。 まだ、パッチ…

Linux 4.5-rc5がリリースされました

リーナスのロサンゼルス時間では2/20の14時頃、日本時間では今日2/21の朝7時頃に、 Linux 4.5-rc5がリリースされました。 https://lkml.org/lkml/2016/2/20/168 要約すると、以下のとおりかと思います。 通常どおり VM THP(transparent huge-page) cleanupが…

Linux 4.5-rc4がリリースされました

日本時間で今日、ロサンゼルスでは2/14バレンタインに、 Linux 4.5-rc4がリリースされました。 http://article.gmane.org/gmane.linux.kernel/2151840 ※ lkml.orgでメールが見れない(?) パターン化してきてしまっていますが、 要約すると以下のとおりかと思…

Linux 4.5-rc3がリリースされました

旧聞ですが、日本時間で2/8の朝9時(Linusのロサンゼルス時間では2/7の16時)に、 Linux 4.5-rc3がリリースされました。 LKML: Linus Torvalds: Linux 4.5-rc3 また例によって、LKMLでのアナウンスを訳してみました。 要約すると、以下のようなところかと思い…

Linux 4.5-rc2がリリースされました

日本時間で今日(2/1)の朝11時にLinux 4.5-rc2がリリースされました。 (Linusのロサンゼルスの時間では1/31の18時)また例によって、以下のLinusのLKMLのアナウンスを訳してみました。 LKML: Linus Torvalds: Linux 4.5-rc2 要約すると、 プルリクエストの数に…

Linux 4.5-rc1 のLinus発表を訳してみました

Linux 4.5-rc1が本日(1/25)、LKMLで発表されました。 今回は、自分の英語の勉強の意味も兼ねて、LinusのLKMLでの発表を訳してみました。 要約すると、以下のとおりかと思います。 マージウィンドウが終了したので、テストしてほしい 特に変わったところのな…

Linuxカーネル4.4をビルド・動作確認と差分について(ゴホッ、android-x86、ゴホッのx86-32 sysenter ABI誤用について)

昨日、Linuxカーネル4.4がリリースされました。 Linux-Kernel Archive: Linux 4.4 Linuxカーネル4.4はLTS(Long Term Support)で、今後2年間サポートされます。 https://plus.google.com/+gregkroahhartman/posts/WMEWz4noxFm いつもの確認事項 ビルド〜起動…

Linuxカーネル4.3をビルド・起動確認してみました

昨日(11/2)、Linuxカーネル4.3がリリースされましたので、 例によって、ビルド・動作確認とバージョン間の変更差分を簡単に見てみました。 ビルド・起動確認 ビルド環境は、前回同様、以下のとおりです。 マシン: ThinkPad E450 CPU: Intel Core i7-5500U Me…

Kprobesの使い方

Kprobesは、レジスタ情報ダンプなど任意の処理を、アセンブラの命令単位で実行できる機能です。 利用するにはカーネルモジュールを作成する必要はありますが、 カーネルの再ビルド無しで、カーネル内のすべての命令をデバッグできます。

ftraceの使い方

ftraceの使い方については、以下の記事でも紹介しましたが、 ftraceを試してみました - へにゃぺんて@日々勉強のまとめ 過去には紹介しなかった使い方も分かったので、あらためてまとめます。 過去に紹介したときは、 「関数単位でカーネルの実行状況のトレ…

dyndbg(dynamic debug)の使い方

printk()はデバッグ出力無効化の際には、コメントアウトするなりして再ビルドする必要があります。 何度もビルドを繰り返すのは面倒なので、デバッグ出力の有効/無効を実行時に動的に切り替えられるようにする機能が dyndbg(dynamic debug)です。

Linuxカーネル4.2をビルド・インストール

昨日(8/30)、Linuxカーネル4.2がリリースされましたので、 例によって、ビルド・インストールしてみました。 なお、やっと64ビットマシンを購入しましたので、 今回からは、X86_64でビルドします。

Linuxカーネル4.1をビルド・インストール

Linuxカーネル4.1が公開されましたので、 さっそく、ビルド・インストールしてみました。 毎度のことなので、ビルドまでを行うシェルスクリプトを作ってみました https://github.com/cupnes/sandbox/blob/master/build_kernel.sh 「初期設定(ここから)」から…

シグナルの使い方と実装について

今回は、Linuxのシグナルについて、自分なりにちゃんと調べてみましたので、 記事にまとめてみます。ほとんどUNIXシグナルと変わらない話だとは思いますが、ソースコードは Linuxのものを参照しているので、Linuxに限った話も混じっているかと思いま す。

Linux 4.0ビルド・起動確認と、ライブパッチソースの在り処

今日(4/13)、Linux 4.0がリリースされました。 LKML: Linux 4.0 released https://lkml.org/lkml/2015/4/12/178 何度かこういうネタを記事にしていますが、 今回も、自分のマシンでビルドと起動を試してみました。 また、それだけだと記事としてあんまりなの…

USB FDDのmountで"can't read superblock"と言われるときは

USB FDDは/dev/fd0ではなく、/dev/sdbのように認識されます。 なので、 $ sudo mount -t vfat /dev/sdb /mnt/storage などのようにマウントすることになるのですが、 "can't read superblock" とのメッセージが出てマウントできないことがあります。 そんな…

linux-0.01-rm-3.5をQEMU上で実行

Linux-0.01を最近のLinux上でビルドできるようにする「Linux 0.01 remake(linux-0.01-rm)」というプロジェクトがあります。 Debian 7.7(wheezy)上で試してみました。 https://github.com/cupnes/linux-0.01-rm-3.5 結論としては、以下のエラーでブートは完了…

今さらだけど、startparについて

DebianではJesseからsystemdが決まっているなどで、 今さらではあるのだけど、Sysvinitで使用されているユーティリティの一つ 「startpar」の主に設定ファイルを調べて見ました。 startparとは ランレベルのスクリプトをパラレルに実行してくれる実行ファイ…

Debian 7.6(wheezy)でファミコン(NES)プログラミング(6502アセンブル/逆アセンブル)

Debian 7.6(wheezy)でファミコン(NES)のプログラミング環境を構築したので、そのメモです。 といっても、環境構築からアセンブル、動作確認は以下の記事の受け売りです。 Ubuntu で ファミコン(NES)プログラム その1.1(リローデット) Ubuntu向けの記事です…

CentOS 6.5でLinuxカーネル 3.16.1をビルド

CentOS(x86_64)の環境でもビルドを試したのでメモ。 作業環境 $ cat /etc/redhat-release CentOS release 6.5 (Final) 作業過程 必要なパッケージのインストール $ sudo yum groupinstall "Development tools" $ sudo yum install ncurses-devel ダウンロー…