aimdevel’s blog

勉強したことを書きます

Linuxセキュリティ機能を盛り込んだラズパイのアップデート手順:解説編

対象の資材 各設定の説明 partitionの設定 u-boot用の設定 Linux kernelの設定 マウント設定 rauc用鍵の作成 アップデート設定 update-bundleの作成 妥協した点 終わりに 前回の記事で行ったラズパイのアップデートについて、内容を説明する。 aimdevel.hate…

Linuxセキュリティ機能を盛り込んだラズパイのアップデート手順

初めに 環境 作ったもの アップデートツール 概要図 パーティション構成 ブート~アップデート~再起動の流れ 使い方 動作確認 終わりに 初めに 前回の記事で作成したLinuxのセキュリティ機能を盛り込んだラズパイをアップデートできるようにしていく。 aimd…

Yoctoを使用してLinuxセキュリティ機能を組み合わせて動かしてみた

初めに 環境 作ったもの 概要図 パーティション構成 ブートの流れ 使い方 起動確認 各設定の説明 partitionの設定 u-boot用の設定 FIT imageの設定 initramfsの設定 dm-verityの設定 dm-cryptの設定 overlayfsの設定 ユーザ設定 その他 終わりに 初めに 今ま…

Linuxのセキュリティ機能を試したまとめ

Linuxのセキュリティ機能を自分で試した記事のまとめページ 機能を組み合わせて試した記事 セキュリティ機能を使用したLinuxをyoctoで作成 セキュリティ機能有効なLinuxのアップデート例 機能を組み合わせて試した記事 上から順番に作業して、最終的にinitra…

dm-cryptを使用してラズパイのストレージを暗号化

初めに 前回はdm-verityとoverlayfsを組み合わせて、read onlyなrootfsの一部を描きこみ可能領域に設定した。 aimdevel.hatenablog.com 書き込み可能領域は構築するシステムに応じて自由に設定できて、ユーザ固有の情報やログなども保存できる。 ただし、組…

dm-verityとOverlayFSを組み合わせてディレクトリの書き込み許可制御

初めに 前回はrootfsをdm-verityで検証してから起動するように設定した。 aimdevel.hatenablog.com ただし、そのままではrootfsがすべてread onlyになってしまうので、必要なディレクトリを書き込み可能にしたい。 そこで今回はOverlayFSを使用して書き込み…

initramfs + dm-verityでrootfsを検証する

初めに 前回はBuildrootでinitramfsを作成し起動する方法を試した。 aimdevel.hatenablog.com 今回は、本番用rootfsをinitramfs + dm-verityで検証することで改ざんを検知できるようにしていく。 dm-verityとは dm-verityとは、linux kernelに備えられたブロ…

Buildrootを活用して作成したrootfsをinitramfsとして利用する

初めに 手順 Buildroot動作確認 Buildrootでパッケージ追加 initramfsとして動かすための仕込み initramfsとして組み込み、起動 残件 Buildrootを触った感想 終わりに 初めに 前回の投稿でbusybox単体でinitramfsを動かすところまでは確認した。 aimdevel.ha…

LinuxをFITイメージ+initramfsで起動する on ラズパイ4B

前回はラズパイ実機でu-bootとFIT imageを使用してLinuxを起動した。 aimdevel.hatenablog.com 今回はそこから進んでFIT imageにinitramfsを含めて起動する。 initramfs起動後はパーティション2に存在するrootfsに切り替えてLinuxを起動するところまで実施す…

Linuxをu-bootから起動する on ラズパイ4B

初めに 作るもの 実施環境 手順 終わりに 参考資料 前回ラズパイでu-bootを動作させた。 aimdevel.hatenablog.com 今回はさらにu-bootからlinuxを起動する。 初めに u-bootまで起動しているのでラスパイ特有の手順はほぼない。 せっかくu-bootを使用するので…

ラズパイ4Bでu-bootを使用する

初めに 実施環境 手順 用意する資材一覧 u-bootを作成 sdカードを編集 起動する まとめ 参考情報 ラズパイ4Bでu-bootを動作させたので、手順をまとめる。 基本的には以下の記事のu-bootの部分をなぞっただけなので、詳しくはこちらを参照。 https://hechao.l…

Raspberry Pi PicoとZephyr OSを使用したI2C LCD1602の実験

概要 前回から引き続き、ラズパイ入門キット「SunFounder Da Vinci Kit for Raspberry Pi」に入っている機器をRaspberr Pi Pico + Zephyr OSで動かしてみた。 今回は、I2C LCD1602を試した。 環境 I2C LCD1602を使用する。 Raspberr Pi Picoとを以下のように…

Zephyr OSでRaspberry Pi Picoを使用して74HC595と7セグメントディスプレイを接続する方法

概要 前回から引き続き、ラズパイ入門キット「SunFounder Da Vinci Kit for Raspberry Pi」に入っている機器をRaspberr Pi Pico + Zephyr OSで動かしてみた。 今回は、Segment Displayを試した。 環境 74HC595と7セグメントディスプレイを使用する。 Raspber…

Raspberry Pi PicoのRGB LED実験 with Zephyr OS

概要 ラズパイ入門キット「SunFounder Da Vinci Kit for Raspberry Pi」に入っている機器をRaspberr Pi Pico + Zephyr OSで動かしてみた。 今回は、RGB LEDを試した。 環境 Raspberr Pi PicoとLEDを以下のように接続する。接続方法はSunFounderのチュートリ…

Raspberry Pi Pico + Zephyr OSでサーボモータを回す

概要 概要 作業手順 デバイスツリーを追加する。 ビルドする 基板に転送して動作を確認する。 ソースコード確認 デバイスツリー servo pwm_ch4b_default pwm サンプルコード 1. デバイスツリーから情報を取得 2. pwm構造体をバリデート 3. pwmのパルス幅を設…

Raspberry Pi PicoでZephyr OSを動かしてみた

概要 環境 作業手順 開発環境構築 アプリをビルド 実行 ソースコード確認 aliasでデバイスツリーのノード識別名を取得 gpioノードの構造体を取得 gpioの構造体をvalidate gpioピンを設定 gpioのon/offを切り替え まとめ 概要 Raspberry Pi Pico上でZephyr OS…

yoctoのレシピでkernel configを変更する方法

概要 実験環境 使用結果 1. KERNEL_FEATURESを設定する方法 2. 独自のcfgファイルを使用する方法 3. defconfigをレシピから渡す方法 比較 まとめ 参考情報 概要 yoctoでlinux kernelをビルドする際にconfigを変更する方法は複数あり、 どの方法を使えばよい…

GitHubのDependabot alertに対処する

前に書いたRustのコードをGitHubにおいていたら、脆弱性情報が通知されていたので、それに対応した。 別のところで同じ対応をするときに困らないように、行った作業をまとめておこうと思う。 対応したリポジトリは以下。 GitHub - aimdevel/part-mount: tool…

rust初心者がmoveではまった

rustでツールを作成する際にはまった箇所をメモしておく。 以下のドキュメントを参照しながら自分の理解をまとめる。 The Rust Programming Language 日本語版 - The Rust Programming Language 日本語版 何にはまったのか? 結論から言うと、値の所有権を理…

sdカードイメージのパーティションをマウントするツール作った

sdカードイメージファイルの特定のパーティションをマウントするツールを作成した。 作ろうと思った背景 ラズパイOSイメージなどのイメージファイル内のパーティションをマウントする方法は以下などがある。 losetupでパーティションをloopデバイスとしてみ…

vscodeのYocto変数hover機能作った

yoctoのレシピ作成に使用する変数のhover機能を、vscodeの拡張機能として作成した。 作ったものは以下。 GitHub - aimdevel/yocto-variable-hover: vscode extension that enables hover of yocto variables 背景・目的 yoctoのレシピを作成したり、設定を変…

TypeScript+SequelizeでSQLiteを使う

概要 vscodeの拡張機能でデータベースを使いたくなったため、TypeScriptからデータベースを使えるSequelizeを試してみた。 使用したデータベースはSQLiteで、以下のページを参考に作業した。 Getting Started | Sequelize インストール $ apt update $ apt i…

containerd+wasmを動かしてみた。

最近こんな記事を見つけたので、この機会にcontainerd+wasmを動かしてみた。 www.publickey1.jp 概要 以下のページの手順に従ってサンプルを実行を試す。 その後、rustのHello Worldを動かす。 GitHub - containerd/runwasi: Facilitates running Wasm / WAS…

yoctoのcve-checkを試してみる

前から存在だけ知っていたyoctoのcve-checkを実際に動かしてみる。 作業概要 yoctoのレイヤmeta-raspberrypiの最小構成でcve-checkを実施し、どのような結果が得られるか確認する。以下のページの「3.34 Checking for Vulnerabilities」 を参考に作業する。 …

vscode拡張機能としてhoverを実装する

概要 ベースとするソースコードの入手 importの追加 初期化処理の編集 hover用関数を実装 hover用関数をサーバに登録 Hoverレスポンスの構造 概要 vscode拡張機能にhoverを実装するために以下を行う。 今回はlanguage serverとして実装する。 * ベースとする…

bitbakeのオペレータ文法を調べる

yoctoのレシピを書く際に変数設定のオペレータの意味を正確に理解できていなかったため調べてまとめ、手元で動作確認を行った。 動作確認の方法は、local.confに変数を記述して、それがどのように反映されるかをbitbake-getvarで確認するという手順を使った…

wsl2でyoctoを使う

概要 ネイティブlinuxが推奨されるyoctoだが、windowsのwsl2上でも動作するのか試した。 今回はラズパイ用OSイメージのビルドが成功するところまで確認した。 目次 概要 目次 環境の準備 wsl2インストール wsl2追加設定 vscodeに拡張機能をインストール ビル…

vscode拡張機能のsemantic highlightを理解する

vscodeのhighlight拡張機能勉強の続きです。 今回はsemantic highlightの作り方をサンプルコードを読むことで理解します。 semantic highlightを使用すると、language serverからhighlightの設定をすることが可能になるので、単純な正規表現でのマッチング以…

syntax highlightのvscode拡張機能を作る

vscodeでソースコードなどを表示すると、キーワードなどに色がついて表示されます。 ただし、色が付くのはvscode側がそのプログラミング言語に対応している必要があり、例えば社内の独自言語などがあった場合には当然vscodeで表示しても全く色が付きません。…

Issue作成をトリガーにしてPull Requestを作成する

概要 ソースコードの特定の文字列を置き換えるような修正、例えばバージョン番号の変更など、を手動で行うのは手間もかかるし作業ミス発生の可能性もあると思います。 そこで、今回は以下が自動で行われるGithub Actionsのworkflowを作成しました。 Issueのd…