UEFIのSecure boot + kdump・kexecの動作確認 uefiのSecure bootが有効な環境でkdump・kexecは動作するのか?ってところの確認です。 Secure bootとは?というところはこちらのドキュメントを参照してください。 access.redhat.com テスト環境 テスト環境にはlibvirtを使います。ホストはFedora 30 x86_64、ゲストもFedora 30 x86_64です。 テスト環境セットアップ まずはSecure bootを有効にした環境を作ります。まずは普通にlibvirtを使ってOSをインストールします。 このときに、UEFIを使うように設定します。そのため、edk2-ovmfパッケージをインストールしておく必要があります。 インストール段階だとセキュアブート用のファームウェアは指定できないのでとりあえずはセキュアブー
Linux Kernel Driver Database and AutoKernConf Linux Kernel Driver Database web LKDDb format statistics sources AutoKernConf sources About LKDDb LKDDb is an attempt to build a comprensive database of hardware and protocols know by Linux kernels. The driver database includes numeric identifiers of hardware, the kernel configuration menu needed to build the driver and the driver filename. The databas
Home Programming Languages “Rust is the future of systems programming, C is the new Assembly”:...
はじめに mmap(2)とはmemory mappingを新規に作成するsystem callである。 #include <sys/mman.h> void *mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off); mmap(2)は下図(Reference[1]のch.49より引用)のようにmapping typeとprivate/sharedによって、大きく4つに区分できる。 Reference[1] ch.49 Private/Sharedはflags引数にMAP_PRIVATE, MAP_SHAREDをそれぞれ付加する。Fileの場合は、flagに付加すべきものはないが、第5引数にfile descriptorを与える。Anonymousの場合は、MAP_ANONYMOUSを付け加え、fd=N
tl;dr This post will describe how I exploited CVE-2019-14378, which is a pointer miscalculation in network backend of QEMU. The bug is triggered when large IPv4 fragmented packets are reassembled for processing. It was found by code auditing. Vulnerability DetailsThere are two parts to networking within QEMU: The virtual network device that is provided to the guest (e.g. a PCI network card). The n
Raspberry Pi(以下rpi)のカーネルではなくて、mainline等のカーネルを使いたい場合のメモです。 TL;DR 基本的に次のwebサイトを見れば事足ります。 elinux.org 概要 rpi向けのカーネルは以下なのですが、mainlineのカーネルを使いたい等の理由がある場合の環境構築方法のメモです。 github.com uart、wifi、hdmiを使えるところまでが対象です。archはaarch64を対象とします。使っているのはRaspberry Pi 3 B+です。 必要なもの これらが必要です。 カーネルのソースコード u-bootのソースコード rpiで使用するブートに必要なバイナリ linux用のfirmwareのバイナリ 最初の2つはそりゃそうだなって感じですね。次のrpiで〜というところはstart.elfやfixup.datといったブートに必要なバイナ
ちょっとCI環境でも作るか〜ということで。 CI だいたいこんな構成です。 構成 いまのところすべてローカル環境で閉じてます。うちはマンションタイプのBフレッツでそんなに速いわけでもないからローカルで閉じてるほうがテスト時間が短くて済むというとこです。AWSとかVPSを使っても良いんですけどね。 とりあえず動くようにはなったので、ブラッシュアップするところはたくさんあります😨 CIのシステムで使用するソフトウェア 次の2つを使います。 Buildbot LAVA Web server Buildbotは有名ですよね。LAVAはkernelci.orgで使われています。実ボードとかqemuなどの環境でLinuxをテストするのに向いているツールです。 インストール buildbot pythonのvirtualenvを使って専用のpython環境作ってインストールして使ってます。 LAVA
Rubyコミッター・笹田耕一に世代別インクリメンタルGCを発想したプロセスを聞いてみた Rubyのフルタイムコミッターである笹田耕一さんに、Rubyの処理性能を向上させるいくつかのブレイクスルーをどのように解決し、どのような困難があったのかを聞きました。 直感的な文法や生産性の高さから、世界中の人々に愛されるオブジェクト指向スクリプト言語Ruby。その黎明期から現在に至るまで、大きな変化を遂げてきた要素があります。“処理速度”です。数々の最適化が行われた結果、Rubyの処理性能はかつてとは比べものにならないほど向上しました。 その改善を支えたのは、世界中のRubyコミッターたち。中でも、性能向上において多くの成果を残してきたのが、クックパッド株式会社でフルタイムRubyコミッターとして働く笹田耕一(ささだ・こういち/ @koichisasada )さんです。本稿では、彼がいかなる設計方針に
はじめに 名前空間 名前空間の利点 名前空間の種類 Mount名前空間 IPC名前空間 UTS名前空間 Net名前空間 PID名前空間 User名前空間 名前空間の管理 プロセスと名前空間 名前空間のエクスポート nsfs 名前空間共通データ NSProxy構造体 NSProxyと名前空間 参照カウンタ NSProxyと名前空間の関連 名前空間へのアクセス デフォルトの名前空間 名前空間の共有・分離・移動 名前空間の共有と複製 fork(2) clone(2) fork(2)・clone(2)時の処理 unshare(2) 名前空間の分離処理 名前空間の移動 setns(2) 名前空間の移動処理 Mount名前空間 Mount名前空間の実装 Mount名前空間の初期化 Mount名前空間の分離 IPC名前空間 IPC名前空間の実装 IPC名前空間の初期化 UTS名前空間 UTS名前空間の実
はじめに スラブアロケータ以外の動的メモリ確保 vmalloc関数 vmalloc関数で使用するデータ構造 vmallocの初期化 vmallocでのメモリ確保 vfree関数でのメモリ解放 その他の非連続メモリ領域からメモリを確保する関数 vmap関数 ioremap関数 /proc/vmallocinfoによるメモリ確保状況の確認 はじめに 前回のLinuxカーネル4.1のSLUBアローケータ(ドラフト) - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモと同じくドラフト版公開です。こちらはLinuxカーネル4.1のメモリレイアウト(ドラフト) - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモで説明しなかったvmalloc()の説明です。 カーネルのバージョンは4.1系です。 文書自体も完成版ではないし、markdownから手作業ではてなblogにコピペして修正してるので章立
はじめに ユーザプロセス空間とカーネル空間 x86_64のメモリレイアウト ダイレクトマップ(ストレートマップ)領域 vmalloc/ioremap領域 仮想メモリマップ %esp fixup stack カーネルテキスト領域 モジュールマッピング領域 vsyscall 固定マップ領域 はじめに 前回のLinuxカーネル4.1のSLUBアローケータ(ドラフト) - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモと同じくドラフト版公開です。 カーネルのバージョンは4.1系です。 文書自体も完成版ではないし、markdownから手作業ではてなblogにコピペして修正してるので章立てとか変になってるところとかあるかもしれませんが気にしないでください。 一部は文書修正してます。 ユーザプロセス空間とカーネル空間 Linux x86_64では48bit(256TiB)のアドレス空間を使用できます
はじめに スラブアローケータ Linuxのスラブアローケータ slabアローケータ slobアローケータ slubアローケータ スラブオブジェクトの管理 使用中リスト スラブのマージ機能 Chache Coloring スラブの不活性化 frozen状態 スラブキャッシュの情報 slubアローケータのデータ構造 データの関連 slubアローケータで使用するデータの関連 スラブのライフサイクル スラブアローケータの機能 スラブキャッシュの作成 スラブキャッシュ生成時に設定するフラグ 空きオブジェクトの管理 空きスラブオブジェクトの設定 スラブオブジェクトの確保 スラブオブジェクトの解放 kmem_cache_cpu構造体のデータクリア スラブの不活性化 スラブの削除 スラブキャッシュの削除 スラブキャッシュのセットアップ slubアローケータで使用するヘルパー関数 __cmpxchg_dou
何の話題か TrustZone OP-TEE TrustZoneはARMプロセッサが持つセキュリティ機能。 ざっくり言うと、システムを Secure World と Normal Worldに分離して、Normal WorldからSecure Worldへのアクセスを制限する。Normal WorldでLinux等の従来からあるOSやアプリケーションを動かし、Secure Worldでは専用のOSやアプリケーションを動かす。 Secure World用のOSは様々あるが、今回はOP-TEEというものを使ってみる。 手順 まえおき 環境の作り方はgitに書いてある。 ただし、英語。それに、言葉足らずだったりメンテナンスがされていなかったりする。 環境構築するために調べたことをメモしておく。 公式サイト ① OP-TEE ② OP-TEE × Raspberry Pi おおまなかな手順 OP-
20240530_IBMTechXchangeDojo_いまからでも遅くない_OpenShiftでアプリをHTTPSで公開してみる
10xプログラマー、それは「一流のプログラマーが普通のそれと比べて10倍の生産性をもつ」というソフトウェアエンジニアの世界における神話です。 「多くの人が必要とするものを創れるようになりたい」 そんな想いからこれまで、Gunosy、Mercari、LINEなどでエンジニアとして働いてきましたが、直近、今後進むべき道について見つめ直す機会があり、「良いエンジニアとは何なのか」について自問する時間がありました。 その過程で、Redisの作者Salvatore Sanfilippoによる「The mythical 10x progrmmer」と出会い、非常に為に内容が多かったため、本人に翻訳させて欲しいと申し出たところ、「Sure!」と快諾して頂いたため、僭越ながら共有させて頂きます。 Salvatore Sanfilippo(@antirez) - http://invece.org/ - h
本連載「OSS脆弱性ウォッチ」では、さまざまなオープンソースソフトウェア(OSS)の脆弱(ぜいじゃく)性に関する情報を取り上げ、解説しています。 今回から数回に分けて、セキュリティ技術の会の佐藤琳音が執筆します。具体的には、OSSのプロセッサエミュレータである「QEMU(キューエミュ)」の脆弱性を悪用したVM(仮想マシン)エスケープ攻撃に関する事例を紹介します。 脆弱性の概要 2016年、CrowdStrike シニアセキュリティリサーチャーのJason Geffner氏はQEMUの仮想フロッピードライブコントローラのコードに存在するバッファーオーバーフローの脆弱性を発見しました。この脆弱性が悪用された場合、攻撃者が仮想マシンから抜け出し、ホスト側のシステムに対してアクセスし、任意のコード実行が可能となる恐れがあると「CVE-201503456」で報告されています。 また2011年には、N
2. Copyright 2019 FUJITSU LIMITED 五島康文 Linuxの開発部門で、OSS(Kernelやその周辺)の機能開発を担当 • エンタープライズ向け機能を開発 • OSSのコミュニティに、新機能などのパッチを投稿し、upstreamのソース に機能をマージするまでがmission ⇒ビジネスとしてupstreamへのマージが必須 • 2016/7~2019/1 不揮発メモリ(NVDIMM)を担当 OSSの開発者を育てるのが個人的なライフワーク • 社内でOSSコミュニティへの参加を推進 • プライベートでも若手を支援 ⇒ OSS Gateに参加 Advent Calendar • 元はクリスマスまでの日めくりカレンダー • 技術者が技術記事をblogに書くのが年末の風物詩に • Fujitsu Advent Calendarを最初にQiitaに作
お手製のCPUの上で自分で作ったOSを動かすというのは、割と夢のある行為だと思っていて、今回それを一定のレベルですることができたので、簡単に内容についてメモをしておこうと思います。 曖昧な日本語を読むより、プログラムを読むほうが速いと思う人は、駄文を読まずにGitHubを見てください。 https://github.com/moratorium08/osmium/ 僕が書いたのはOSだけで、コアはATPが書きました。また、乗算命令の実装はdaiが書きました。 https://github.com/hitohira/yokyo 概要 RustでフルスクラッチでRISC-V(rv32im)で動作するOSの実装をしました。OSを実装するにあたり、ページングやカーネルとユーザーモードでの権限切り分け、割り込みなどの仕様を考える必要があり、これもRISC-VのPrivilegeの仕様書に従ったものに
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く