現在位置: ホーム / みらくるブログ / Linux From Scratch で自作ディストリビューションづくり-5

Linux From Scratch で自作ディストリビューションづくり-5

今日は、LFSを展開するデバイスを作成していきますよ。自分の世界を展開する土地をつくるみたいな感じです。

 

お疲れさまです。 ニックネーム たいちょう です。

自作OSディストリビューションシリーズの第5日目ですね。

前回は、スクリプトを使って環境を整えたのでしたね。

このスクリプトを活用すれば、面倒なコマンドを一切入力する必要はありません。
なぜこのスクリプトを作ったかというと、LFS を最後までやりきるのはとても大変だからです。
このように自動化しておけば、楽ですよ。

ちなみに、yes を入力させる必要すらないかもしれませんが、LFS 自体教育目的なので、そうしています。やっていることにどんな意味があるのかな、このパッケージはどのプログラムが入っているんだろう、使用方法は?などど合わせて調べながらやってみると、楽しいと思いますよ。

あなたが実施するのは、yes と入力して Enter を押下するだけです。

例外があります。まずは、最低限やらなければいけないのは、LFSを展開するデバイスを作成することです。今日は、そこをやりましょうか。

VirtualBoxの、コントローラー: SATA
で、仮想ハードディスクを新規作成します。
大きさは、デフォルトの 8Gbyteで十分です。

ホストマシンを立ち上げます。
作成したデバイスを確認しておきます。

# ls /dev/sd*
sda sda1 sda2 sdb

どうやら、sdb にできているようです。

sdb1 に 7GiB, 残りを sdb2 とします。

# fdisk /dev/sdb
コマンド (m でヘルプ): n
パーティションタイプ
 p 基本パーティション (1 プライマリ, 0 拡張,  3 空き)
 e 拡張領域 (論理パーティションが入ります)
選択 (既定値 p): p
パーティション番号 (1-4,既定値 1): 1
最初のセクタ(2048-16777215,既定値 2048): <Enter>
最終セクタ、+セクタ番号または+サイズ{K,M,G,T,P} (2048-16777215,既定値16777215): +7G
新しいパーティション 2 をタイプ Linux、サイズ 7 GiB で作成しました。
コマンド (m でヘルプ): n
パーティションタイプ
 p 基本パーティション (1 プライマリ, 0 拡張,  3 空き)
 e 拡張領域 (論理パーティションが入ります)
選択 (既定値 p): p
パーティション番号 (2-4,既定値 1): 2
最初のセクタ(14682112-16777215,既定値 14682112): <Enter>
最終セクタ、+セクタ番号または+サイズ{K,M,G,T,P} (14682112-16777215,既定値16777215): <Enter>
新しいパーティション 2 をタイプ Linux、サイズ 1023 MiB で作成しました。
さあ、確認します。
コマンド (m でヘルプ):p
ディスク /dev/sdb: 8 GiB, 8589934592 バイト, 16777216 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ(論理 / 物理): 512 バイト / 512 バイト
/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子 : 0x72e42380

デバイス    起動    開始位置    最期から    セクタ    サイズ    Id    タイプ
/dev/sdb1               2048    14682111    14680064    7G    83    Linux
/dev/sdb2           14682112    16777215     2095104  1023M   83    Linux

おっと、タイプを変えるのを忘れていました。あと、起動にもチェックがついていません。

コマンド (m でヘルプ):t
パーティション番号 (1,2, 既定値 2): 2
パーティションのタイプ (L で利用可能なタイプを一覧表示します):L
(省略)
82 がLinux スワップのようです。
パーティションのタイプ (L で利用可能なタイプを一覧表示します): 82
パーティションのタイプを 'Linux' から 'Linux swap / Solaris' に変更しました。
あと、/dev/sdb1 を起動可能なように変更しておきます。
コマンド (m でヘルプ):a
パーティション番号 (1,2, 既定値 2): 1
パーティション 1 の起動フラグを有効にしました。

コマンド (m でヘルプ):p
ディスク /dev/sdb: 8 GiB, 8589934592 バイト, 16777216 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ(論理 / 物理): 512 バイト / 512 バイト
/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子 : 0x72e42380

デバイス    起動    開始位置    最期から    セクタ    サイズ    Id    タイプ
/dev/sdb1   *           2048    14682111    14680064    7G    83    Linux
/dev/sdb2           14682112    16777215     2095104  1023M   82    Linux スワップ / Solaris
書き込みます。
コマンド (m でヘルプ):w
パーティション情報が変更されました。
ioctl() を呼び出してパーティション情報を再読み込みします。
ディスクを同期しています。

さあ、これで自分の家を建てるための土地ができました。ここからは、スクリプトに仕事をさせます。

# cd Version-7.8-systemd/PART1-2
# ./AUTOSTART.sh | tee AUTOSTART.log
##########################################
Are you ready for going to Chapter 2. Preparing a New Partition
[yes|no]
yes
Are you ready to make filesystem anew?
[yes|no]
yes
Type which device you want to make LFS system with type ext4.
for example, sdb1, sdb2, sdc, sdd, sde
sdb1
Are you sure making LFS system with ext4 in "/dev/sdb1" ?
[yes|no]
yes
umount: /dev/sdb1: マウントされていません
mke2fs 1.42.13 (17-May-2015)
fs_types for mke2fs.conf resolution:'ext4'
Filesystemlabel=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
45872 inodes, 1835008 blocks
91750 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1879048192
56 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Filesystem UUID:17334af0-f792-45b6-9302-c0a9435203a5
Superblock backups stored on blocks:
  32768, 98304, 163840, 229376,294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal(32768 blocks): done
Writing superblocks and filesystem accounting information: done
brw-rw----. 1 root disk 8, 17 2月 11 08:29 /dev/sdb1

umount コマンドをスクリプトが実行しますが、umount が失敗するのは、mount
されていないので問題ありません。

Type which device you want to make swap.
for example, sdb2, sdc2
sdb2
Are you sure making swap in "/dev/sdb2" ?
[yes|no]
yes
swapoff: /dev/sdb2: swapoff が失敗しました: 無効な引数です
スワップ空間バージョン 1 を設定します。 サイズ = 1023 MiB (1072689152 バイト)
ラベルはありません, UUID=dd1621c8-3f06-48c3-a0a8-0328f1b5e878
brw-rw----. 1 root disk 8, 18 2月 11 09:10 /dev/sdb2

ここでは、スクリプトが swapoff をしていますが、swapon していないため、
swapoff が失敗しても問題ありません。

Are you ready to mounting new partition?
[yes|no]
yes
mkdir: ディレクトリ `/mnt/lfs' を作成しました
mount: /mnt/lfs には SELinux のラベルが含まれていません。
        この処理により、SELinux の搭載されたマシンにラベルを含まないファイル
        システムをマウントすることになります。その結果、制限下にある
        アプリケーションが AVC メッセージを作成し、このファイルシステム内に
        存在するファイルにアクセスできない可能性があります。詳しい情報に
        ついては、 restorecon(8) および mount(8) をお読みください。
mount: /dev/sdb1 は /mnt/lfs にマウントされました。

ホストマシンが Fedora であり、SELinux が有効になっているので、このような
表示が出ますが、将来的にホストマシンから /mnt/lfs にアクセスするためのシステム
を作成するわけではないので、問題ありません。

Are you ready for swapon?
[yes|no]
yes
swapoff: /dev/sdb2: swapoff が失敗しました: 無効な引数です
swapon: /dev/sdb2: スワップ領域の署名が見つかりました: バージョン 1d, ページサイズ 4, 同じ バイト順
swapon: /dev/sdb2: ページサイズ=4096, スワップサイズ=1072693248, デバイスサイズ=1072693248
スワップ /dev/sdb2 を有効化しています

ここでは、スクリプトが swapoff をしていますが、swapon していないため、
swapoff が失敗しても問題ありません。

Are you ready to go to 2.5 Setting The /mnt/lfs Variable?
[yes|no]
yes
/mnt/lfs
mkdir: ディレクトリ `/mnt/lfs/sources' を作成しました
`/mnt/lfs/sources' のモードを 0755 (rwxr-xr-x) から 1777 (rwxrwxrwt) へ変更しました

さて、事前の準備は大体終わりました。次の過程では、いよいよ、関連パッケージをネットからダウンロードします。

VirtualBox で、スナップショットを採っておきます。

「LFS-PART1/2 ダウンロード直前」としておきます。

仮想マシンの電源をオフにします。

お疲れさまです。第5日目の終了です。
次回もお楽しみに。

 

タグ: