uchan note

プログラミングや電子工作の話題を書きます

Linux

GCC 11のビルドとldconfig

GCC 11 をソースコードからビルドする方法と、GCC 11 に付属する標準 C++ ライブラリを利用するための ldconfig コマンドを紹介します。 GCC 11.1.0 のビルド 基本は Build GCC 11 from source on Ubuntu と同じ手順で OK です。 Ubuntu 18.04 と 20.04 でビ…

Raspberry Pi 4 のセットアップをしてみた

この記事は 自作OS Advent Calendar 2020 の 8 日目の記事です。 概要 Raspberry Pi 4 を買ってセットアップしたので,その過程を記録しました。 これから買う方の参考になれば幸いです。 この記事では OS のインストールと SSH で公開鍵認証を用いて接続す…

ccコマンドが無いとIntel Pinが実行できない

新規にインストールした Ubuntu 20.04 上で Intel Pin 3.13 (March 25, 2020) が上手く動かなかったので原因究明したメモです。 make と g++ パッケージのみを導入した状態では /usr/bin/cc が存在せず,それが原因で Intel Pin ツールのビルドが上手くいっ…

技術書典応援祭 自作OS関連の頒布物一覧

技術書典 応援祭 が 3 月 7 日に開始しましたね。 サークル単位の頒布物一覧を探しにくいようなので,サークル「bitnos」の頒布物をまとめておきます。 この記事を読む方は自作 OS に興味があると思うので,他サークルの自作 OS 関連物も後半にまとめていま…

ファジングツール syzkaller は何を検査するものなの?

OSSセキュリティ技術の会 第七回勉強会 に参加してきました。 syzkaller が何を,どうやって検査するのか,原理を忘れないうちにメモします。 ファジング ファジングはプログラム解析手法の 1 つです。入力値をいろいろ変えて与えてみてバグが発生するかどう…

uchanの自作OS的な自分史

筆者(uchan)は現在,自作OSの分野で精力的に活動しています.そんな筆者も最初から知識が有ったわけではありません.当然ですが最初は初心者でした.このエッセイは,筆者の自作OS人生を振り返り,何のきっかけで自作OSに足を踏み入れ,どうやって成長した…

ClangdでC++ソースコードを補完する際にコンパイルオプションを指定する方法

この記事では Clangd を使って C++ のソースコードを補完する際に独自のコンパイルオプションを指定する方法を説明します.

QEMUのトレース機能でOSのデバッグを支援する

この記事では QEMU が持つ「トレース」および DPRINTF マクロの機能を有効化して OS 開発のデバッグに役立てる方法を説明します. 自作 OS アドベントカレンダー 2018 の 1 日目の記事です. OS,特にハードウェアを制御するドライバの開発はなかなか苦労す…

「30 日でできる!OS 自作入門」のような段階的に進展するプログラムについての解説書の執筆を Git で支援する

プログラムについての解説書を Git を用いて執筆する方法の提案です. まえがき プログラミングに関する解説書には大きく分けて 2 つの系統があります. 1 つはテーマごとにサンプルプログラムを提示して解説するもの,もう 1 つは特定のプログラムの各部分…

mdadm の write-intent bitmap と bad block log を競合させてみる

本記事は Linux Advent Calendar 2017 の 4 日目の記事です. 概要 Linux のソフトウェア RAID の機能を管理するための mdadm コマンドにまつわるバグの再現実験を行います. そのバグとは,次の記事で紹介されている「バグ 1」のことです. blog.cybozu.io

UEFI + iPXE で自作 OS をネットワーク起動する

概要 開発マシン上に置いた自作 OS のカーネルを,ネットワーク経由でターゲットマシンに読み込ませ,起動させるやり方についての記事です. ディスクイメージをネットワークブートする - Raphine Project の記事を大いに参考にしました.Raphine Project の…

Newlibビルドメモ

Newlibをclangを使って自作OS向けにビルドしたメモ 環境:Ubuntu 16.04、clang 3.8 Newlibバージョン:d6cac3e1da1a117f8a93b91371f3f0a5c071219f Newlibはなぜか、host=targetでconfigureしてしまうと何もビルドが走らない。 たとえホスト環境と同じ環境で…

【技術書典2】Linuxカーネルモジュール自作入門を出します(ダウンロード頒布有)

皆さんは 技術書典2 というイベントをご存知でしょうか。2017年4月9日に秋葉原で開催される、技術書オンリーの同人誌即売会です。 この記事では、技術書典2のために書いた 「Linuxカーネルモジュール自作入門」 の目次をご紹介します。最後にダウンロード販…

Ubuntu 16.04 で XKB を使ってキーマップをカスタマイズする

いつも分からなくなるのでメモ 概要 こんなことがやりたくなったら、キーマップをカスタマイズすることになる。 JIS 配列キーボードを使っているが、US 配列として使いたい Caps Lock を Control に割り当てたい やり方は幾つかあるようだ。XKB を使う方法、…

nfcpy で複数の System Code を持つ NFC タグを扱う方法

Linux (Ubuntu 16.04) で nfcpy を使ってみました。落とし穴が多い気がしたので、ここにまとめます。 特に、複数の system code を持つような NFC タグの扱いが複雑ですので、詳しく説明します。 概要 Linux で NFC タグを読み書きするには nfcpy という Pyt…

フリースタンディングな GCC 5.3 をビルド on Ubuntu 15.10

自作 OS 製作などでお世話になるフリースタンディングな GCC をビルドする手順のメモ。完全にきれいな環境でビルドしたわけではなく、依存関係をすべてメモに記載できていない。手順通りにビルドしてもツールが不足していたりしてエラーになることがあるが、…

deb パッケージングメモ - alien 編

Ubuntu で deb パッケージを作ろうとして調べ、実験したメモです。 なぜ自作ツールの deb パッケージを作るのか 開発したソフトウェアを Chef や Ansible などでデプロイするのに、apt-get install できると便利です。 deb にすることで、プログラム本体だけ…

Git で deb パッケージング

Git で管理しているソフトウェアを deb パッケージにしたいことがあります。 本記事は、1 つの Git リポジトリの中でソフトウェア本体と deb パッケージのメタデータを管理する方法を説明します。 2016/02/29追記:ここで紹介するブランチ構成には問題がある…

Kafka のトピック・パーティションの決め方を考察する

Apache Kafka は分散キューまたは pub/sub メッセージ配信システムとして使われるミドルウェアである。Kafka は pub/sub システムで一般的にある「トピック」に加えて、各トピックを分散処理のために分割する「パーティション」という機能を持っている。この…

【Ubuntu】ラップトップ PC の蓋を閉じてスリープさせる

LAVIE Direct HZ というラップトップ PC に Ubuntu 15.04 を入れて使っている。この PC は 13.3 型もの大きさがあるのに非常に軽く、筆者のお気に入りだ。ただ、残念なことに蓋を閉じてもスリープモードにならない問題があった。 ※2017 年 1 月 29 日追記:U…

タッチパッドに手のひらが触れてカーソルが動くのを防止する

タイピング中に手のひらがタッチパッドに触れて、マウスカーソルが動いてしまったりクリックしてしまうことがある。それを防ぐために、タッチパッドの両端を無効化する方法を説明する。Ubuntu 15.04 で動作確認しているが、その他の Linux でも同様の方法が…