Archlinux 安装备忘

1. 制作启动U盘

1.1 下载最新镜像

archlinux-2015.04.01-dual.iso

1.2 将镜像写入启动U盘(for OSX)

插入U盘,使用以下命令查看U盘挂载路径

1
$ diskutil list

卸载磁盘

1
$ diskutil unmountDisk /dev/disk2

写入镜像

1
$ sudo dd if=image.iso of=/dev/rdisk2 bs=1M

拔出U盘

1
$ diskutil eject /dev/disk2

1.3 恢复U盘

1
$ dd count=1 bs=512 if=/dev/zero of=/dev/disk2 && sync

2. 安装 Archlinux 基础系统

2.1 U盘引导启动

插上安装U盘,选择从UEFI U盘启动。

注意启动时一定要选择UEFI的U盘作为首选启动项,否则后面安装可能会有问题。

选择第一项,进入Arch Linux archiso x86_64 UEFI CD

2.2 分区格式化

2.2.1 分区方案

分区 类型 大小 类型代码
/dev/sdf1 /boot/efi 512M ef00
/dev/sdf2 / 28G 8300
/dev/sdf3 swap 4G 8200
/dev/sdf4 /home 87G 8300

2.2.2 建立新的分区表

使用parted命令来分区

1
2
3
4
5
6
7
8
9
# parted /dev/sdf

(parted) mklabel gpt
(parted) mkpart ESP fat32 1M 513M
(parted) set 1 boot on
(parted) mkpart primary ext4 513M 30.5G
(parted) mkpart primary linux-swap 30.5G 34.5G
(parted) mkpart primary ext4 34.5G 100%
(parted) quit

2.2.3 格式化分区

1
2
3
4
5
# mkfs.vfat -F32 /dev/sdf1
# mkfs.ext4 /dev/sdf2
# mkswap /dev/sdf3
# swapon /dev/sdf3
# mkfs.ext4 /dev/sdf4

2.2.4 挂载分区:

1
2
3
4
5
# mount /dev/sdf2 /mnt
# mkdir -p /mnt/boot
# mount /dev/sdf1 /mnt/boot
# mkdir -p /mnt/home
# mount /dev/sdf4 /mnt/home

2.3 选择软件源

编辑 /etc/pacman.d/mirrorlist
将ustc源复制到最前面
因为默认编辑器是vi,使用方法为:复制yy,移动到首行:1,粘贴p
然后用下面命令更新源:

1
# pacman -Syy

2.4 安装基本系统

1
# pacstrap -i /mnt base base-devel

2.5 生成 fstab

1
2
# genfstab -U -p /mnt >> /mnt/etc/fstab
# cat /mnt/etc/fstab

注意,生成 fstab 后,务必检查一下内容是否正确。如果有问题,不要再运行 genfstab,直接手动编辑 /mnt/etc/fstab 文件。

2.6 切换到新系统

基础系统已经安装完成,但是新安装的系统还需要一些配置工作,才能引导。
先 chroot 到新系统:

1
# arch-chroot /mnt /bin/bash

2.7 设置语言地区

编辑/etc/locale.gen,去掉以下项目的注释:

1
2
3
4
5
en_US.UTF-8 UTF-8
zh_CN.GB18030 GB18030
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8
zh_CN GB2312

然后运行:

1
# locale-gen

最后,编辑/etc/locale.conf

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

注意:不要在这里把系统全局设置成中文,因为终端无法显示中文,请单独将桌面环境设置为中文。

2.8 设置时区

/etc/localtime 软链接到 /usr/share/zoneinfo/Zone/SubZone。其中 Zone 和 Subzone 替换为所在时区,例如:

1
# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

利用 ntp 自动校时:

1
2
# pacman -S ntp
# ntpdate time.nist.gov

将系统时间写入硬件时钟:

1
# hwclock --systohc --utc

2.9 设置主机名

1
# echo myhostname > /etc/hostname

2.10 启用 dhcpcd 服务

1
# systemctl enable dhcpcd.service

2.11 创建ramdisk

1
# mkinitcpio –p linux

2.12 设置 Root 密码

1
# passwd

2.13 安装和配置 Bootloader

此方法只能用于支持UEFI的主板,如不支持UEFI,请查看Archlinux的Wiki。

选择Gummiboot作为启动器,如要选择Grub同样请查看Archlinux的Wiki。

首先安装 dosfstools 以便在安装之后继续维护 EFI 系统分区。安装efibootmgr 创建可启动的 .efi 文件(bootmanager 安装脚本会使用)

1
# pacman -S dosfstools efibootmgr

强烈建议将 EFI 系统分区挂载到 /boot,这样可以自动更新 Gummiboot。

1
2
# pacman -S gummiboot
# gummiboot --path=/boot install

Gummiboot 会自动检测 bootx64.efi 需要的文件并放入 /boot/EFI/Boot

创建 /boot/loader/entries/arch.conf 并添加以下内容:

1
2
3
4
title          Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=/dev/sdf2 rw

然后创建 /boot/loader/loader.conf,并写入下面配置:

1
2
default  arch
timeout 5

2.14 卸载分区并重启系统

现在新系统已经准备好第一次引导了,先退出 chroot 环境:

1
# exit

然后,卸载分区并重启系统:

1
2
$ umount -R /mnt
$ reboot

注意,reboot前先拔掉u盘

3 配置系统和安装软件

3.1 创建帐号

1
2
3
4
5
# useradd aken
# passwd aken
# mkdir -p /home/aken
# chmod 755 /home/aken
# chown aken:aken /home/aken

修改visudo,使得普通帐号可以免密码sudo

1
# visudo

接下来的所有操作均使用普通帐号

3.2 安装vim

1
$ sudo pacman -S vim

3.3 安装ssh

先安装ssh,并配置密钥,以便远程安装

1
2
3
4
$ sudo pacman -S openssh
$ ssh-keygen -t rsa
$ sudo systemctl start sshd
$ sudo systemctl enable sshd

为了防止ssh长时间自动断开,及防止被攻击,需要修改config文件

1
$ sudo vim /etc/ssh/sshd_config

修改以下参数并保存

1
2
3
4
5
6
7
8
9
10
# 下面三条为防止ssh长时间自动断开
TCPKeepAlive yes
ClientAliveCountMax 5
ClientAliveInterval 300
# 防止被攻击,修改SSH监听端口
Port 2345
# 防止漏洞仅允许SSH协议版本2
Protocol 2
# 禁止root用户登录
PermitRootLogin no

以下所有操作可在远程登陆。

3.4 安装Yaourt

添加Yaourt源至 /etc/pacman.conf

1
2
3
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch

同步并安装

1
2
$ sudo pacman -Sy
$ sudo pacman -S yaourt

3.5 安装zsh

1
2
3
$ yaourt -S zsh git
$ chsh -s $(which zsh)
$ curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh

3.6 安装网络工具

1
$ yaourt -S net-tools dnsutils inetutils iproute2

3.7 挂载硬盘

先查看所有硬盘的UUID

1
$ ls -l /dev/disk/by-uuid/

再写入/etc/fstab文件

1
UUID=410a1569-3d51-4626-ac7b-d3b02c6642b9       /home/aken/mnt/vol1 ext4    defaults 0       0

3.8 安装KODI

安装 X 窗口管理系统

1
$ yaourt -S xorg-server xorg-xinit xorg-utils xorg-server-utils

安装声卡驱动

1
$ yaourt -S alsa-utils alsa-plugins mesa mesa-demos xorg-twm xorg-xclock xterm

装显卡通用驱动(vesa):

1
$ yaourt -S xf86-video-vesa xf86-video-modesetting xf86-video-fbdev xf86-video-intel

运行alsamixer,将master音量开到最大

安装kodi

1
2
$ yaourt -S kodi  kodi-standalone-service
$ sudo systemctl enable kodi

3.9 安装transmission

1
2
3
$ yaourt -S transmission-cli
$ sudo systemctl enable transmission
$ sudo systemctl start transmission

先杀掉所有transmission相关进程

1
$ ps aux|grep transmission

再修改配置文件(必须启动一次才会初始化这个配置文件)

1
$ sudo vim /var/lib/transmission/.config/transmission-daemon/settings.json

将默认值修改为以下,其中rpc-password直接填入密码即可,保存后会自动变成hash。

1
2
3
4
5
6
7
8
9
10
11
12
rpc-whitelist-enabled:     false
umask: 0
download-dir: /home/aken/vol1/movie
utp-enabled: false
dht-enabled: false
pex-enabled: false
speed-limit-up: 300
speed-limit-up-enabled: true
cache-size-mb: 1024
"rpc-authentication-required": true,
"rpc-password": "{4d7929e90bd2141fad7fc2bdea06f057a6bf6f43yc67tGuh",
"rpc-username": "aken",

修改完成,退出重启transmission即可。

3.10 设置节能模式

1
2
$ yaourt -S hdparm hddtemp lm_sensors
$ sudo hdparm -S 255 /dev/sda

3.11 安装samba

1
$ yaourt -S samba

将以下内容放入/etc/samba/smb.conf文件中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[global]
workgroup = WORKGROUP
server string = Samba Server
security = user
map to guest = Bad User
guest account = nobody
log file = /var/log/samba/log.%m
max log size = 50
dns proxy = No
wins support = Yes
guest ok = Yes

[aken-NAS]
path = /home/aken/mnt
read only = No
create mask = 0664
directory mask = 0775

设置开机启动

1
$ sudo systemctl enable smbd nmbd

启动samba

1
$ sudo systemctl start smbd nmbd

3.12 ddns设置

1
2
3
$ yaourt -S lynx cronie
$ crontab -e
*/10 * * * * /home/aken/bin/update_ddns.sh >> /home/aken/bin/log/ddns.log

4 一些脚本

➜ bin cat sleep.sh

1
2
3
4
5
sudo systemctl stop kodi
sudo hdparm -Y /dev/sdb
sudo hdparm -Y /dev/sdc
sudo hdparm -Y /dev/sdd
sudo hdparm -Y /dev/sde

➜ bin cat temp.sh

1
2
3
4
5
6
7
8
9
10
11
12
sensors
sudo hddtemp /dev/sda
sudo hddtemp /dev/sdb
sudo hddtemp /dev/sdc
sudo hddtemp /dev/sdd
sudo hddtemp /dev/sde
sudo hdparm -C /dev/sda
sudo hdparm -C /dev/sdb
sudo hdparm -C /dev/sdc
sudo hdparm -C /dev/sdd
sudo hdparm -C /dev/sde
sudo hdparm -C /dev/sdf

➜ bin cat update_ddns.sh

1
2
3
4
5
6
#!/bin/bash

ipaddr=`lynx -mime_header -auth=akenzc:password "http://www.3322.org/dyndns/update?system=dyndns&hostname=hostname" | egrep "[0-9]+/.[0-9]+/.[0-9]+/.[0-9]+"|awk '{print $2}'`

date=`date "+%y-%m-%d %H:%M"`
echo $date $ipaddr