海馬のかわり

最近記憶力に難がある、地方在住サーバエンジニアの備忘録です。

Arch Linuxインストールメモ (archlinux-2013.02.01)

ArchLinux 2013.02.01 インストールメモです。 → Arch Linux 2013.09.01版を追加しました。
今回は32bit版を使用しました。

・使用メディア
ISO: archlinux-2013.02.01-dual.iso

・メディアからのブート
上記イメージよりブート。
今回は32bit版を選択する。

f:id:extrea:20130215122908j:plain

ブート完了後、インストール用のライブOSが起動したところ。
(rootで自動ログインした状態)

f:id:extrea:20130215122916j:plain

事前準備として、まずは日本語キーボードを使えるようにする。

# loadkeys jp106


・インストール準備

[ Network ]
手動設定を行う。
(DHCP環境なら特に設定不要)

iproute2コマンドでの設定例
# ip addr show
# ip link show     # ethデバイス名を確認
# ip link set eth0 up
# ip addr add 192.168.100.100/24 dev eth0
# ip route add default via 192.168.100.254 dev eth0
# 
# vi /etc/resolv.conf
# cat /etc/resolv.conf

### Google Public DNS
nameserver 8.8.8.8
nameserver 8.8.4.4

# ping google.com
PING google.com (173.194.38.78) 56(84) bytes of data.
64 bytes from nrt19s17-in-f14.1e100.net (173.194.38.78): icmp_req=1 ttl=46 time=17.2 ms
64 bytes from nrt19s17-in-f14.1e100.net (173.194.38.78): icmp_req=2 ttl=46 time=21.9 ms
64 bytes from nrt19s17-in-f14.1e100.net (173.194.38.78): icmp_req=3 ttl=46 time=14.0 ms
^C
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 14.006/17.750/21.997/3.285 ms

ついでに、リモートから作業できるようにsshdを起動する。

# passwd  # rootユーザのパスワードを設定
# systemctl start sshd.service


[ Disk Partition ]
ディスクパーティションの設定。
本環境では、/dev/sdaをインストール先HDDとして使用する。

Disk Size: 8GB

device mountpoint size
/dev/sda1 /boot 100MB
/dev/sda2 swap 512MB
/dev/sda3 / 残り全て

 

# fdisk /dev/sda
# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xdf6c562f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400   83  Linux
/dev/sda2          206848     1255423      524288   83  Linux
/dev/sda3         1255424    16777215     7760896   83  Linux

※bootパーティションへbootフラグの付与を忘れない事
※fdiskの使い方は このあたりを参照の事。


[ Format ]
/(root),/bootをext4でフォーマットする。

# mkfs.ext4 /dev/sda1
# mkfs.ext4 /dev/sda3
# 

[ Mount ]
先ほど作成した/dev/sdaの各パーティションを、ライブOSの/mnt配下にマウント。

# mount /dev/sda3 /mnt		# rootパーティションのマウント
# mkdir -p /mnt/boot		# /boot,/var用マウントポイント作成
# mount /dev/sda1 /mnt/boot	# /bootパーティション
# df -hT
Filesystem                   Type      Size  Used Avail Use% Mounted on

~ 中略 ~

/dev/sda3                   ext4      7.3G  145M  6.8G   3% /mnt
/dev/sda1                   ext4       97M  5.6M   87M   7% /mnt/boot


・システムのインストール

[ mirrorlist ]
一番近いミラー先を使用できるように、リストの先頭に
Score値0.1にて、日本のレポジトリを追記。

# cp -p /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.org
# vi /etc/pacman.d/mirrorlist
# diff -wb /etc/pacman.d/mirrorlist.org /etc/pacman.d/mirrorlist
6a7,8
> ## Score: 0.1, Japan
> Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch


[ System Install ]
pacstrapスクリプトにて必要なパッケージグループを指定し、インストールを行う。

今回はGUI不要の為、基本的なパッケージグループのみ選択。

- base
- base-devel
 

# pacstrap /mnt base base-devel
==> Creating install root at /mnt
==> Installing packages to /mnt
warning: database file for 'core' does not exist
warning: database file for 'extra' does not exist
warning: database file for 'community' does not exist
:: Synchronizing package databases...
 core                                            106.0 KiB  1185K/s 00:00 [#########################################] 100%
 extra                                          1419.3 KiB  3.12M/s 00:00 [#########################################] 100%
 community                                      1921.0 KiB  3.28M/s 00:01 [#########################################] 100%

~ 中略 ~

(127/129) installing make                                                 [#########################################] 100%
(128/129) installing patch                                                [#########################################] 100%
Optional dependencies for patch
    ed: for patch -e functionality
(129/129) installing pkg-config                                           [#########################################] 100%
pacstrap /mnt base base-devel  98.35s user 14.78s system 51% cpu 3:41.15 total
# 


[ Bootloader ]
Bootloaderは以下が、使用可能。

- grub-bios
- grub-efi-x86_64
- syslinux

今回はgrub-biosを選択する。

# arch-chroot /mnt pacman -S grub-bios
# 


・システム設定

[ fstab ]

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


[ chroot ]
以降は、新規インストールしたシステムにchrootして作業する。

# arch-chroot /mnt
sh-4.2#


[ Hostname ]
適宜設定。

# echo "arch01.localdomain" >> /etc/hostname
# 


[ Timezone ]
BIOSの時間をローカルタイムにする場合は、adjtimeファイルを作成する

# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# 
# vi /etc/adjtime
# cat /etc/adjtime
0.0 0.0 0.0
0
LOCAL


[ Locale ]

# vi /etc/locale.conf
# cat /etc/locale.conf
LANG="ja_JP.UTF-8"

# 
# cp -p /etc/locale.gen /etc/locale.gen.org
# vi /etc/locale.gen
# diff -wb /etc/locale.gen.org /etc/locale.gen
281c281
< #ja_JP.UTF-8 UTF-8
---
> ja_JP.UTF-8 UTF-8

# 
# locale-gen
Generating locales...
  ja_JP.UTF-8... done
Generation complete.


[ Keyboard ]

# vi /etc/vconsole.conf
# cat /etc/vconsole.conf
KEYMAP=jp106


[ ram image ]

# mkinitcpio -p linux
# 


[ grub install ]

# grub-install --target=i386-pc --boot-directory=/boot --recheck --debug /dev/sda
# grub-mkconfig -o /boot/grub/grub.cfg
# cp /usr/share/locale/en@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo
# cd /boot/grub/locale
# gzip en.mo
# 


[ root passwort]
rootユーザーのパスワードを設定。

# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully


・swapの設定

# fdisk -l
# mkswap /dev/sda2
# echo "/dev/sda2 swap swap defaults 0 0" >> /etc/fstab
# 


・再起動
chroot環境より抜けインストール用ディレクトリをunmount後、システム再起動。

# exit
# umount /mnt/{boot,}
# reboot
# 


・初期設定
必要最低限のパッケージを追加する。

[network(DHCP)]

# ip link show # ethデバイス名確認 (私の環境では「enp2s1」)
# systemctl start dhcpcd@enp2s1
# systemctl enable dhcpcd@enp2s1 #次回より自動起動

[network(固定IP)]

# ip link show # ethデバイス名確認 (私の環境では「enp2s1」)
# vi /etc/conf.d/network
# cat /etc/conf.d/network
interface=enp2s1
address=192.168.100.100
netmask=24
broadcast=192.168.100.255
gateway=192.168.100.254
# 
# vi /usr/lib/systemd/system/network.service
# cat vi /usr/lib/systemd/system/network.service
[Unit]
Description=Network Connectivity
Wants=network.target
Before=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/conf.d/network
ExecStart=/sbin/ip link set dev ${interface} up
ExecStart=/sbin/ip addr add ${address}/${netmask} broadcast ${broadcast} dev ${interface}
ExecStart=/sbin/ip route add default via ${gateway}

[Install]
WantedBy=multi-user.target

# 
# ln -s /usr/lib/systemd/system/network.service /etc/systemd/system/multi-user.target.wants/
# systemctl start network.service
# systemctl enable network.service # 次回より自動起動
# 
# #DNS設定
# vi /etc/resolv.conf
# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

# #動作確認
# ping google.com
PING google.com (173.194.38.78) 56(84) bytes of data.
64 bytes from nrt19s17-in-f14.1e100.net (173.194.38.78): icmp_req=1 ttl=46 time=17.2 ms
64 bytes from nrt19s17-in-f14.1e100.net (173.194.38.78): icmp_req=2 ttl=46 time=21.9 ms
64 bytes from nrt19s17-in-f14.1e100.net (173.194.38.78): icmp_req=3 ttl=46 time=14.0 ms
^C
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 14.006/17.750/21.997/3.285 ms


[ syslog-ng,openssh ]
syslogとsshd。ついでにインストール済みのcornも自動起動設定

# pacman -Sy openssh syslog-ng
# systemctl enable syslog-ng.service
# systemctl start syslog-ng.service
# 
# systemctl enable sshd.service
# systemctl starty sshd.service
#
# systemctl enable cronie.service
# systemctl start cronie.service
# 


[ net-tools,dnsutils ]
ifconfig,netstat,digなどのネットワーク系コマンドツール

# pacman -Sy net-tools dnsutils
#


[ sysstat,mlocate ]
sarなどモニタリングツールおよびlocateコマンド

# pacman -Sy sysstat mlocate
#


[ rc.local ]
ちょっとした処理で、systemdをいじるのが手間なので、rc.local相当を作成しておく

# vi /etc/rc.local
# chmod +x /etc/rc.local
# cat /etc/rc.local
---
#!/bin/bash

touch /tmp/hoge # test

---
#
# vi /usr/lib/systemd/system/rc-local.service
# cat /usr/lib/systemd/system/rc-local.service
[Unit]
Description=/etc/rc.local Compatibility
Wants=network.target

[Service]
Type=oneshot
ExecStart=/etc/rc.local
TimeoutSec=0
#StandardInput=tty
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

# ln -s /usr/lib/systemd/system/rc-local.service /etc/systemd/system/multi-user.target.wants/
# systemctl --system daemon-reload
# systemctl enable rc-local.service

・Yaourtのインストール
AURを使用する場合。公式パッケージ(pacman)で事足りる場合は特に不要。

# cd /usr/local/src
# pacman -Sy diffutils gettext yajl curl wget
#
# wget https://aur.archlinux.org/packages/pa/package-query/package-query.tar.gz
# tar xvzf package-query.tar.gz
# cd package-query
# makepkg --asroot ; echo $?
# pacman -U package-query-1.1-2-i686.pkg.tar.xz
# cd ../
# 
# wget https://aur.archlinux.org/packages/ya/yaourt/yaourt.tar.gz
# tar xvzf yaourt.tar.gz
# cd yaourt
# makepkg --asroot ; echo $?
# pacman -U yaourt-1.2.2-1-any.pkg.tar.xz
# yaourt --stats

以上

・参照

https://wiki.archlinux.org/index.php/Installation_Guide
https://wiki.archlinux.org/index.php/GRUB2
https://wiki.archlinux.org/index.php/Systemd
https://wiki.archlinux.org/index.php/Yaourt