みつのCTF精進記録

プログラム書いたりCTFやったりするゆるゆるなブログです。

VirtualBox6.0にArchLinuxをインストールしていくだけ

最初に

こんにちは、スクショ雑星人です。タイトル通りVirtualBoxにArchLinuxをインストールし、デスクトップ環境を構築するまでやります。基本的にArchWikiのインストール手順に沿ってやっていくのでそちらも参照してみてください。

基本的に一つ一つ解説はしない(できない)ので詳しく知りたい方はぜひArchWikiを参照してみてください。とても分かりやすく載っています。また、間違い等ありましたら是非指摘してください。


wiki.archlinux.jp

仮想マシンの作成

まずイメージファイルをダウンロードします。今回自分は "archlinux-2019.02.01-x86_64.iso" というファイルをダウンロードしました。

Arch Linux JP Project - ダウンロード

時によって名前は変わるので "archlinux-XXXX.XX.XX-x86_64.iso" とかなら大丈夫です(毎月更新してるっぽい?)

ダウンロードしたらVirtualBoxの設定へ行きます。新規作成で以下のように設定してください。

f:id:mi__tsu:20190213190925p:plain

f:id:mi__tsu:20190213192249p:plain

名前やメモリサイズなどは適当でいいです。

また、設定でEFIを有効化にチェックをつけてください。ビデオメモリとかの設定は適当でいいです。

f:id:mi__tsu:20190213191338p:plain

追記

Graphics Controller が VMSVGA だとスクリーンショット等をとるときにエラーがでることがあるそうです。他にもこれは CentOS での話なのですがマウスポインタが表示されないといったことも起こっているようです。ちょっと安定性が怪しいので Graphics Controller を従来の VBoxVGA に変更することをお勧めします。

f:id:mi__tsu:20190307163125p:plain

設定が終わったら起動して先ほどインストールしたイメージファイルを選択してください。

起動直後、選択肢がいくつか出てくると思いますが一番上の "Arch Linux archiso x86_64 UEFI USB" のままで大丈夫です。その後一分くらい黒い画面のまま待ちます。

f:id:mi__tsu:20190213192717p:plainこの画面になったら後は(大体)コマンド打つだけです。

キーマップの設定

キーマップを日本語にします。デフォルトでは英語ですが。このままでいい人は設定はいりません。

# loadkeys jp106

通信の確認

VirtualBoxなら標準で通信できるようになってると思いますが一応確認です。もしできなかったらArchWikiへ飛んでください。

# ping -c 3 archlinux.jp

ネットワーク設定 - ArchWiki

パーティション切り分け

現在のブロックデバイスを確認します。

lsblkで表示されるものの中で TYPE が disk のものに注目します。今回自分の場合は sda でした。恐らく人によって違うことがあるので以降は sdX と表記します。自分のデバイス名に適宜置き換えてください。

# lsblk

f:id:mi__tsu:20190213194400p:plain

それではパーティションを切っていきます。

gdiskで切っていきます。まずoコマンドで既存のパーティションの情報をクリアします。

# gdisk /dev/sdX
Command (? for help): o
Proceed? (Y/N): y

 EFI Systemパーティション(ESP)を作ります。

Command (? for help): n
Partition number: 1
First sector: 何も押さずエンター
Last sector: +512M
Hex code or GUID: EF00

rootパーティションを作ります。メインの部分です。

Command (? for help): n
Partition number: 2
First sector: 何も押さずエンター
Last sector: 何も押さずエンター
Hex code or GUID: 8300

保存します。

Command (? for help): w
Do you want to proceed? (Y/N): y

 切り分けたパーティションはlsblkで確認できます。f:id:mi__tsu:20190215173653p:plain

パーティションのフォーマットとマウント

ESPをvfat、ルートパーティションext4でフォーマットします。

# mkfs.vfat -F32 /dev/sdX1
# mkfs.ext4 /dev/sdX2

ルートパーティションを /mnt に、ESPを /mnt/boot にマウントします。

# mount /dev/sdX2 /mnt # mkdir -p /mnt/boot # mount /dev/sdX1 /mnt/boot

システムクロックの更新

# timedatectl set-ntp true

f:id:mi__tsu:20190215174848p:plain

ミラーの選択

/etc/pacman.d/mirrorlist を編集してミラーを選択します。位置的に近いサーバーを上に持ってくるといいです。

自分はこんな感じにしました。

f:id:mi__tsu:20190213234437p:plainベースシステムのインストール

# pacstrap /mnt base base-devel

fstabの作成

# genfstab -U /mnt >> /mnt/etc/fstab

chroot

/mnt を新しいルートディレクトリにします。

# arch-chroot /mnt

f:id:mi__tsu:20190215175456p:plain

タイムゾーンの設定

 タイムゾーンを東京に合わせます。東京が嫌な人は好きな国にしてください。選べる国は # timedatectl list-timezones で確認できます。

# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc --utc

ロケールとキーマップ

# nano /etc/locale.gen
/etc/locale.gen を編集して en_US.UTF-8, ja_JP.UTF-8 の前のコメントアウト(#)を消す
# locale-gen
# echo LANG=en_US.UTF-8 > /etc/locale.conf
# echo KEYMAP=jp106 > /etc/vconsole.conf

ホストネームの設定

myhostname は適当に好きな名前にしてください。

# echo myhostname > /etc/hostname
# nano /etc/hosts
...
# Static table lookup for hostnames.
# See hosts(5) for details.
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
...

下の画像では myhostname は Arch になっています。

f:id:mi__tsu:20190214001637p:plain

Systemd Networkd

# systemctl enable systemd-networkd
# systemctl enable systemd-resolved

パスワードの設定

 Rootのパスワードを設定します。

# passwd

ブートローダのインストール

 systemd-boot をインストールします。grubより楽な気がします。多分。

# bootctl --path=/boot install
# bootctl update
# nano /boot/loader/loader.conf
... default arch timeout 4 editor 0
...
# blkid -s PARTUUID -o value /dev/sdX2
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
# nano /boot/loader/entries/arch.conf
...
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=PARTUUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw
...

仮想マシンのシャットダウン

# exit
# umount -R /mnt
# shutdown -h now

 シャットダウン後ディスクは取り出します。

f:id:mi__tsu:20190214003931p:plain

ネットワークの設定

 再起動した後 name:root, password:passwdで設定したやつ でルートアカウントにログインします。このままだとネットワークが有効になっていないので設定します。

# mv /etc/resolv.conf /etc/resolv_origin.conf.a
# ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
# ip a
# nano /etc/systemd/network/20-wired.network
...
[Match]
Name=en* # ip a で出てきたやつ(enp0s3とかenp1s0とか)

[Network]
DHCP=yes
...

systemd-networkd と systemd-resolved を再起動します。

# systemctl restart systemd-networkd
# systemctl restart systemd-resolved

スワップの設定

sizeは必要なサイズです。メインメモリの2倍がいいとか+2Gがいいとか色々聞きます。ガバイト単位ならM、ギガバイト単位ならGを後ろにつけてください。(例: 6G)

# fallocate -l sizeM,G /swapfile
# chmod 600 /swapfile
# mkswap /swapfile
# swapon /swapfile
# nano /etc/fstab
...
# /dev/sda1
UUID=ABCD-EFGH /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0

# swap
/swapfile none swap defaults 0 0
...
# reboot

再起動したら swap が機能しているか確認。

# free -h

一般ユーザの作成

さすがにルートを一般ユーザとして使わけにはいかないので。

username は各自適当に決めてください。

# useradd -m -G wheel -s /bin/bash username
# passwd username
# visudo
...
## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL
...%wheel の前のコメントアウトを消します
# reboot

作成したユーザでログインします。

AURを使えるようにする

yayをインストールします。少し前にyaourtは非推奨になったらしいです。

$ sudo pacman -Syu
$ sudo pacman -S git
$ git clone https://aur.archlinux.org/yay.git
$ cd yay
$ makepkg -si
$ yay

Guest utils のインストール

$ sudo pacman -S virtualbox-guest-utils
Enter a number (default=1): 2
$ sudo modprobe -a vboxguest vboxsf vboxvideo
$ sudo nano /etc/modules-load.d/virtualbox.conf
...
vboxguest
vboxsf
vboxvideo
...
$ sudo reboot

Xorgのインストール

シンプルなターミナルと時計が表示されれば問題なくインストールできたと見て大丈夫です。exitでxorgを終了できます。

$ sudo pacman -S xorg-server xorg-apps xorg-xinit mesa xorg-twm xorg-xclock xterm
$ startx
$ exit
$ nano ~/.xprofile
...
VBoxClient-all
...

デスクトップ環境のインストール

まずディスプレイマネージャを入れます。今回は LightDM を入れます。

$ sudo pacman -S lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings
$ sudo nano /etc/lightdm/lightdm.conf
...
#unity-compositor-timeout=60
greeter-session=lightdm-gtk-greeter
...
$ sudo systemctl enable lightdm

デスクトップ環境を入れます。自分は awesome を入れますが各自好きなように入れて大丈夫です。例えば xfce を入れる場合 xfce と xfce-goodies をインストールします。

$ sudo pacman -S awesome

その他必要なものをインストールする

他にも自分は vimcurl 等をインストールしました。

$ sudo pacman -S xdg-user-dirs-gtk gamin adapta-gtk-theme pulseaudio pulseaudio-alsa pavucontrol alsa-utils otf-ipafont chromium
$ sudo reboot

f:id:mi__tsu:20190215192823p:plain

わーい。ターミナルは Win+Enter で開けます便利。シンプルな見た目から自分好みにいくらでもカスタマイズできるので楽しい環境ですね。

日本語環境の整備

環境変数を日本語用に。ここではキーマップはUSなので注意。

$ sudo nano /etc/locale.conf
...
# LANG=en_US.UTF-8
LANG=ja_JP.UTF-8
...

fcitxもここで入れます。

$ sudo pacman -S fcitx-im fcitx-configtool fcitx-mozc
$ nano ~/.xprofile
...
VBoxClient-all

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=”@im=fcitx”
fcitx
...
$ reboot

fcitxの設定をしていきます。

$ fcitx-config-gtk3

設定はこんな感じにします。左下の + で追加、- で削除ができます。

f:id:mi__tsu:20190215194411p:plain

おまけ: ターミナルをちょっと良くする

Xtermだとシンプルすぎる方向けです。Xtermが好きな人はそのままでいいと思います。あとXtermだと日本語がうまく表示されません。f:id:mi__tsu:20190215200907p:plain

terminatorをインストールしていきます。

$ sudo pacman -S terminator

awesomeの設定ファイルをいじります。

$ mkdir -p ~/.config/awesome/
$ cp /etc/xdg/awesome/rc.lua ~/.config/awesome/
$ nano ~/.config/awesome/rc.lua
... 50行目くらい
terminal = "terminator"
...
$ reboot

再起動した後ターミナルを起動するとしっかりと terminator が起動できていることがわかります。

awesomeの設定ファイルの書き方については調べれば結構たくさんでてきます。ターミナルだけでなく他にもたくさん設定してみてください!

いえい

 これでインストールは終了になります。Archはたくさんカスタマイズができるディストリビューションなので自分の用途に合わせていい感じに遊んでみてください!では、よきArchライフを!