Arch Linux 2014.07.03 をVirtualBoxにインストール

Debian6の上で動作するVirtualBox 4.3.14内で、Arch Linux 2014.07.03 をインストールしました。その記録。

手順は
http://note.chiebukuro.yahoo.co.jp/detail/n267693
を参考にしました。


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

まずは 558MBのisoファイルをダウンロード。

f:id:itouhiro:20140730085303p:plain
f:id:itouhiro:20140730085511p:plain


VirtualBoxで仮想ディスクを作成し、isoをセット([Setting - Storage - Empty - CD/DVD drive - Choose a virtual CD/DVD file..])して、起動。設定は[メモリ 512MB, HDD 40GB, Audioなし] あとはデフォルトです。
f:id:itouhiro:20140730194818p:plain


Linuxのインストールは一般的には簡単なのですが、Arch Linuxは難しい感じです。それはインストール領域(パーティション)を自分で指定する必要があるから。


cfdiskを使います。
f:id:itouhiro:20140730090225p:plain

swap /dev/sda1
linux /dev/sda2

の2パーティションを作成します。
まずswap領域を 1 GBで作成。[New → Primary → 1024 → End → Type → 82]
残りの領域を linuxに割り当て。 [New → Primary → Enter → Beginning → Bootable] (このBeginning → Bootableはやらなくてよいかも。というかやってない)
[Write → yes → Quit]

f:id:itouhiro:20140730092528g:plain

確保した領域に対して、ファイルシステム・SWAP作成。

# mkfs.ext4 /dev/sda1
# mkfs.ext4 /dev/sda2

# mount /dev/sda2 /mnt
# mkswap /dev/sda1
# swapon /dev/sda1

f:id:itouhiro:20140730093037p:plain


次はbase systemをネット経由で取得するらしい。mirror list のテキストファイルを編集します。

# vi /etc/pacman.d/mirrorlist

f:id:itouhiro:20140730093617p:plain


Japan を上に持ってきて保存。
それでは基本ファイルをインストール。

# pacstrap /mnt base base-devel

f:id:itouhiro:20140730093832p:plain


fstabを生成。

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


/mntの中に入ります。

# arch-chroot /mnt

f:id:itouhiro:20140730095927p:plain


ロケールを編集して、「en_US.UTF-8 UTF-8」だけコメントアウトします。

# vi /etc/locale.gen

f:id:itouhiro:20140730100050p:plain



ロケールを有効化します。

# locale-gen
# echo LANG=en_US.UTF-8 > /etc/locale.conf
# export LANG=en_US.UTF-8


キーボード設定で日本語キーボードを設定「KEYMAP=jp106」します。

# vi /etc/vconsole.conf

f:id:itouhiro:20140730100652p:plain


タイムゾーンを設定します。

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


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

# passwd

f:id:itouhiro:20140730100916p:plain


ブートローダgrubをインストールします。

# pacman -S grub 
# grub-install --target=i386-pc --recheck --debug /dev/sda
# grub-mkconfig -o /boot/grub/grub.cfg

f:id:itouhiro:20140730101214p:plain
f:id:itouhiro:20140730101257p:plain


ネットワーク設定です。DHCPで接続するよう指定。

# systemctl enable dhcpcd.service

電源OFFです。

# exit
# umount -R /mnt
# poweroff

GUI環境インストール

isoファイルを外します。


ネットワーク#2を[Host Only]で追加します。
f:id:itouhiro:20140730114354p:plain


ArchLinux起動。

一般ユーザーを追加。'sudo'を使用可能にするため、visudoで「foo ALL=(ALL) NOPASSWD:ALL」を追加。

# useradd -m foo
# passwd foo
# visudo


X Window Systemを導入。VirtualBox使用なのでデバイスドライバーは xf86-video-vesa。

# pacman -S xorg-server xorg-server-utils xorg-xinit xorg-xclock xterm
# pacman -S xf86-video-vesa
# pacman -S xfce4

f:id:itouhiro:20140730102824p:plain
途中、何か聞かれたら Y か Enter か Default で。
f:id:itouhiro:20140730103509p:plain


ディスプレイマネージャ(ログイン時からGUIになってるやつ)は導入しません。コンソールで起動して、必要なときだけ以下コマンドでGUIを立ち上げるのが私の使用法には合っているためです。

# startxfce4

f:id:itouhiro:20140730103143j:plain

「ログアウト」してXを終了。


ここまででArch Linuxを使えるようになりました。
このあとは、SSHトンネリングで使うための設定なので、人によっては必要ないです。



ネットワーク設定

ネットワーク設定します。

まずSSHサーバーを入れます。

# pacman -Ss ssh | less
# pacman -Ss openssh
# pacman -S openssh

ArchLinuxはインストールしただけじゃ起動してくれないようだ。Debianは起動してくれたのだけど。

# systemctl start sshd.service
# systemctl enable sshd.service


ネットワークインターフェース #1, #2 ともにDHCPになってしまっているようなので、個別に設定します。
まずネットワークインターフェースの名前を調べる。今回の環境では #1は「enp0s3」、#2は「enp0s8」という名でした。

# ls /sys/class/net


IPアドレス割り当て状態を調べる。

# ip addr


DHCP設定を無効にしましょう。

# systemctl --type=service
# systemctl stop dhcpcd.service
# systemctl disable dhcpcd.service

一度ArchLinux再起動してもいいかも。

# reboot


ArchLinuxには、 systemctl と似た netctl というネットワーク設定ツールがあるので、それを使用します。まずはインストール。

# pacman -Ss netctl
# pacman -S netctl


「enp0s3」は通常のインターネット接続に使うのでDHCP。「enp0s8」はSSHトンネリングのために導入したのでstatic IP。 それぞれの設定サンプルファイルをcopyして少し書き換えます。

# cp -p /etc/netctl/examples/ethernet-dhcp /etc/netctl/en1
# cp -p /etc/netctl/examples/ethernet-static /etc/netctl/en2


/etc/netctl/en1 の中身を書き換える。Interfaceの部分を変えただけです。

Description='A basic dhcp ethernet connection'
Interface=enp0s3
Connection=ethernet
IP=dhcp
## for DHCPv6
#IP6=dhcp
## for IPv6 autoconfiguration
#IP6=stateless


/etc/netctl/en2 の中身を書き換える。

Description='A basic static ethernet connection'
#AutoWired=yes
Interface=enp0s8
Connection=ethernet
IP=static
Address=('192.168.56.102/24')
Gateway='192.168.56.1'
DNS=('192.168.56.1 8.8.8.8')


接続できるかテスト実行。

# netctl start en1
# netctl start en2


SSHトンネリング接続成功。
f:id:itouhiro:20140730113504p:plain


このネットワーク設定をArchLinux起動時に実行するよう指定。

# netctl enable en1
# netctl enable en2


SSHトンネリングしたとき、SSHログインできるまでが長い(1分ほど待たされる)のは以下の書き換えで解決。

--- /etc/ssh/sshd_config.orig   2014-04-21 04:38:44.000000000 +0900
+++ /etc/ssh/sshd_config        2014-07-30 15:48:49.351163875 +0900
@@ -114,3 +114,3 @@
 #ClientAliveCountMax 3
-#UseDNS yes
+UseDNS no
 #PidFile /run/sshd.pid

VNCも入れる。まずは一度起動して初期ファイルを ~/.vnc に生成させます。そのときパスワード入力も必要です。パスワードは入力したくないけど -passwd というオプションはないと言われるし‥‥

$ sudo pacman -S tigervnc
$ vncserver
$ vncserver -kill :1
$ vi .vnc/xstartup
$ chmod 755 ~/.vnc/xstartup


xstartupの中身。
~/.vnc/xstartup

#!/bin/sh
export XKL_XMODMAP_DISABLE=1
exec startxfce4


VNCサーバーの :1 は 192.168.56.102:5901 ポートでつなげる。PuTTYSSHトンネリング設定すると、192.168.56.102:5901 にlocalhost:5902 でアクセス可能。

VNC起動。画面が出てくるまで1分待たされるのはソフト起動待ち?

$ vncserver :1

f:id:itouhiro:20140730162159p:plain





‥‥しかしここまでの設定だとSSHトンネリングは成功する一方、外部ネットワークにつながらない( ping www.google.com の応答がない)。

$ sudo netctl stop en1
$ sudo netctl stop en2
$ sudo systemctl start dhcpcd.service

すれば、一時的に外部につながるようになりますが、SSHトンネリング不可です。netctlのDHCPとdhcpcdのDHCPは何か違うのか‥‥


調べると、

$ sudo netctl stop en2

だけ実行すれば外部ネットワークにつながる( ping www.google.com の応答あり)と判明した。en2の何かわるいのか‥‥DNSGatewayの記述がじゃまなのでは?
/etc/netctl/en2 の中身を書き換える。

Description='A basic static ethernet connection'
#AutoWired=yes
Interface=enp0s8
Connection=ethernet
IP=static
Address=('192.168.56.102/24')
# Gateway='192.168.56.1'
# DNS=('192.168.56.1 8.8.8.8')

こうすると、SSHトンネリングも可能で、しかも外部ネットワークにつながるようになった。




Linuxシステム[実践]入門 (Software Design plus)

Linuxシステム[実践]入門 (Software Design plus)