このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
mae3xx_tips:create_rootfs_on_sd:start [2014/11/14 09:43] – admin | mae3xx_tips:create_rootfs_on_sd:start [2019/01/13 09:28] (現在) – admin | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== SDカードに root filesystem を作成する (Obsolete) ====== | ||
+ | |||
+ | [[mae3xx_ope: | ||
+ | ここでは、SD カードに root filesystem を作成する方法を紹介します。実機での作業例となります。 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== 準備 ===== | ||
+ | |||
+ | 適当な容量の SD カードを用意します。\\ | ||
+ | 開発に使う場合、市販の安価な製品 (MLC) ではなく、書換可能回数が多い **SLC** の製品を使用するほうが良い((ざっくり計算ですが、書換寿命が100倍(!)ほど違います。))と思います。 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ※ SLC の SD カードは、弊社でも販売しております。お問い合わせは [[http:// | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== SD カードのフォーマット ==== | ||
+ | |||
+ | fdisk, mkfs.ext4 コマンドにより、 | ||
+ | |||
+ | * パーティションの作成 | ||
+ | * ファイルシステムの作成 | ||
+ | |||
+ | を行います。 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | === パーティションの作成 === | ||
+ | |||
+ | 新品の SD カードは、VFAT フォーマットになっており、パーティションの ID も " | ||
+ | fdisk コマンドで パーティション ID を " | ||
+ | |||
+ | < | ||
+ | user1@plum: | ||
+ | [sudo] password for user1: | ||
+ | |||
+ | Command (m for help): t | ||
+ | Selected partition 1 | ||
+ | Hex code (type L to list codes): 83 | ||
+ | Changed system type of partition 1 to 83 (Linux) | ||
+ | |||
+ | Command (m for help): p | ||
+ | |||
+ | Disk / | ||
+ | 77 heads, 26 sectors/ | ||
+ | Units = sectors of 1 * 512 = 512 bytes | ||
+ | Sector size (logical/ | ||
+ | I/O size (minimum/ | ||
+ | Disk identifier: 0x00073ed7 | ||
+ | |||
+ | Device Boot Start | ||
+ | / | ||
+ | |||
+ | Command (m for help): w | ||
+ | The partition table has been altered! | ||
+ | |||
+ | Calling ioctl() to re-read partition table. | ||
+ | |||
+ | WARNING: If you have created or modified any DOS 6.x | ||
+ | partitions, please see the fdisk manual page for additional | ||
+ | information. | ||
+ | Syncing disks. | ||
+ | user1@plum: | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | === ファイルシステムの作成 === | ||
+ | |||
+ | ext4 ファイルシステムを作成します。\\ | ||
+ | inode の数が不足することがありますので、" | ||
+ | |||
+ | < | ||
+ | user1@plum: | ||
+ | mke2fs 1.42.9 (4-Feb-2014) | ||
+ | Discarding device blocks: done | ||
+ | Filesystem label= | ||
+ | OS type: Linux | ||
+ | Block size=4096 (log=2) | ||
+ | Fragment size=4096 (log=2) | ||
+ | Stride=0 blocks, Stripe width=0 blocks | ||
+ | 488400 inodes, 488320 blocks | ||
+ | 0 blocks (0.00%) reserved for the super user | ||
+ | First data block=0 | ||
+ | Maximum filesystem blocks=503316480 | ||
+ | 15 block groups | ||
+ | 32768 blocks per group, 32768 fragments per group | ||
+ | 32560 inodes per group | ||
+ | Superblock backups stored on blocks: | ||
+ | 32768, 98304, 163840, 229376, 294912 | ||
+ | |||
+ | Allocating group tables: done | ||
+ | Writing inode tables: done | ||
+ | Creating journal (8192 blocks): done | ||
+ | Writing superblocks and filesystem accounting information: | ||
+ | |||
+ | user1@plum: | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== SD カードのマウント ==== | ||
+ | |||
+ | フォーマットが完了しましたので、適当なディレクトリ (例: /mnt/sd) に mount しておきます。 | ||
+ | |||
+ | < | ||
+ | user1@plum: | ||
+ | user1@plum: | ||
+ | Filesystem | ||
+ | / | ||
+ | user1@plum: | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== root filesystem の作成 ===== | ||
+ | |||
+ | オンボードフラッシュメモリで採用しているのと同じ " | ||
+ | Ubuntu を含む Debian 系のディストリビューションの場合、" | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== debootstrap のインストール ==== | ||
+ | |||
+ | まずは、debootstrap コマンドをインストールします。 | ||
+ | |||
+ | < | ||
+ | user1@plum: | ||
+ | Ign http:// | ||
+ | Ign http:// | ||
+ | Ign http:// | ||
+ | Hit http:// | ||
+ | Ign http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Hit http:// | ||
+ | Reading package lists... Done | ||
+ | user1@plum: | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | user1@plum: | ||
+ | Reading package lists... Done | ||
+ | Building dependency tree | ||
+ | Reading state information... Done | ||
+ | The following NEW packages will be installed: | ||
+ | debootstrap | ||
+ | 0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded. | ||
+ | Need to get 30.0 kB of archives. | ||
+ | After this operation, 233 kB of additional disk space will be used. | ||
+ | Get:1 http:// | ||
+ | Fetched 30.0 kB in 0s (34.3 kB/s) | ||
+ | Selecting previously unselected package debootstrap. | ||
+ | (Reading database ... 20175 files and directories currently installed.) | ||
+ | Preparing to unpack .../ | ||
+ | Unpacking debootstrap (1.0.59ubuntu0.2) ... | ||
+ | Setting up debootstrap (1.0.59ubuntu0.2) ... | ||
+ | localepurge: | ||
+ | localepurge: | ||
+ | |||
+ | Total disk space freed by localepurge: | ||
+ | |||
+ | user1@plum: | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== root filesystem の作成 ==== | ||
+ | |||
+ | debootstrap コマンドにより作成します。 | ||
+ | |||
+ | < | ||
+ | user1@plum: | ||
+ | I: Retrieving Release | ||
+ | I: Retrieving Release.gpg | ||
+ | I: Checking Release signature | ||
+ | I: Valid Release signature (key id 790BC7277767219C42C86F933B4FE6ACC0B21F32) | ||
+ | 〜〜〜 中略 〜〜〜 | ||
+ | I: Configuring eject... | ||
+ | I: Configuring perl... | ||
+ | I: Configuring libpod-latex-perl... | ||
+ | I: Configuring init-system-helpers... | ||
+ | I: Configuring liblog-message-simple-perl... | ||
+ | I: Configuring libtext-soundex-perl... | ||
+ | I: Configuring libarchive-extract-perl... | ||
+ | I: Configuring libterm-ui-perl... | ||
+ | I: Configuring libmodule-pluggable-perl... | ||
+ | I: Configuring rsyslog... | ||
+ | I: Configuring kbd... | ||
+ | I: Configuring ubuntu-minimal... | ||
+ | I: Configuring libc-bin... | ||
+ | I: Configuring initramfs-tools... | ||
+ | I: Base system installed successfully. | ||
+ | user1@plum: | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | /mnt/sd 以下に、下記のとおり root filesystem が作成されました。 | ||
+ | |||
+ | < | ||
+ | user1@plum: | ||
+ | total 88 | ||
+ | drwxr-xr-x | ||
+ | drwxr-xr-x | ||
+ | drwxr-xr-x | ||
+ | drwxr-xr-x 61 root root 4096 Nov 13 17:02 etc | ||
+ | drwxr-xr-x | ||
+ | drwxr-xr-x 12 root root 4096 Nov 13 17:00 lib | ||
+ | drwx------ | ||
+ | drwxr-xr-x | ||
+ | drwxr-xr-x | ||
+ | drwxr-xr-x | ||
+ | drwxr-xr-x | ||
+ | drwx------ | ||
+ | drwxr-xr-x | ||
+ | drwxr-xr-x | ||
+ | drwxr-xr-x | ||
+ | drwxr-xr-x | ||
+ | drwxrwxrwt | ||
+ | drwxr-xr-x 10 root root 4096 Nov 13 16:57 usr | ||
+ | drwxr-xr-x 11 root root 4096 Nov 13 16:57 var | ||
+ | user1@plum: | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== root filesystem の設定 ===== | ||
+ | |||
+ | root filesystem は作成されましたが、実際に使用するためには各種設定が必要となります。\\ | ||
+ | 例として、下記設定が必要です。 | ||
+ | |||
+ | * Kernel module のコピー | ||
+ | * root のパスワード | ||
+ | * fstab | ||
+ | * console (getty) | ||
+ | * apt source | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== Kernel module のコピー ==== | ||
+ | |||
+ | 今動作している Kernel 用の module 一式を、SD カードにコピーしておきます。\\ | ||
+ | debootstrap で作成した root filesystem には、/ | ||
+ | |||
+ | < | ||
+ | user1@plum: | ||
+ | user1@plum: | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | その後、Kernel module のディレクトリ以下をコピーします。 | ||
+ | |||
+ | < | ||
+ | user1@plum: | ||
+ | user1@plum: | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== root のパスワード設定 ==== | ||
+ | |||
+ | root のパスワードを設定します。 | ||
+ | |||
+ | < | ||
+ | user1@plum: | ||
+ | root@plum:/# | ||
+ | Enter new UNIX password: | ||
+ | Retype new UNIX password: | ||
+ | passwd: password updated successfully | ||
+ | root@plum:/# | ||
+ | exit | ||
+ | user1@plum: | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== fstab の設定 ==== | ||
+ | |||
+ | debootstrap 直後は、下記のとおり全く設定されていません。 | ||
+ | |||
+ | < | ||
+ | user1@plum: | ||
+ | # UNCONFIGURED FSTAB FOR BASE SYSTEM | ||
+ | user1@plum: | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | 下記のようにエディタを起動し、設定しておきます。 | ||
+ | |||
+ | < | ||
+ | user1@plum: | ||
+ | </ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== console(getty) の設定 ==== | ||
+ | |||
+ | シリアルコンソールでログインできるよう、getty の設定をしておきます。\\ | ||
+ | / | ||
+ | |||
+ | < | ||
+ | user1@plum: | ||
+ | user1@plum: | ||
+ | </ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ※ 上の例は、RJ-45 のポートをコンソールとして使用する場合です。DSUB-9 を使用する場合は、ttyO0 -> ttyO1 と読み替えてください。 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== apt source の設定 ==== | ||
+ | |||
+ | apt-get でパッケージ追加・更新ができるように、apt source の設定をしておきます。\\ | ||
+ | オンボード Flash の設定をそのままコピーで良いと思います。 | ||
+ | |||
+ | < | ||
+ | user1@plum: | ||
+ | user1@plum: | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== SD root filesystem からの起動 ===== | ||
+ | |||
+ | Bootloader のシェルから、Kernel command line を設定して起動します。 | ||
+ | |||
+ | < | ||
+ | UBI: user volume: 10, internal volumes: 1, max. volumes count: 128 | ||
+ | UBI: max/mean erase counter: 2/0, WL threshold: 4096, image sequence number: 27632 | ||
+ | UBI: available PEBs: 0, total reserved PEBs: 2040, PEBs reserved for bad PEB handling: 40 | ||
+ | |||
+ | Hit m for menu or any other key to stop autoboot: | ||
+ | |||
+ | type exit to get to the menu | ||
+ | barebox@plum-ma[512MiB]:/ | ||
+ | barebox@plum-ma[512MiB]:/ | ||
+ | Image Name: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Data Size: 3468368 Bytes = 3.3 MiB | ||
+ | Load Address: 80008000 | ||
+ | Entry Point: | ||
+ | |||
+ | Loading OS U-Boot uImage '/ | ||
+ | 〜〜〜 | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | 起動しました。 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | \\ | ||
+ | |||
+ | この後は、 | ||
+ | * Network の設定 (/ | ||
+ | * 一般ユーザアカウントの追加 | ||
+ | * パッケージの追加・更新・削除 | ||
+ | などを行って、好みの環境を作ることができます。 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== ダウンロード ===== | ||
+ | |||
+ | 今回、v2.4.0 ファームウェアの環境で作成したサンプルを置いておきます。 | ||
+ | |||
+ | ^ File ^ Stat ^ SHA1SUM | ||
+ | |{{: | ||
+ | |||