網頁

2016年8月19日 星期五

Arch Linux on EeePC 701

進入 Arch Linux 官網,選擇 HTTP 方式下載映像檔(archlinux-2016.08.01-dual.iso)
使用 Rufus 製作可開機的  USB/SD Card
連上有線網路,安裝會由網路下載資料
選擇由 SD 卡進入安裝程序

分割硬碟,因為硬碟不大,使用單一分割
# cgdisk /dev/sda
引號很重要,失敗很多次才知道
# mkfs.ext4 -O "^64bit" /dev/sda1
# mount /dev/sda1 /mnt
 將台灣的伺服器移到前面
vi /etc/pacman.d/mirrorlist
## Taiwan
Server = http://archlinux.cs.nctu.edu.tw/$repo/os/$arch
Server = http://shadow.ind.ntou.edu.tw/archlinux/$repo/os/$arch
Server = http://ftp.tku.edu.tw/Linux/ArchLinux/$repo/os/$arch
Server = http://ftp.yzu.edu.tw/Linux/archlinux/$repo/os/$arch
# pacstrap /mnt base
# genfstab -p -U /mnt >> /mnt/etc/fstab
# arch-chroot /mnt
# passwd
# echo ArchLinux > /etc/hostname
開啟 DHCP service
# systemctl enable dhcpcd@enp3s0.service
# vi /etc/locale.gen
解開下列3項
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8
# locale-gen
# ln -s /usr/share/zoneinfo/Asia/Taipei /etc/localtime
# date
開機程序有一些不同的選擇,我後來使用 syslinux,另外有 GRUB, LILO 等
# mkinitcpio -p linux
# pacman -S gptfdisk
# pacman -S syslinux
# syslinux-install_update -i -a -m
# vi /boot/syslinux/syslinux.cfg
改 APPEND root=/dev/sda3 rw
為 APPEND root=/dev/sda1 rw
# exit
# umount /mnt
# reboot

login by root若之前已經開啟 DHCP Service,就不需執行下列命令
# dhcpcd enp3s0

安裝觸控板# pacman -S xf86-input-synaptics

安裝音效
# pacman -S alsa-utils
# alsamixer
# aplay /usr/share/sounds/alsa/Front_Center.wav
# arecord -d 5 test-mic.wav
# aplay test-mic.wav

安裝顯示卡驅動
# pacman -S xf86-video-intel

安裝圖形介面 Openbox, LXDM, Tint2
# pacman -S wget
# pacman -S sudo
# wget http://web.dhjh.tc.edu.tw/~gzqbyr/obtint.zip
# pacman -S unzip
# unzip obtint.zip
vi ./botint
在執行 obtint 前,將 firefox 改成 chromium
# ./obtint

設定 NumLock# vi /etc/lxdm/lxdm.conf
numlock=0

安裝 Mount 工具# pacman -S udevil

安裝 firefox 之 flash (安裝 chrome 之 flash 會移除這個 plugin)
# pacman -S flashplugin

安裝 chrome,若以利用 obtint 安裝過,不須執行下列命令# pacman -S chromium
安裝 chrome 之 flash
# pacman -S binutils
# pacman -S fakeroot
https://aur.archlinux.org/packages/adobe-flashplugin/
下載 adobe-flashplugin.tar.gz
$ tar xvfz adobe-flashplugin.tar.gz
$ cd adobe-flashplugin
$ makepkg -s
# pacman -U adobe-flashplugin-22.0.0.192-1-i686.pkg.tar.xz
重開機後使用 chrome 開啟 chrome://plugins 使用 Adobe Flash Player

設定 x-win 之 Menu/Browser
# vi ~/.config/openbox/menu.xml 改
<item label="Browser"><action name="Execute">
<execute>chromium -disk-cache-dir="/tmp"</execute>
</action></item>
設定 x-win 之 shortcut key
# vi ~/.config/openbox/rc.xml 改
<keybind key="W-w">
  <action name="Execute">
    <command>chromium -disk-cache-dir="/tmp"</command>
    <startupnotify>
      <enabled>yes</enabled>
      <name>Web Browser</name>
    </startupnotify>
  <action>
</keybind>

安裝 Network Manager 圖形化網路管理
# pacman -S networkmanager
# pacman -S network-manager-applet
# pacman -S wireless_tools
# systemctl stop dhcpcd@enp3s0
# systemctl disable dhcpcd.service
# systemctl enable NetworkManager.service
# reboot

顯示電池狀態$ vi ~/.config/tint2/tint2rc
battery_hide = never

切換 consoleAlt+Fn
有 X-Win 時切換 consoleCtrl+Alt+Fn
切換中文輸入法
Ctrl+Space

螢幕解析度設定
# pacman -S xorg-xrandr
# xrandr
# xrandr --output LVDS1 --panning 800x480 --scale 1.4x1.4
# xrandr --output LVDS1 --mode 800x480 --fb 800x600 --panning 800x600
# xrandr --output LVDS1 --mode 800x480 --fb 800x600 --panning 800x600 --scale 1x1
scale 最好是 1x1,這樣才看得清楚
fb 是桌面,panning 是滑鼠座標

修改桌面資訊顯示
# vi ~/.conkyrc
${top_io name 1}${top_io io_write 1} // io 最高的 process
${top_mem name 1}${top_mem mem 1}% // 佔最多記憶體的 process

偵測 CPU溫度,風扇
# pacman -Ss lm-sensors
# pacman -Ss sensors
# pacman -S lm_sensors
# sensors-detect // 它會問你一堆問題,最好是回答預設值
# cat /etc/modules
# sensors
# vi ~/.conkyrc
override_utf8_locale yes // 沒有設定,°C前會有亂碼
CPU Temp:$alignr${execi 10 sensors | grep ^"temp1:" | awk '{print $2}'}
Fan:$alignr${execi 10 sensors | grep ^"fan1:" | awk '{print $2}'}RPM

風扇控制# sensors-detect // 會在 /etc/modules 內加入感測器模組
# pwmconfig // 會去偵測 pwm 控制器,和風扇的關係,並產生 /etc/fancontrol
模組的位置
/sys/class/hwmon/hwmon?/device 主裝置,如CPU,主機板,顯卡等
/sys/class/hwmon/hwmon?/device/pwm? 裝置內可用 pwm
/sys/class/hwmon/hwmon?/device/fan?_input 裝置內可用風扇
/etc/fancontrol 說明
FCTEMPS=hwmon0/device/pwm1=hwmon0/device/temp1_input // PWM 裝置對映到的溫度感測器
FCFANS=hwmon0/device/pwm1=hwmon0/device/fan1_input // PWM 裝置對映到的風扇轉速計
MINTEMP 低於此溫度,風扇使用最小速度轉動
MAXTEMP 高於此溫度,風扇使用最高速度轉動
MINSTART 高於此 PWM,風扇開始轉動,通常大於 MINSTOP
MINSTOP 低於此 PWM,風扇停止轉動
MINPWM 當溫度低於 MINTEMP,使用此 PWM 轉動
MAXPWM 當溫度高於 MAXTEMP,使用此 PWM 轉動
# systemctl enable fancontrol.service
原本由 pwmconfig 產生的 fancontrol 是可以運作
但偶而會因為開機模組載入次序產生問題
# systemctl status fancontrol.service
所以改用下列設定檔
# vi /etc/fancontrol
# Configuration file generated by pwmconfig, changes will be lost
INTERVAL=10
FCTEMPS= /sys/devices/platform/eeepc/hwmon/hwmon[[:print:]]*/pwm1=/sys/devices/virtual/hwmon/hwmon[[:print:]]*/temp1_input
FCFANS= /sys/devices/platform/eeepc/hwmon/hwmon[[:print:]]*/pwm1=/sys/devices/platform/eeepc/hwmon/hwmon[[:print:]]*/fan1_input
MINTEMP= /sys/devices/platform/eeepc/hwmon/hwmon[[:print:]]*/pwm1=30
MAXTEMP= /sys/devices/platform/eeepc/hwmon/hwmon[[:print:]]*/pwm1=55
MINSTART= /sys/devices/platform/eeepc/hwmon/hwmon[[:print:]]*/pwm1=150
MINSTOP= /sys/devices/platform/eeepc/hwmon/hwmon[[:print:]]*/pwm1=100
MINPWM= /sys/devices/platform/eeepc/hwmon/hwmon[[:print:]]*/pwm1=100
MAXPWM= /sys/devices/platform/eeepc/hwmon/hwmon[[:print:]]*/pwm1=255

解決開機時沒插網路線,等待 1min 34s
# systemctl status dhcpcd@enp3s0.service // 錯誤訊息
# systemd-analyze critical-chain // 開機載入模組的相依
若開機時有使用 enable dhcpcd@enp3s0.service
# vi /etc/systemd/system/dhcpcd@.service.d/timeout.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dhcpcd -w -q -t 10 %I
若開機時使用 systemctl enable NetworkManager.service
# vi /usr/lib/systemd/system/dhcpcd@.service
ExecStart=/usr/bin/dhcpcd -w -q -t 10 %I

使用 ramdisk
# findmnt --target /tmp // 查詢 /tmp 的實體位置
手動加入 ramdisk
# mkdir /tmp
# chmod 777 /tmp
# mount -t tmpfs -o size=1G tmpfs /tmp // 使用 1G 的記憶體
開機時自動加入 ramdisk
# vi /etc/fstab // add a line
tmpfs /tmp tmpfs size=1G, mode=1777 0 0
chrome 使用 ramdisk
$ chromium --disk-cache-dir="/tmp/chrome"
# vi /usr/share/applications/chromium.desktop
Exec=/usr/bin/chromium -disk-cache-dir="/tmp/chrome" %U


下面是安裝時所遇到的一些困難過程

安裝 SD 開機時顯示
:: mounting '/dev/disk/by-label/ARCH_201608' to '/run/archiso/bootmnt'
Waiting 30 seconds for device /dev/disk/by-label/ARCH_201608 ...
ERROR '/dev/disk/by-label/ARCH_201608' device did not show up after 30 seconds...
You can try to fix the problem manually, log out when you are finished
我使用下列命令去修正它,但後來幾次就沒遇到,懷疑是接上有線網路,一切皆會順暢
ln -s /dev/sdb1 /dev/disk/by-label/ARCH_201608
mount /dev/sdb1 /run/archiso/bootmnt
rm /dev/disk/by-label/ARCH_201608
exit

使用 cgdisk 不用選擇開機磁區,試過下列命令
lsblk // 列出可用的儲存裝置
cgdisk /dev/sda
cfdisk /dev/sda
fdisk
spfdisk
parted /dev/sda print
parted /dev/sda set 1 bios_grub on
parted /dev/sda set 1 legacy_boot on
parted /dev/sda set 1 boot on
mkfs.ext4 /dev/sda1
mkfs.ext4 -O "^64bit" /dev/sda1
mkfs.ext4 -O "^has_journal" /dev/sda1

安裝網路時,試過下列命令
lspci -v // 查詢 PCI 裝置
Kernel moudles: ath5k
Kernel moudles: atl2
dmesg | grep ath5k // 在開機訊息中尋找,網路裝置名稱
ip link
iw dev
iw dev wlp1s0 link
ip link set wlp1s0 up
ip link show wlp1s0
iw dev wlp1s0 scan
iw dev wlp1s0 connect "your_essid"
iw dev wlp1s0 link
ip addr add 192.168.1.73/24 dev wlp1s0
ip route add default via 192.168.1.1
dhcpcd enp3s0
ping 192.168.1.1
vi /etc/resolv.conf // 設定 DNS
nameserver 192.168.1.1
ping www.google.com

設定安裝時,網路下載不穩定
vi /etc/pacman.conf // 使用 wget 下載,但使用有線網路時,一切順暢,不需要
#XferCommand /usr/bin/wget --passive-ftp -c -O %o %u

開機程序有一些不同的選擇,我後來使用 syslinux

查詢磁碟分割是否對齊,對齊返回0
# blockdev --getalignoff /dev/sda1
使用 TRIM 指令,加入 discard 旗標
取消檔案 atime 的修改,加入 noatime 旗標
vi /etc/fstab
/dev/sda1 / ext4 defaults,noatime,discard 0 1
I/O Scheduler 使用 NOOP
cat /sys/block/sda/queue/scheduler
noop deadline [cfq]
# vi /boot/syslinux/syslinux.cfg
APPEND root=/dev/sda1 elevator=noop
關閉 journal
tune2fs -O "^has_journal" /dev/sda1
查詢寫入最多的 process
iotop -oPa

沒有留言:

張貼留言