はじめに
ESXi8 で省メモリのLinux使いたいな
そうだ、ESXi8 で Alpine Linux しよう!
(ESXi7 でも同一手順)
環境
- ESXi8 or ESXi7
- Apline Linux 3.18.2
- ESXi8 は、macOS12のChromeから操作
- IPはDHCPから取れる、あとから
192.168.100.101
を設定する - Gatewayは
192.168.100.1
、ネームサーバは8.8.8.8
,1.1.1.1
OSのダウンロード
- alpine Linux - DOWNLOADS からダウンロード
- STANDARD の X86_64 を選択
インストーラの準備
- USBの場合は、rufusや、balena Etcherで作成
- ISOの場合は、ISOイメージをNFS等でESXi8のローカルへコピー
仮想マシンの作成
- USBの場合は、biosではなく、uefiを選択し、USBを接続
- ISOの場合は、CD-ROMにISOイメージを選択
- Guest OS Version は
Other 5.x or later Linux (64-bit)
を選択
セットアップ
ログイン
ログインして setup-alpine
を実行
- root でログイン(パスワードなし)
-
setup-alpine
を実行
setup-alpine
プロンプトに応答していく
- Select keyboard layout: [none] us
- Select variant (or 'abort'): us-mac
- Enter system hostname (fully qualified form, e.g. 'foo.example.org') [localhost] alipne01
- Which one do you want to initialize? (or '?' or 'done') [eth0]
- Ip address for eth0? (or 'dhcp', 'none', '?') [dhcp]
- Do you want to do any manual network configuration? (y/n) [n]
- New passwrod: 複雑なパスワードを入力
- Retype password: ↑のパスワードを再入力
- Which timezone are you in? ('?' for list) [UTC] Asia/Tokyo
- HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none]
- Which NTP client to run? ('busybox', 'openntpd', 'chrony' or 'none') [chrony]
- Enter mirror number (1-73) or URL to add (or r/f/e/done) [1] r
- ここで mirror のサーバが 1つしかない、取れない場合は、ネットワークがインターネットに接続されていない
- Setup a user? (enter a lower-cast loginname, or 'no') [no]
- Which ssh server? ('openssh', 'dropbear' or 'none') [openssh]
- Allow root ssh login? ('?' for help) [prohibit-password] yes
- Enter ssh key or URL for root (or 'none') [none]
- Which disk(s) would you like to use? (or '?' for help or 'none') [none] sda
- How would you like to use it? ('sys', 'data', 'crypt', 'lvm' or '?' for help) [?] lvmsys
- WARNING: Erase the above disk(s) and continue? (y/n) [n] y
Installation is complete. Please reboot.
と表示されたら reboot
と入力して再起動
ssh で接続(dhcpアドレス)
ip a
でIPアドレスを確認して、ssh経由で接続
$ ssh root@IPアドレス
vim のインストール
# apk add vim
IPアドレスの設定
固定のIPアドレスを設定して再起動
# cp /etc/network/interfaces interfaces
# vim /etc/network/interfaces
# diff interfaces /etc/network/interfaces
--- interfaces
+++ /etc/network/interfaces
@@ -2,5 +2,7 @@
iface lo inet loopback
auto eth0
-iface eth0 inet dhcp
-
+iface eth0 inet static
+ address 192.168.100.101
+ netmask 255.255.255.0
+ gateway 192.168.100.1
# reboot
ssh で接続(固定アドレス)
ssh root@192.168.100.101
sudo のインストールとユーザの追加と設定
# echo "http://dl-cdn.alpinelinux.org/alpine/v3.18/community" >> /etc/apk/repositories
# apk update
fetch http://mirrors.edge.kernel.org/alpine/v3.18/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.18/community/x86_64/APKINDEX.tar.gz
v3.18.2-390-g7633fed725b [http://mirrors.edge.kernel.org/alpine/v3.18/main]
v3.18.2-392-gdbc2124c028 [http://dl-cdn.alpinelinux.org/alpine/v3.18/community]
OK: 20063 distinct packages available
# apk upgrade
OK: 189 MiB in 79 packages
# apk add sudo
(1/1) Installing sudo (1.9.13_p3-r2)
Executing busybox-1.36.1-r1.trigger
OK: 191 MiB in 80 packages
# adduser dev
Changing password for dev
New password:
Retype password:
passwd: password for dev changed by root
# addgroup -S sudo
# echo "%sudo ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
# addgroup dev sudo
ssh の設定
dev
ユーザで、sshの鍵を作成・設定、コピーしておく
# su - dev
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dev/.ssh/id_rsa):
Created directory '/home/dev/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/dev/.ssh/id_rsa
Your public key has been saved in /home/dev/.ssh/id_rsa.pub
The key fingerprint is:
:
:
:
$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
root
ユーザで、sshdの設定
# cp /etc/ssh/sshd_config sshd_config
# vim /etc/ssh/sshd_config
# diff sshd_config /etc/ssh/sshd_config
# diff sshd_config /etc/ssh/sshd_config
--- sshd_config
+++ /etc/ssh/sshd_config
@@ -29,12 +29,12 @@
# Authentication:
#LoginGraceTime 2m
-PermitRootLogin yes
+PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
-#PubkeyAuthentication yes
+PubkeyAuthentication yes
# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
@@ -54,7 +54,7 @@
#IgnoreRhosts yes
# To disable tunneled clear text passwords, change to no here!
-#PasswordAuthentication yes
+PasswordAuthentication no
#PermitEmptyPasswords no
# Change to no to disable s/key passwords
# service sshd restart
* Stopping sshd ... [ ok ]
* Starting sshd ... [ ok ]
dev
ユーザで、ssh接続
ssh dev@192.168.100.101 -i .ssh/id_rsa
Open VM Tools のインストール
$ sudo apk add --update open-vm-tools
$ sudo rc-service open-vm-tools start
$ sudo rc-update add open-vm-tools
いれておくと便利なツール
-
bash
sudo apk add bash
-
vim
sudo apk add vim
-
lsblk
等
sudo apk add util-linux
-
lspci
等
sudo apk add pciutils
-
ss
等
sudo apk add iproute2
-
htop
,btop
,iftop
sudo apk add htop btop iftop
-
iperf3
sudo apk add iperf3
-
tcpdump
sudo apk add tcpdump
-
vmstat
sudo apk add procps
-
iotop
sudo apk add iotop
-
pidstat
,iostat
sudo apk add sysstat
-
sar
sudo apk add strace
-
curl
sudo apk add curl
-
ifconfig
,arp
sudo apk add net-tools
- 上記すべて
sudo apk add bash vim util-linux pciutils iproute2 htop btop iftop iperf3 tcpdump procps iotop sysstat strace curl net-tools
やっておくと便利なbash設定
ログインシェルを bash
に変更しておく
$ cat /etc/passwd
:
:
dev:x:1000:1000:dev:/home/dev:/bin/bash
:
:
プロンプトを {ユーザ名}@{ホスト名}:{ワークディレクトリ}
に変更
$ cat .bash_profile
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
$ cat .bashrc
PS1="\u@\h:\w\$ "
さいごに
かんたんでしたね