世界を動かす技術を、日本語で。

Floppinux – シングルフロッピー上の組み込みLinux、2025年版

概要

  • FLOPPINUX は、シングルフロッピーLinuxディストリビューション作成のためのワークショップ
  • 2025年版 では最新カーネルや永続ストレージなど多くのアップデートを反映
  • 最小限のツールとハードウェアサポート を搭載し、誰でもカスタマイズ可能
  • BusyBox など軽量ツールの導入方法やクロスコンパイル手順を解説
  • 実機・エミュレータ両対応、安全なディスク作成方法も紹介

FLOPPINUX 2025年版:シングルフロッピーLinuxディストリビューション構築ワークショップ

  • FLOPPINUX は2021年にリリースされ、4年後も有用性が評価されたプロジェクト
  • 2025年版 では、最新のカーネルや永続ストレージ対応など、数多くのアップデートを実施
  • Linux From Scratch のフロッピー版とも言える、学習とカスタマイズに最適なワークショップ形式
  • 対象者 はLinuxの基本知識を有し、最小限の環境構築を体験したいユーザー
  • 最終成果物 は、フロッピードライブ搭載PCをLinuxターミナルとして起動・ファイル編集・スクリプト作成が可能なシンプルなディストリビューション
    • 264KB の空き領域をユーザーファイル用に確保

カーネルとツールチェーンの準備

  • Linuxカーネル6.14 (2025年3月リリース)がi486対応の最終バージョン
  • 作業環境は Omarchy Linux (Arch Linuxベースの64bit OS)を使用
    • POSIX互換システムなら手順は共通、必要パッケージのみ異なる
  • 作業用ディレクトリを作成し、全ファイルを管理
  • ビルドに必要なソフトウェア (gcc, make等)をインストール
  • エミュレータ は86BoxやBochsも利用可能だが、実機デバッグ以外では不要

カーネルの構築

  • linux/ ディレクトリにカーネルソース(6.14.11)を配置
  • 最小構成のカーネル設定 を作成し、必要最小限の機能のみ有効化
    • 不明なオプションは無効化しないことが推奨
  • 設定保存後、 arch/x86/boot/bzImage としてカーネルイメージが生成される
  • カーネルイメージをメインディレクトリに移動

BusyBoxの導入とクロスコンパイル

  • BusyBox 1.36.1 をbusybox.netまたはGitHubから取得
    • 軽量で多機能なUNIXツール群を提供
  • カーネル同様、 menuconfig で最小構成を選択
    • 必要なツールのみ選択し、容量を節約
  • 32bitターゲット のため、64bit環境ではクロスコンパイラを設定
  • ビルド後、 _install/ ディレクトリにベースファイルシステムが生成される
    • メインディレクトリへ移動・リネーム

追加ディレクトリ・設定ファイルの作成

  • Linuxシステムの最低限ディレクトリ構造 を作成
  • ウェルカムメッセージinittabrcスクリプト など、起動・動作に必要な設定ファイルを配置
  • スクリプトに実行権限を付与し、全ファイルの所有者をrootに設定
  • 圧縮アーカイブ 化し、作業ディレクトリに戻る

フロッピーディスクイメージの作成・書き込み

  • フロッピーサイズの空ファイル を作成し、フォーマット・ブート可能化
  • syslinux、カーネル、ファイルシステム をイメージにコピー
  • 実機やエミュレータでテストし、動作確認
  • floppinux.img が完成すれば、実際のフロッピーに書き込み可能
    • デバイス名を誤るとパーティション消去の危険性があるため要注意

注意事項・まとめ

  • デバイス名の指定ミス によるデータ消失リスク
  • GUIツールの利用や十分な確認を推奨
  • 本ワークショップを通じて、 シングルフロッピーLinuxディストリビューション の構築・カスタマイズが体験可能
  • FLOPPINUX - An Embedded Single Floppy Linux Distribution
    • By Krzysztof Krystian Jankowski
    • 2025.12

Hackerたちの意見

フロッピーディスクの音と、OSが読み込まれるまでのワクワク感、そしてそれが成功したときの喜びが懐かしいなぁ。

過去15年間に手に入れたほとんどのノートパソコンから聞こえるコイル鳴きは、少なくとも「コンピュータが動いてる」っていう懐かしい音を聞かせてくれる。コイル鳴きが設定できたらいいのにね :)

1.44MBのフロッピーディスクに入ってたQNXデモを覚えてる。すぐにフル機能のウィンドウマネージャーが立ち上がって、基本的なウェブブラウザもあったんだよね。それが1999年で、その後はそんなの見たことないな。

今のユニコードテーブルに収まるかな?

MenuetOS/KolibriOS: https://news.ycombinator.com/item?id=38059961 https://news.ycombinator.com/item?id=27249075 1999年のことだったけど、その後こんなの見たことなかったな。今はあるけどね ;-)

xwoaf-rebuildはそれに合致してるよ。 https://web.archive.org/web/20240901115514/https://pupngo.dk...

初めて見たとき、同じ気持ちになったよ。GUIやドライバー、あれらのものを1.44MBにどうやって収めたのか。

ここで説明されている永続性戦略(mount -t msdos -o rw /dev/fd0 /mnt)とホームへのバインドマウントの組み合わせは、スペースを節約するためのいいアイデアだね。ただ、物理的な磁気メディアのデータ整合性についてはどうなのか分からない。FAT12はジャーナリングファイルシステムじゃないし。現代のドライブでは、書き込み中にクラッシュすると、せいぜいイライラする程度だけど、33MHzのCPUを搭載した3.5インチフロッピーディスクでは、書き込み操作がかなりの時間ブロックされるからね。ユーザーが電源を切ったり、ヘッドが動いている最中にカーネルがパニックになると、そのディスクはおしまいだ。記事ではsyncについて触れてるけど、フロッピードライブでのsyncはすごく遅い操作で、ユーザーが中断する可能性もある。253KiBの空きスペース制約を考えると、フリースペースを生のブロックデバイスとして扱うか、遅いメディア向けに設計されたログ構造のファイルシステム(簡易版のJFFS2とか)を使った小さな追加パーティションにする方が良いかもしれないけど、それにはカーネルモジュールが多すぎるかも。誰か、raw FATファイルシステムをマウントする代わりに、initramfsイメージの最後にtarアーカイブを追加して永続性を持たせる実験をした人いる?シャットダウン時だけ書き込みを直列化する方が安全かもしれないし、もっと意見が聞きたいな。

ユーザーが電源を切ったり、ヘッドが動いている最中にカーネルがパニックになると、そのディスクはおしまいだ。納得、いい指摘だね。可能なら、書き込み用のディスクスペースにはセカンドドライブを使いたいな(今はフロッピードライブが2つあるのは珍しいって知ってるけどさ)。

ちょっと物議を醸す意見だけど、ジャーナリングは一般的に思われているほど有益じゃないと思う。何十年もFATを使ってるけど、データの破損にあったことはほとんどないよ。今ではPCよりも埋め込みデバイスの方がずっと多く使われてると思う。

ユーザーが電源スイッチを押したり、ヘッドが動いている間にカーネルがパニックを起こすと、そのディスクは消えちゃう。これは本当じゃない。スレッドの下の方でコメントしたけど、FATはバックアップテーブルを保持していて、それを使ってディスクを復元できるんだ。

昔の良き日々にはinitrdや他のRAMディスクのことなんてなかったよね。システム全体をディスクからそのまま読み込んでた。Slackware 8はその代表的な例だし、NetBSD(最新のやつでも)今でもデフォルトでそうやってるよ。

Hacker Newsで議論の続きを見る