のむログ

技術メモ / 車 / 音楽 / 雑記 / etc...

こちらは旧ブログになります。

新ブログはこちらに移行しました🙇

Ubuntu 16.04.5 LTS カスタムディストリビューションを作る!《実践編》

前回記事

nomunomu.hateblo.jp

基本システムのインストール

Ubuntuのルートファイルシステムを構成する最小限の環境を作成するには、以下のようにdebootstrapコマンドを実行します。自作Linuxを作成するフォルダーを~/mylinuxとします。ここでベースにするのはUbuntu 16.04.5 LTS(xenial)とします。

$ mkdir ~/mylinux
$ sudo debootstrap --arch=amd64 xenial ~/mylinux

--arch=にはアーキテクチャを指定します。指定できるアーキテクチャamd64, arm64, armel, armhf, i386, mips, mips64el, mipsel, powerpc, ppc64el, s390xとなってるようです。

各種設定ファイルの作成

Ubuntuをカスタマイズするにはchrootコマンドを用いて、現在利用しているルートファイルシステムを自作Linuxのルートファイルシステムに切り替えて作業をする必要があります。ルートファイルシステムを切り替えるためネットワーク設定やリポジトリ設定は、自作Linuxのものを利用することになるため、その設定ファイルを作成する必要があります。とりあえずは現行のUbuntuから設定ファイルをコピーします。

を以下のようにコピーします。

$ sudo cp /etc/hosts ~/mylinux/etc/.
$ sudo cp /etc/resolv.conf ~/mylinux/etc/.
$ sudo cp -p /etc/apt/sources.list ~/mylinux/etc/apt/.

ルートファイルシステムの切り替え

コピーが終わったらルートファイルシステムを自作Linuxに切り替えていきます。

$ sudo mount --bind /dev ~/mylinux/dev
$ sudo chroot ~/mylinux
# mount -t proc none /proc
# mount -t sysfs none /sys
# mount -t devpts none /dev/pts

ファイルシステムを切り替えることで、自作Linuxのルートファイルシステムを実際に使用しながらカスタマイズ作業を行うことができます。また、ルートファイルシステムを切り替えたので

  • バイスファイルを格納する:/dev
  • システムのリソース情報を管理する:/proc, /sys

などについては、再マウントしてあることに注意してください。さらには、ホームディレクトリを表すHOMEロケールに関する環境変数マスタのLC_ALLを以下のように設定しておきます。

# export HOME=/root
# export LC_ALL=C

パッケージ情報の更新

ここからは基本システムに好みのパッケージをインストールしていく作業になります。まず初めにパッケージの更新を行います

# apt-get update

D-Busとinitctlのインストール

D-Bus

LinuxGNOMEKDEなどのGUI環境は「D-Bus」と呼ばれるメッセージングパスを通してデータやり取りをやってるみたいです。なので、最初にD-Busをインストールして、新たなマシンIDファイル(machine-id)*1を作成します。

# apt-get install dbus
# dbus-uuidgen > /var/lib/dbus/machine-id

initctl

また、起動スクリプトを制御しているinitctlコマンドが実行されても何も動作しないように、正常終了ステータスを返すだけのtrueコマンドのシンボリックリンクとして作成します。そのあとで、dpkg-divertを使ってinitctlコマンドとしてパッケージを管理するデータベースに登録します。

# ln -s /bin/true /sbin/initctl
# dpkg-divert --local --rename --add /sbin/initctl

基本パッケージのインストール

まずはUbuntuをライブ起動したりインストールしたりするための必要なパッケージをインストールしていきます。ここではUbuntuのメタパッケージを利用します。

# apt-get install ubuntu-standard

さらにcasper, lupin-casper, os-prober, linux-generic, ubiquity-frontend-gtk, ubiquity-slideshow-ubuntu等のパッケージもインストールします。

# apt-get install casper lupin-casper
# apt-get install linux-generic
# apt-get install ubiquity-frontend-gtk ubiquity-slideshow-ubuntu

これらのパッケージインストール中に、ブートローダーである「GRUB」のインストールが促されますが、インストールしませんので回避します。「OK」「Enter」「Yes」の順番で回避します。

ここまでが基本的な設定になります。そして、ここから自分が実際に必要としているパッケージ等をインストールしていく作業になります。ここでは、日本語環境で利用するのに最低限必要なパッケージを紹介しつつ、インストールしていきたいと思います。

ユーザーパッケージのインストール

ここでインストールする予定のパッケージは以下の通りです。

  • デスクトップ環境:lxde, lxdm
  • 日本語入力システム:ibus-mozc
  • ネットワークマネジャー:network-manager
  • 日本語用フォント:fonts-takao, fonts-vlgothic
# apt-get install ibus-mozc
# apt-get install network-manager
# apt-get install fonts-takao fonts-vlgothic

その他必要なパッケージは、自作LinuxではなくオリジナルLinuxで以下のコマンドを実行すると、インストールされているパッケージを見ることができます。

$ dpkg -l | less

f:id:nomunomu0504:20181018221701p:plain

自作Linuxで必要なパッケージをインストールしたら、最新版に更新して、キャッシュや依存関係のないファイルを削除しましょう。

# apt-get upgrade
# apt-get clean
# apt-get autoremove

次回は、自作Linuxの不要ファイルを削除していき、さらには不要なプロセスも止めます。そのあとインストールイメージを作成して完成させていきたいと思います!

*1:OSの起動時にマシンに割り当てられるユニークな番号です。D-Busでのやり取りの際に同じマシン上のものかを判別するのに利用されます。