サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
valinux.hatenablog.com
はじめに 自宅PC編 会社サーバ編 感想等 執筆者:佐藤友昭 ※ 「ディスアグリゲーテッドコンピューティングとは何か?」連載記事一覧はこちら はじめに 作業ログや検討メモ、参照した定型論文や書籍、ネット上の記事、視聴した講演やウェビナーのメモ等、日常を記録する情報は日々増えていく。これらの情報はできれば後に役立てたいと思うが、筆者の場合、なかなか上手くいかない。自分の外部記憶を紐解いてみると、記録したことすら忘れてしまっている項目が大半である。本稿では、ローカルLLMとRAGを用いて自分の外部記憶にいろいろと質問できるようにする方法を入門的に紹介する。決してベストプラクティス的な内容ではない。 自宅PC編 まずは、普段自宅で使用しているLinux PCを実験台として使えそうか試してみてから会社のサーバに適用してみることにする。 第一の要件は、ローカル環境で動作することである。情報の性質によ
「Linuxカーネル2.6解読室」(以降、旧版)出版後、Linuxには多くの機能が追加され、エンタープライズ領域をはじめとする様々な場所で使われるようになりました。 それに伴いコードが肥大かつ複雑化し、多くのエンジニアにとって解読不能なブラックボックスとなっています。 世界中のトップエンジニア達の傑作であるLinuxカーネルにメスを入れ、ブラックボックスをこじ開けて、時に好奇心の赴くままにカーネルの世界を解読する「新Linuxカーネル解読室」プロジェクト。 本稿では、旧版1章で解説されていた「プロセススケジューリング」の内、プロセスディスパッチャ(タスクの切り替え処理)について、カーネルv6.8/x86_64のコードをベースに解説します。 1. 前提知識 1.1 スタック 1.1.1 概要 1.1.2 PUSH/POP命令 1.1.3 CALL/RET命令 1.2 task_struct構
はじめに 今回使うRISC-Vの機能 SCRATCHレジスタ カーネルとアプリケーションの分離 ファイルの分離 物理メモリの分離 セクション配置 カーネル用セクション アプリケーション用セクション ショートデータ用セクション 初期値無しデータセクション(bssセクション)の初期化 例外スタックセクション カーネルスタックとユーザスタックの切り替え MSCRATCHレジスタの初期化 Environment Call例外 割り込み発生 メモリ保護設定 不正例外 例外ハンドラ 動かしてみる 不正メモリアクセス 最後に 執筆者 : 高橋 浩和 ※ 「RISC-V OSを作ろう」連載記事一覧はこちら ※ 「RISC-V OS」のコードはgithubにて公開しています。 はじめに 「RISC-V OSを作ろう (7)」にて、アプリケーションをユーザモードで実行できるようになりましたが、メモリ保護が実装
「Linuxカーネル2.6解読室」(以降、旧版)出版後、Linuxには多くの機能が追加され、エンタープライズ領域をはじめとする様々な場所で使われるようになりました。 それに伴いコードが肥大かつ複雑化し、多くのエンジニアにとって解読不能なブラックボックスとなっています。 世界中のトップエンジニア達の傑作であるLinuxカーネルにメスを入れ、ブラックボックスをこじ開けて、時に好奇心の赴くままにカーネルの世界を解読する「新Linuxカーネル解読室」プロジェクト。 本稿では、旧版第21章で解説されていたソケットインターフェースについて、カーネルv6.8のコードをベースに主にデータ構造を中心に解説します。 はじめに ソケットの実体と概要 ソケット操作関数の実装 ファイル操作関数によるソケット操作の実装 次回予告: ソケット生成編 執筆者 : 須田 哲志、稲葉 貴昭 ※ 「新Linuxカーネル解読室」
「Linuxカーネル2.6解読室」(以降、旧版)出版後、Linuxには多くの機能が追加され、エンタープライズ領域をはじめとする様々な場所で使われるようになりました。 それに伴いコードが肥大かつ複雑化し、多くのエンジニアにとって解読不能なブラックボックスとなっています。 世界中のトップエンジニア達の傑作であるLinuxカーネルにメスを入れ、ブラックボックスをこじ開けて、時に好奇心の赴くままにカーネルの世界を解読する「新Linuxカーネル解読室」プロジェクト。 本稿では、旧版第3章で解説されていたソフト割り込み処理について、カーネルv6.8/arm64のコードをベースに解説します。 はじめに 割り込み禁止区間と応答性について perfにおけるNMI割り込みから見る応答性 ソフト割り込み処理 ソフト割り込み処理の考え方 ソフト割り込み実行までの流れ ソフト割り込み要求(RCU_SOFTIRQの場
カーネルv6.8のコードをベースに、プロトコルごとに異なる処理をソケットがどのように抽象化しているのか、またソケットがなぜファイルとして操作できるのかについて、データ構造を中心に解説します。
Linuxカーネルコード解析プロジェクト立ち上げ Linuxカーネル成長の歴史 カーネルの大きさ バージョン番号 SCM導入 カーネル機能の変遷 執筆者 : 高橋 浩和 ※ 「新Linuxカーネル解読室」連載記事一覧はこちら Linuxカーネルコード解析プロジェクト立ち上げ 弊社内にて若手技術者が中心となり、最新のLinuxカーネルコード全体を読み解くプロジェクトが進行中です。 解析したコードのうち興味を惹かれたもの、重要そうなものを中心にブログ記事にまとめていく予定です。 詳解LinuxカーネルやLinuxカーネル2.6解読室を執筆していたころよりLinuxカーネルは大きく膨れ上がっています。 どこまで辿り着けるかは分かりませんが、気長にお待ちください。 対象Linuxカーネルのバージョンは6.8 ブログ執筆中に興味深い機能が取り込まれたら、より新しいバージョンのカーネルについて解説する
はじめに 環境の用意 今回利用するRISC-Vアーキテクチャ Environment Call例外 ー システムコール発行 注意 PMP (physical-memory protection) ー 物理メモリ保護 PMP仕様 RISC-V OS実装方針 システムコール実装 システムコールライブラリ関数 システムコール例外エントリ その他の例外の扱い 簡易メモリ保護 タスクの起動 動かしてみよう 最後に 執筆者 : 高橋 浩和 ※ 「RISC-V OSを作ろう」連載記事一覧はこちら はじめに アプリケーションのコードをユーザモードで、OSコードをマシンモードで動作させることにします。アプリケーションからはI/Oコントローラのレジスタを直接制御できないように簡易的なメモリ保護設定を行なうこととします。 環境の用意 Ubuntu 22.04LTSまたは24.04LTS環境を用意してください。U
1. はじめに 2. 実行環境 3. Isaac Gymで深層強化学習 3.1 実行方法について 3.2 実行時の引数について 3.3 Isaac Gymの推論とチェックポイント 3.4 学習パラメータの設定方法 4. 最後に ex. Dockerでの環境構築 執筆者:野口 裕貴 監修者:稲葉 貴昭・高橋 浩和 1. はじめに 前回の環境構築編では、深層強化学習とIsaac Gymの解説を行い、Isaac Gymの環境構築を行いました。 本稿では、Isaac Gym入門の活用編ということでIsaac Gymでの学習の実行方法について必要な知識等を解説していきます。 2. 実行環境 前回の環境構築編と同じ環境で実施していきます。 Ubuntu 20.04 Conda 23.7.4 Python3.7(conda) GeForce RTX 3060 Laptop (VRAM 6GB) NVID
SmartNIC で遊んでみる 選定 インストール カードの認識 ファームウェア更新 接続 RDMA qperf toy program まとめ 執筆者 : 岩本 俊弘 SmartNIC で遊んでみる RDMA やその他の機能のついている NIC は新品で買うとわりと高価であるが、中古だと個人でも手の届きそうな価格で手に入る。archlinux の wiki にもそんなことが書いてある。 今回そういった NIC を2枚購入 (会社で) して、ちょっと遊んでみることにした。 スイッチも中古だと同様に手頃な値段で手に入るようだが、あまり面倒事を増やしたくなかったので今回は直結で。 選定 Mellanox 社のものが流通数も多く情報も充実しているようなのでそれから選んだ。 Linux には mlx4 と mlx5 という2つのドライバがあって、前者が ConnectX-2 と ConnectX-
はじめに Wasmの特徴 仮想マシン実行環境 スタック 関数 グローバル変数 メモリ テーブル 命令セット データ型 数値演算 ベクトル演算 変数、メモリ、テーブルアクセス 制御フロー ランタイムとのインタフェース バイナリフォーマット タイプ インポート 関数 テーブル メモリ グローバル エクスポート スタート エレメント データ 終わりに 執筆者 : 小田 逸郎 はじめに WebAssembly(以下、Wasm)というものが世間で話題となっているようです。 元々、Webブラウザで実行されるバイトコードであるという程度の認識で、Java みたいなものか(?)くらいの感想しかなく、あまり関心はなかったのでした。 しかしながら、最近、Kubernetesでコンテナの代わりにWasmアプリケーション を扱えるような記述を見かけるに至り、「は?(なんじゃそりゃ)」と、 にわかに関心が出てきたの
1. 静的コード解析 2. Infer 3. 調査環境 4. Inferのビルド 5. Inferで解析できるようにLinuxカーネルソースコードに少し修正を加える 6. LinuxカーネルソースコードをInferで検証 7. 解析結果に対する精査の一例 7.1. 真のバグの例 7.2. フォールスポジティブの例 7.3. 真のバグか判断に困るものの例 8. 結論とこれから 執筆者 : 岡部 究 1. 静的コード解析 普段の開発で品質向上させるためにどのような手法を採用されているでしょうか。おそらくユニットテストや結合テストを代表するテストを使っているのではないでしょうか。 このテスト手法は現実的ですがざっと挙げるだけでも以下の課題があります: 入力と出力をテストケースと呼ばれる例として与えるので全ての場合を網羅することは不可能 テストの網羅率を上げるにはユニットテストのような小さい単位で
はじめに Kubernetes の validation の仕組み Validating Admission Policy webhook が不要になったことによるメリット webhook が不要になったことによるデメリット CEL (Common Expression Language) CEL の特徴 CEL による validation ルール設定 CEL では設定できない (と思われる) ルール 実践してみる (Validation Admission Policy による validationルール設定) 事前準備 ルール設定の基本 メッセージ出力設定 (messageとmessageExpression) について 複数のルールを設定する場合 マクロを用いたルール定義 外部リソースからの値参照 総括/感想 執筆者 : 浜島 大介 はじめに 今年4月に行われた KubeCon +
1. Qemuを生で起動 1.1 libvirtからの起動を模擬したい場合 マスターキー Qemuモニター 仮想ネットワーク 1.2 とにかくQemuが使いたい場合 2. Qemuモニター 2.1 HMP (readline) 2.2 QMP (control) 2.3 libvirt配下のQemuに対するモニターコマンド 3. リモートからのvirt-manager 3.1 リモートでvirt-managerを動かす 3.2 リモートvirt-managerを使って、音声を聞く 4. ディスクイメージ操作 4.1 guestfish 4.2 LIO/tcmu-runner 5. その他小ネタ 5.1 apparmorを解除する 5.2 画面解像度を指定する 執筆者 : 箕浦 真 前回記事が重かったので、今回は小ネタを集めてみた。 1. Qemuを生で起動 大抵の場合、Qemuを直接起動す
概要 SecurityCon Securing Access to Kubernetes Infrastructure Day in the Life Detecting Threat in GitHub with Falco Pwning the CI Lightning Talk Securing Envoy: Catching Vulnerabilities With Continuous Fuzz Testing The CNCF Cloud Native Glossary: Trusted. Simple. Community-driven Keynote Breakouts 73,000 Pods a Day, Lessons From Misadventures In Multi-Tenant Who Knew Dogfood Could Taste This Good Ef
1. はじめに 2. 調査対象の環境 3. ユーザ空間ドライバとカーネル空間ドライバ 4. PCIデバイスの復習 5. PCI コンフィグレーション空間からの読み出し 6. PCI I/O空間の読み書き 7. PCI メモリ空間の読み書き 8. 割り込みの取り扱い 9. 今回取り上げなかったこと 10. まとめ 執筆者 : 岡部 究 1. はじめに DPDKを触っていると気になることがありませんか。 「カーネルのEthernetドライバの代わりにユーザ空間でEthernetドライバを作っている、とあるが実際のPCIデバイスにどうやってユーザ空間からアクセスしているのだろうか?」 本記事ではDPDKのソースコードを読み解くことで、上記の疑問を(部分的ながら)解決します。 2. 調査対象の環境 Debian GNU/Linux 11.6 DPDK 22.11.0 3. ユーザ空間ドライバとカー
1. 細々とした予備知識 1.1 Qemuのデバイスエミュレーション 1.2 QemuのCPUエミュレーション 1.3 Qemuのスレッド 2. 追加のI/OスレッドとAioContext 2.1 追加のI/Oスレッド 2.2 AioContext 2.3 Big Qemu Lock 3. AioContextの各種イベント処理 3.1 AioHandler 3.2 event_notifier 3.3 タイマー、Bottom half 3.5 スレッドプール 執筆者 : 箕浦 真 こういう 仕事をしていると、ときどきQemuの仕組みや内部動作をお客様に説明する必要があることがあるが、そういう時に「Qemuの〜についてはここを見てね」と言えるような文書があるといいなぁと思って自分で作ってみることにした。 1. 細々とした予備知識 1.1 Qemuのデバイスエミュレーション Qemuはコンピ
はじめに 環境の準備 ブートプログラム 例外レベル 例外動作の概要 TrustZone ベクタテーブルの設定 AArch64ステートの設定 スタックポインタ設定 例外レベルの遷移 EL1での動作 メモリ配置 コンパイル QEMU上で起動 GDBで制御 最後に 執筆者 : 原田 秀一 はじめに 現在ArmアーキテクチャのCPUは採用も多く情報も溢れていますが、改めてARMv8-Aアーキテクチャでの64bit環境(AArch64)でのブートプログラム作成についてまとめます。 ブート処理の内容は過去記事 RISC-V OSを作ろう (1) ~ブート処理 - VA Linux エンジニアブログ と同様にOSを動かす土台とできるようにします。 環境の準備 ツールチェーンはArmが提供しているものを使用しました。 https://developer.arm.com/downloads/-/arm-gn
1. はじめに 2. 使用環境 3. コンパイル 4. opensnoopとは 5. opensnoop.bpf.cの解説 5.1 mapの宣言 5.2 BPFプログラムのメイン処理 5.2.1 33-68行目 5.2.2 88-124行目 5.2.3 プログラムタイプとコンテキスト 5.3 opensnoop.bpf.cのコンパイル 6. opensnoop.cの解説 6.1 ヘッダファイルのインクルード 6.2 BPFアプリケーションのメイン処理 6.3 231-232行目 6.4 opensnoop_bpf__open 6.4.1 bpf_object__init_maps 6.4.2 bpf_object_init_progs 6.5 241-245行目 6.6 opensnoop_bpf__load 6.6.1 bpf_object__create_maps 6.6.2 bpf_
1. はじめに 2. BPFとは 3. BPFで実現できること 4. BPFの仕組み 4.1 BPFプログラムを開発しClang/LLVMでコンパイルしてバイトコードにする 4.2 bpftoolでバイトコードからスケルトンヘッダを作成し、BPFアプリケーションで読み込む 4.3 BPFプログラムの結果を保存するmapを作成 4.4 BPFプログラムをカーネルにロード 4.5 イベントが発生したらBPFプログラムが実行され結果をmapに保存 5. BCCとは 5.1 BCC-Tools 5.2 BCCを使った開発 6. CO-RE 6.1 BPFプログラムをCO-RE対応する場合 6.2 CO-REの仕組み 7. おわりに 執筆者:稲葉貴昭 1. はじめに 本記事は近年注目されているeBPFについて、概論編と実装編に分け解説を行います。 概論編となる今回では、以下のことを解説します。 (1
1. はじめに 2. 準備 インストール 動作確認 3. ライブラリ libibverbs librdmacm 4. プログラミング例 基本編 簡略編 上級編 5. おわりに 執筆者 : 小田 逸郎 1. はじめに 筆者が最初にInfiniBandやRDMAに触れたのは、もう20年近く昔の話になります。 それから、ブレークすることもなく、さりとて死に絶えることもなく、ひっそりと 生き続けてきました。最近また、ちょくちょく耳にするようになった気がします。 InfiniBand大手のMellanoxをNVIDIAが買収したというような話題もありました。 この20年程の間に、RDMAを使用する環境も手軽に用意できるようになりました。 なんと、普通のLinuxディストリビューションで普通に使えてしまいます。 とは言え、実際にRDMAで通信するプログラムを書こうとすると、まだ あまり情報がない気がし
はじめに OAuth 2.0 と OAuth 2.1 の違い 1. Authorization Code grant フローでは PKCE を標準で使用する 2. リダイレクトURIの検証は文字列の完全一致で行わなければならない 3. Implicit grant フローは仕様から除去される 4. Resource Owner Password Credentials grant フローは仕様から除去される 5. Bearer トークンをURIのクエリ文字列として渡す方法は仕様から除去される 6. パブリッククライアントでは、リフレッシュトークンを利用できる送信者または利用回数を制限する 何をしないといけないか 執筆者 : 山下雅喜 はじめに OAuth 2.0 が RFC 6749 (The OAuth 2.0 Authorization Framework) としてリリースされてから1
1. vmlinuxのELFセクション 2. .parainstructionsセクション 2.1. PV_SITEマクロ 2.2.paravirt_altマクロ 3. .altinstructions、.altinstr_replacementセクション 4. apply_paravirt()、apply_alternative() 5. 休憩 執筆者 : 箕浦 真 1. vmlinuxのELFセクション 前回記事では、vmlinuxのinitセグメントに含まれる、.percpu、.init.text、.init.dataなどのセグメントについて調べた。今回はその続きで、そのinitセグメントに含まれている.parainstructions、.altinstructions、.altinstr_replacementの各セクションを取り上げる。これらは、初期化時にLinuxコード自体を書
1. はじめに 2. Busy Poll Socket 2.1 概要 2.2 使い方 2.3 内部実装 3. kthread NAPI polling 3.1 概要 3.2 使い方 3.3 内部実装 4. まとめ 執筆者 : 西村 大助 1. はじめに 前編では、NAPI とそれに関連するソフトウェア割り込みの仕組みについて解説しました。 本稿では、前回の最後に触れた通り、Linux kernel に組み込まれている、NIC をソフトウェア割り込み以外で polling するための仕組みである、Busy Poll Socket と kthread NAPI polling について解説します。 2. Busy Poll Socket 2.1 概要 使用する socket に setsockopt(2) システムコールを使い、@optname=SO_BUSY_POLL で時間(μ秒単位。以降
1. vmlinuxのELFセクション 2. initセグメント 2.1. percpuセグメント 2.2. .init.text、.init.data、.init.rodataセクション 2.3. .exit.text、.exit.dataセクション 2.4. .x86_cpu_dev.initセクション 2.5 .iommu_tableセクション 2.6 .apicdriversセクション 3. 休憩 執筆者 : 箕浦 真 1. vmlinuxのELFセクション 前回記事は、もう1年半も前に書いて、それなりに多くの方に読んでいただけたようだ。今回記事は、コード例もなく、単にLinuxという巨象の枝葉末節をああでもないこうでもないと闇雲に撫で回すだけの記事だ。 ELFセクションは、リンク時に、同名のセクションのコードやデータを、すべてのオブジェクトファイルからかき集める、という効果がある
次のページ
このページを最初にブックマークしてみませんか?
『VA Linux エンジニアブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く