株式会社シベスピ 従業員ブログ

シベスピの社員ブログ。技術・想い・経験沢山書いていきます!

【Linux Alpine】インストール手順(パーティション分割してインストール)

こんにちは。
会社を良くする会「サーバ・ネットワーク改善チーム」です。
今年から発足したこのチームは、名前の通り社内サーバ・ネットワーク改善を目標に、普段業務でも触ることのないインフラ方面での学習を兼ねたチームとなっています。
今期はサーバ構築を行いましたので、今回から3回にかけて、サーバ構築の備忘録を兼ねた各ポイントを掲載していきたいと思います。

今回はタイトルとおり、サーバにOSのインストールを行った際の手順をブログに作成しました。

Alpine Linux

wikipedia様によると


Alpine Linux (アルパインリナックス) は、muslとBusyBoxをベースとしたLinuxディストリビューションである。

・・・(省略)・・・

Alpine LinuxはmuslとBusyBoxを利用して構築されており、従来のLinuxディストリビューションと比較してLXCやインストールに必要なストレージ容量が小型化されている。リソース効率が向上しており、起動時間が短縮されている。

とのことです。
とっても軽いLinuxということぐらいの認識です。

インストール

ざっくり大まかな流れは↓みたいに感じです。

  1. インストールメディアの作成
    1. isoファイルのダウンロード
    2. メディア(今回はCD-RAM)にisoを書き込み
  2. メディアから起動
  3. コマンドでインストール

公式サイトからisoファイルをダウンロード

下記URLからSTANDARDバージョンをダウンロードしました。
64bit環境の場合は、添付画像の「x86_64」で良いです!クリックするとダウンロードが始まります。
alpinelinux.org

公式サイトからダウンロード

メディアに書き込み

isoファイルをメディア(CD-RAM)に書き込みます。そのままドラッグ&ドロップではできないので注意してください!

Windows標準の書き込みで実行できます。

作成したメディアから起動

先ほど作成したメディアで起動します。インストールするPCにCDを差し込み、BIOSからboot optionをCDに変更して、起動します。
BIOSはPCによって違う、かつ、スクショも取れないので、画像は割愛とさせていただきます。

「PC CD 起動」などでネット検索すれば出てくるかと思います。
↓こんな画面が出てきたら、起動成功です。

起動画面

ログインユーザを聞かれている状態なので、「root」でログインできます。
↓ログインした時のメッセージ

Welcome to Alpine Linux 3.15
Kernel 5.15.4-0-Its on an x86_64 (/dev/tty1)
localhost login: root
Welcome to Alpine!

The Alpine Wiki contains a large amount of how-to guides and general
information about administrating Alpine systems.
See <http://wiki .alpinelinux.org/>.

You can setup the system with the command: setup-alpine
You may change this message by editing /etc/motd.
localhost : "#

インストールプログラムの編集

ここが本題です。そのままインストールすると、全てのHDD(もしくはSSD)の容量を利用して、インストールされるため、パーティションを分割することができません。

パーティション分割やマウントなどのコマンドを正しく実行していけば、できるはずなのですが、インストールプログラムを編集するのが一番簡単です。

編集するファイルは「/sbin/setup-disk」です。

しかしながら、間違った編集をしてしまうと、インストールプログラムが壊れてしまうので、バックアップを取っておきましょう。

バックアップコマンド↓

cp /sbin/setup-disk /sbin/setup-disk.backup

確認↓

ls /sbin/setup-disk | grep setup-disk
 setup-disk
 setup-disk.backup

さて、いよいよ編集です。viで編集していきます。

vi /sbin/setup-disk


viで文字列検索を行います。検索する文字列は「native_disk_install()」です。viで文字列検索するには「/検索文字列」でできます。(今回の場合「/native_disk_install()」でEnter)

あとは、その関数内の8行目ぐらいの「local root_size=${ROOT_SIZE}」を変更します。OSをインストールするパーティションの容量だけマイナス○○と記入します。viではファイル編集をするときは「i」を押す必要があります。
64GBとするなら「local root_size=${ROOT_SIZE:-64000}」とします。

local root_size=${ROOT_SIZE}local root_size=${ROOT_SIZE:-64000}

native_disk_install()の中の一部を抜粋↓(下の10行目が変更点)

native_disk_install() {
	local prep_part_type=$(partition_id prep)
	local root_part_type=$(partition_id linux)
	local swap_part_type=$(partition_id swap)
	local boot_part_type=$(partition_id linux)

	local prep_size=8
	local boot_size=${BOOT_SIZE:-100}
	local swap_size=${SWAP_SIZE}
	local root_size=${ROOT_SIZE:-64000}
	local root_dev= boot_dev= swap_dev=
	init_progs $(select_bootloader_pkg) II return 1

	confirm_erase Se Il return 1
	if [ "$BOOTFS" = "vfat" ] && [ -z "SUSE_EFI" ]; then
		boot_part_type=$(partition_id ufat)
	fi
	if [ -n "SUSE_RAID" 1; then

		boot_part_type=$(partition_id raid)
		root_part_type=$(partition_id raid)
		swap_part_type=$(partition_id raid)
		stop_all_raid
	fi

編集したファイルを保存します。escキーを押して、「:wq」で保存できます。

これでインストールの準備が完了です。

インストール

あとは、通常通り「setup-alpine」コマンドでインストールを進めれば完了です。

setup-alpine

キーボードレイアウトの設定

「setup-alpine」を実行すると、キーボードレイアウトを聞かれます。ご自身のキーボードレイアウトを選びます。(ここでは「jp」:10行目で入力)

Available keyboard layouts:
af     be     cn     fi     hu     it     lk     mm     pl     sy     uz
al     bg     cz     fo     id     jp     lt     mt     pt     th     vn
am     br     de     fr     ie     ke     lv     my     ro     tj
ara    brai   dk     gb     il     kg     ma     ng     rs     tm
at     by     dz     ge     in     kr     md     nl     ru     tr
az     ca     ee     gh     iq     kz     me     no     se     tw
ba     ch     epo    gr     ir     la     mk     ph     si     ua
bd     cm     es     hr     is     latam  ml     pk     sk     us
Select keyboard layout [none]:jp

さらに詳細な種類を尋ねられる場合がありますので、ご自身のを選択します。(ここでは「jp」:3行目で入力)

Select keyboard layout [none]: jp
Available variants: jp-OADG109A jp-dvorak jp-kana jp-kana86 jp-mac jp 
Select variant []: jp
 * Caching service dependencies ...                                   [ ok ]
 * Setting keymap ...                                                 [ ok ]

ホスト名の設定

このホストの名前を入力します。ここでは「my-alpine」としてます。何も入力しなかった場合、「localhost」となります。

Enter system hostname (short form, e.g. 'foo') [localhost]: my-alpine

ネットワークインターフェイスの指定

初期化するネットワークインターフェイスを設定します。デフォルトは「eth0」です。

今更ですが、有線接続してインストール作業を行った方が良いです。無線だとちょっとうまくいかなかったので。。

Enter '?' for help on bridges, bonding and vlans.
Which one do you want to initialize? (or '?' or 'done') [eth0] 

デフォルトで「eth0」なので、そのままEnterでOKです。

IPアドレスの設定

ネットワークインターフェイスに設定するIPアドレスの指定をします。
基本的にサーバは固定IPを割り振るべきですが、一旦、自動としました。
dhcp」で自動割り振りします。

Ip address for eth0? (or 'dhcp', 'none', '?') [dhcp] 

デフォルトで「dhcp」なので、そのままEnterでOKです。
次にネットワーク構成をマニュアルで設定するか聞かれます。「dhcp」とした場合、マニュアル設定は必要ないので、「no」で進めます。

下記のように勝手にIPが割り振られました。(ここではIPアドレスを「XX」で表していますが、正しくは数値が表示されます。また、「XX」は同じ値を示していませんので、お気になさらず)

dhcpc: started, v1.34.1
udhcpc: sending discover
udhcpc: sending select for 192.168.XX.XX, server 192.168.XX.XX
udhcpc: lease of 192.168.XX.XX obtained, lease time 86400

rootパスワードの設定

一番初めにrootでログインしたときは、パスワードを聞かれなかったはずです。セキュリティ上よろしくないので、設定をします。

Changing password for root
New password: 
Retype password: 

入力しても、何も表示されませんが、入力できてるので、同じパスワードを2回入力してください。

タイムゾーンの設定

タイムゾーンを設定します。デフォルトだと、「UTC」なので、9時間ずれちゃう。。
「Asia」と入力し、「Tokyo」と入力することで、日本の時間になります。

Which timezone are you in? ('?' for list) [UTC] Asia
What sub-timezone of ' Asia' are you in? ('?' for list) Tokyo
 * Starting busybox acpid ...                                          [ ok ]
 * Starting busybox crond ...                                          [ ok ]

プロキシの設定

HTTP/FTP接続する際にプロキシサーバを利用している場合は、そのアドレスとポート番号を指定します。

自宅にそんなものはないので「none」で進めます。

HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none] 

NTPクライアントの設定

NTPクライアントにどれを利用するか設定します。特に気にせずデフォルトの「chrony」で進めます。

Which NTP client to run? ('busybox', 'openntpd', 'chrony' or 'none') [chrony] 
 * service chronyd added to runlevel default
 * Caching service dependencies ...                                 [ ok ]
 * Starting chronyd ...                                             [ ok ]

ミラーサーバの設定

パッケージを取得するときのミラーサーバを設定します。一番早いところをりようするので、「f」で進めます。

Available mirrors:
1) dl-cdn.alpinelinux.org
2) uk.alpinelinux.org
3) dl-2.alpinelinux.org
・・・
52) mirror.0-1.cloud
53) mirror.kku.ac.th
54) mirror.uepg.br

r) Add random from the above list
f) Detect and add fastest mirror from above list
e) Edit /etc/apk/repositories with text editor

Enter mirror number (1-54) or URL to add (or r/f/e/done) [1]: f

Finding fastest mirror.
・・・
・・・

SSHサーバの設定

SSHサーバを「openssh」か「dropbear」にするか指定します。良く利用されてる「openssh」で進めます。

Which SSH server? ('openssh', 'dropbear' or 'none') [openssh] 
 * service sshd added to runlevel default
 * Caching service dependencies ...                              [ ok ]
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519 
 * Starting sshd ...                                             [ ok ]

デフォルトで「openssh」なので、そのままEnterでOKです。

インストール先ストレージの設定

ようやくインストールです。ここではインストール先ストレージの設定を行います。
すでに別で利用しているストレージを使うと、削除されるので、間違わないように注意してください!

下記はサンプルです。人によって表示は異なります。
次に何に使うかを聞かれるので「sys」と入力します。

Available disks are:
  sda   (500.1 GB ATA     HGST HTS725050A7)
  sdb   (256.1 GB ATA     TS256GMSA370    )
Which disk(s) would you like to use? (or '?' for help or 'none') [none] sda
The following disk is selected:
  sda   (500.1 GB ATA     HGST HTS725050A7)
How would you like to use it? ('sys', 'data', 'lvm' or '?' for help) [?] sys

続いて、「ストレージを消してよいか」と確認されるので、「y」でOKです。↓(3行目)

WARNING: The following disk(s) will be erased:
  sda   (500.1 GB HGST HTS725050A7)
WARNING: Erase the above disk(s) and continue? [y/N]: y
------
省略
------
Installation is complete. Please reboot.
my-alpine:~# 

以上でインストール完了です。この後はBIOSから起動ディスクを選んで起動できれば正しくインストールできてます!

まとめ

普通にインストールする分にはそこまで迷う部分はないのですが、パーティション分割となると、かなり苦労しました。
なにかのご参考になれば幸いです。