eBPF(extended Berkley Packet Filter)という用語を著者が初めてみかけたのは、2015年ごろだった。最初は、eBPFをその字面のとおり、パケットキャプチャやパケットフィルタリングを担うだけの、Linuxの新しいサブシステムであろうと認識していた。しかし、実際にはそうではなかった。 システム性能の分析のための方法論をまとめた書籍Systems Performance 1 の著者で有名なBrendan Greggが、Linuxのネットワークサブシステムとは特に関係ない文脈で、古典的なシステム性能計測ツールでは計測できないことを計測するツールを作っていた。その計測ツールがeBPFという技術によって実装されていることを知ったときに、eBPFに興味をもったのだった。また、eBPFは、システム性能を調べる用途以外にXDP(eXpress Data Path)と呼ばれるプ
hackaday.com 昨年9月に「Rustこそがシステムプログラミングの未来(で、C言語はもはやアセンブリ相当)なら、Rustで書かれたドライバのコードをLinuxカーネルは受け入れるべきなのか?」という話を書いているが、その続きというか、今年こそ Linux カーネルに Rust が入る年になるかという話で、実際 LKML でも議論が行われている。 thenewstack.io 面白いのは、少し前に行われた Open Source Summit North America における VMWare の最高オープンソース責任者 Dirk Hohndel とリーナス・トーバルズとの対談(昨年この組み合わせで、「私はもうプログラマーではない」とリーナスが語ったことがあったっけ)で Rust について触れているところ。 Hohndel が「今じゃ新しいプロジェクトはどれも Go やら Rust
DirectX is coming to the Windows Subsystem for Linux At //build 2020 we announced that GPU hardware acceleration is coming to the Windows Subsystem for Linux 2 (WSL 2). What is WSL? WSL is an environment in which users can run their Linux applications from the comfort of their Windows PC. If you are a developer working on containerized workload that will be deployed in the cloud inside of Linux co
そろそろ「May 2020 Update」こと、Windows 10 Ver.2004(以下コード名で20H1)が最終版になる。とりあえず、完成したよ的なアナウンスがあった。 20H1における最大の変更点は、Linuxカーネルを使うWSL2(Windows Subsystem for Linux 2)だ。そこで今回は、WSL1とWSL2を比較してみることにした。WSL2ではLinuxカーネルが仮想HDD上でネイティブのファイルシステムを動作させる。このため、NTFSの上でLinuxのファイルシステムをエミュレートしていたWSL1のVolFs(あるいはlxfx)に比較してファイル処理などが高速化するという。 その一方で、WSL2では仮想マシン環境でLinuxカーネルを起動させるためオーバーヘッドがある。また、WSL2からNTFS側をアクセスするには、9Pと呼ばれるネットワークプロトコルが用い
Almost all our computers are made of several processing cores. Thus it can be efficient to “parallelize” expensive processing in a multicore manner. That is, instead of using a single core to do all of the work, you divide the work among multiple cores. A standard way to approach this problem is to create threads. A C++ thread object executes some functions, possibly on a thread created by the ope
Raspberry Pi Advent Calendar 2019の11日目の記事です。前日はtera1707さんのRaspberryPi3にI2Cサーマルカメラ(サーモグラフィ)をつなげて温度を画像化するでした。興味深いのでいつかやってみたいと思います。 さて。あるプロジェクトで、Raspberry Pi(以下ラズパイ)から複数台のUSBカメラで静止画を撮影する必要がありました。そのときにプログラムからカメラを指定する方法でつまづきましたので解決方法を記しておきます。 環境 Raspberry Pi 3 モデルB ロジクール C270 HD WEBCAM(×2台) 2台のUSBカメラはラズパイに4ヵ所あるUSBのいずれかに刺さっている状態です。まずカメラがOSに認識されているかを調べてみましょう。
この記事はLinux Advent Calendar 2019の1日目の記事です。 はじめに 環境 おことわり uname(1) uname(1)が出力する内容 strace(1) gdb(1) bpftrace systemtap Kernel Hack Livepatch おまけ RHEL 8.1 CentOS 8 まとめ はじめに 本記事ではLinuxサーバのホスト名、Linuxカーネルのバージョン、cpuアーキテクチャなどのシステム情報を表示するuname(1)を利用してLinux環境でのデバッグとカーネルハックについて説明していきます。本記事ではコマンドやツールの使い方の説明ではなくて、それらを使ってどのようにデバッグするのかというところを説明します。 環境 ディストリビューションにはFedora 31(x86_64)を利用します。動作環境はQEMUやlibvirt、Oracle
こんな感じになります。 Surface GoにUbuntuいれてみた。タッチパネルとかキーボードカバーとか普通にそのまま使える。 あまりに何事も無かったかのように動くのでちょっとびっくりしたんだけど、こういうのは対応していて当たり前な感じなのかな。ドライバの中身とか知らないからどういう事なのかあまり想像がつかない pic.twitter.com/IpBkgG4Mwy — s2terminal /suzuki.sh (@suzukiterminal) September 18, 2019 環境 Surface Go 128 GB / 8 GB RAM / WiFi モデル Windows 10 Home 1903 Ubuntu 18.04.3 LTS そのほか細かいものとして、インストール用メディアにUSBメモリが必要になります。 また、最初は無線LANに繋がらないため有線LAN接続用USB
テスト用ファイル ちょうど手元にあった PPPoE の pcap ファイルから CHAP の部分を抜粋したもの PPPoE のユーザ名 (hogehoge@one.ocn.ne.jp) をマスクする目的で書き換えてみる。 hogehoge の部分を xxxxxxxx のようにどうでもいい文字列で埋める。 編集したいファイルが大きい場合、Vim を使う方法ではメモリ消費が激しいので避ける。 dd でバイナリ編集 編集する場所を確認するため、一度 hexdump で中身を調べる $ hexdump -C pppoe.cap 00000000 0a 0d 0d 0a 34 00 00 00 4d 3c 2b 1a 01 00 00 00 |....4...M<+.....| 00000010 ff ff ff ff ff ff ff ff 04 00 0e 00 45 64 69 74 |...
たとえば、かつてiptablesで設定していたIPv4に関連するパケットフィルタリング設定は、nftablesにおいては「ip」というアドレスファミリに紐付けたテーブルを作成することで設定できる。同様に、ip6tablesやarptables、ebtablesで設定していたものはそれぞれ「ip6」や「arp」、「bridge」というアドレスファミリに紐付けたテーブルで設定する。 「inet」「および「netdev」アドレスファミリはnftablesで新たに導入されたもので、まず「inet」はIPv4およびIPv6の両方を対象にした設定を行えるアドレスファミリだ。従来IPv4とIPv6の両方にまたがったフィルタリングルールを設定したい場合はiptablesとip6tablesの両方で同じようなルールを追加する必要があったが、nftablesではinetアドレスファミリで指定することで単一の設
Mac PCでUbuntuやWindowsなど、OS X以外OSを起動するための必需品と言えばrEFInd。 rEFIndを用いれば、起動時にどのOSを立ち上げるかを選択できるようになります。 今回はこのブートローダーrEFIndをMacに導入する手順について説明していきます。(筆者は2020年11月現在、Mac OS10.15.7, rEFInd 0.12.0, Macbook Pro 16″ 2019の環境にて導入確認を行っております。) すでに導入済みの方は、rEFIndのカスタマイズもぜひ。 MYROBOTICS | rEFIndのテーマをカスタマイズする方法! 2020/11/23追記: T2 セキュリティチップ搭載Mac製品でのrEFInd導入手順について、通りすがり様より情報を提供いただき、手順をアップデート致しました。ありがとうございます。 ブートローダーとはブートローダー
どうも、前回の記事が思っていたよりも反響があり、Blogを書くモチベーションが高まり、また記事を書くことにします。 ↑とか書いたんですが、このへんまで書いて50日くらい記事を書くのを放置していたので、ちゃっちゃと書き上げることにします。 今回はx86なCPUに存在するControl Registerのうち、CR0に存在するCache Disableフラグを操作するカーネルモジュールをLinux、FreeBSDのそれぞれ向けに作ったのでそれについて記述します。 それでは、続きからどうぞ。 はじめに、作成したカーネルモジュールのリポジトリへのリンクを掲載します。 Linux版のカーネルモジュール(procfsとして実装) cr0cd FreeBSD版のカーネルモジュール(キャラクタデバイスとして実装)cr0cd_fbsd そもそもこれはなに 一言で言うと、メモリのキャッシュ(L1, L2, L
AMDのZen 2アーキテクチャの新製品が発売されて沸き立っているが悲しいお知らせがある。最近のGNU/Linuxディストロはブートしない。例えばUbuntu 19.04はブートしない。 理由は、ハードウェア乱数を返す命令、RDRANDに不具合があり、常に-1を返すのだという。このため、rdrandを直接使っているsystemdが失敗し、結果としてブートできなくなる。 AMDによればこの問題はBIOSアップデートで修正可能であるという。しかしこれはとても怪しい陰謀論を考えたくなる。なぜRDRANDが常に-1を返すような不具合が未然に発覚せずに製品リリースまでこぎつけてしまったのか。なぜファームウェアのアップデートで修正可能なのか。まさかバックドアなのではないか。 陰謀論はともかくとして、もう一つの問題は、なぜsystemdはRDRANDを直接使っているのかということだ。Linuxカーネルの
ValveのゲームストアSteamは2019年10月以降Linuxを正式にサポートしなくなることが発表されました。 Twitter上で公開された情報によると、将来のバージョンのLinuxにおいてSteamの正式サポートが終了します。 Ubuntuを使用している人は、OSの次回のアップデートである19.10までに別のOSに移動する必要があります。 このアップデートは2019年10月17日に配信される予定です。 Ubuntu 19.10 and future releases will not be officially supported by Steam or recommended to our users. We will evaluate ways to minimize breakage for existing users, but will also switch our fo
たまには「〜話」メソッドでブログを書く。あと6月は二回ブログを書けたのでめでたい。 さて、タイトルのようなことをしています。 前提としてeBPFという、カーネル内で動く特定の目的のプログラムを比較的高速・安全に書くための技術があるのですが、そのプログラムはバイトコードベースなので、eBPFを扱うプログラムをもう少し人間的な形式で書きたくなります。せめてC言語とか。そのためのコンパイラがlibbccです。 github.com 大きくはkprobe、uprobe、kernel tracepointといったカーネルイベントのトレースをしたり、XDPというネットワーク周りのトレースをしたり挙動を変更する処理を書くことができたりします。 以下の記事が詳しいと思います。 mmi.hatenablog.com qiita.com 知人の id:mrtc0 さんという人がeBPF関係の中でもUSDTとい
インストールされているオペレーティング システムを問題の原因として排除する場合には、USBドライブでオペレーティング システムを使用することができます。この文書では、Ubuntu Linuxを使用してこれを実行する方法を説明します。 目次: Ubuntu to Goとは? ダウンロードと準備 USBドライブからUbuntuを起動して使用する その他の情報 Ubuntu to Goとは? Ubuntu Linuxは、無償で利用できるオペレーティング システムです。無償でダウンロードすることができ、USBドライブから実行できます。これは、エラーが発生した場合にシステムをテストし、インストールされているオペレーティング システムを除外したい場合に役立ちます。 トップに戻る ダウンロードとUSBドライブの準備 Ubuntuを使用するには、USBドライブを準備し、Ubuntu Setup ISOを取
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く