Raspberry Pi 測試 – ArchLinux Server 篇

測試的主角
下載網頁:http://www.raspberrypi.org/downloads/

開機登入,預設帳號密碼:root / root

請更改密碼
# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully[@more@]底下文章參考:
ArchWiki
Nginx + PHP-FPM + MariaDB on Arch Linux for Raspberry PIs
homecomputerlab » NginX + PHP + MariaDB + WordPress on ArchLinux on a Raspberry Pi

設定時區
# date
Sun Sep 28 09:13:30 MDT 2014
# ls -l /etc/localtime
lrwxrwxrwx 1 root root 34 Aug 13  2013 /etc/localtime -> /usr/share/zoneinfo/America/Denver

刪除舊有設定
# rm -rf /etc/localtime

連結到 Asis/Taipei
# ln -s /usr/share/zoneinfo/Asia/Taipei /etc/localtime

# timedatectl set-timezone Asia/Taipei
# date
Sun Sep 28 23:16:19 CST 2014

更換成台灣的 Server
# sed -i ‘s/^Server/#Server/’ /etc/pacman.d/mirrorlist
# sed -i ’49s/# Server/Server/g’ /etc/pacman.d/mirrorlist

更新套件庫
# pacman -Syy
:: Synchronizing package databases…
 core                       159.0 KiB  2.72M/s 00:00 [############################] 100%
 extra                        2.2 MiB  4.66M/s 00:00 [############################] 100%
 community                    2.4 MiB  5.17M/s 00:00 [############################] 100%
 alarm                       29.0 KiB  4.72M/s 00:00 [############################] 100%
 aur                         61.7 KiB  2.87M/s 00:00 [############################] 100%

設定中文化環境,加入 en_US.UTF-8 和 zh-TW.UTF-8
# sed -i ‘s/#en_US.UTF-8/en_US.UTF-8/’ /etc/locale.gen
# sed -i ‘s/#zh_TW.UTF-8/zh_TW.UTF-8/’ /etc/locale.gen

產生 locale.gen 內指定的語系
locale-gen

設定預設語系
# echo ‘LANG=”en_US.UTF-8″‘ > /etc/locale.conf

檢視設定
# grep -v ^# /etc/locale.gen
en_US.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8

安裝 vim 及 mlocate / dnsutils 套件
# pacman -S vim mlocate dnsutils

安裝 Nginx Web Server
# pacman -S nginx

啟動 Nginx Web Server
# systemctl start nginx

安裝的 Nginx Web Server 版本
# /usr/bin/nginx -v
nginx version: nginx/1.6.1

設定開機時啟動
# systemctl enable nginx
ln -s ‘/usr/lib/systemd/system/nginx.service’ ‘/etc/systemd/system/multi-user.target.wants/nginx.service’

取消開機時啟動
# systemctl disable nginx
rm ‘/etc/systemd/system/multi-user.target.wants/nginx.service’

設定 Nginx Web Server
備份設定檔
# mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.$(date +%F_%T)

建立 Nginx Web Server 設定檔
# vim /etc/nginx/nginx.conf
#user http;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

events {
  worker_connections 2048;
}

http {
  include mime.types;
  default_type application/octet-stream;

#log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
# ‘$status $body_bytes_sent “$http_referer” ‘
# ‘”$http_user_agent” “$http_x_forwarded_for”‘;

#access_log logs/access.log main;

  sendfile on;

  keepalive_timeout 60;

  gzip on;
  gzip_comp_level 1;

  server {

    listen 80;
    server_name localhost;

    location ~ .php {
      root /srv/http;
      fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
    }

    location / {
      root /srv/http;
      index index.php index.html index.htm home.php home.html home.htm;
    }
  }

}

重新啟動 Nginx Web Server
# systemctl restart nginx

安裝 PHP 和 PHP-FPM
# pacman -S php php-gd php-geoip php-pear php-cgi php-mcrypt php-odbc php-fpm

啟動 PHP-FPM
# systemctl start php-fpm

設定開機時啟動 PHP-FPM
# systemctl enable php-fpm
ln -s ‘/usr/lib/systemd/system/php-fpm.service’ ‘/etc/systemd/system/multi-user.target.wants/php-fpm.service’

設定 PHP 和 PHP-FPM
備份設定檔
# cp /etc/php/php.ini /etc/php/php.ini.$(date +%F)

修改 /etc/php/php.ini 設定檔
# sed -i ‘s/;extension=mysqli.so/extension=mysqli.so/’ /etc/php/php.ini
# sed -i ‘s/;extension=mysql.so/extension=mysql.so/’ /etc/php/php.ini
# sed -i ‘s/;extension=mcrypt.so/extension=mcrypt.so/’ /etc/php/php.ini
# sed -i ‘s/;mysqli.allow_local_infile = On/mysqli.allow_local_infile = On/’ /etc/php/php.ini
# sed -i ‘s|;date.timezone =|date.timezone = Asia/Taipei|’ /etc/php/php.ini

重新啟動 PHP-FPM
# systemctl restart php-fpm

安裝 mariadb SQL Server
# pacman -S mysql
:: There are 2 providers available for mysql:
:: Repository extra
   1) mariadb
:: Repository community
   2) percona-server

Enter a number (default=1): 1

啟動 mariadb SQL Server
# systemctl start mysqld

設定開機時啟動 mariadb SQL Server
# systemctl enable mysqld
ln -s ‘/usr/lib/systemd/system/mysqld.service’ ‘/etc/systemd/system/multi-user.target.wants/mysqld.service’

設定 mariadb SQL Server
備份設定檔
# mv /etc/mysql/my.cnf /etc/mysql/my.cnf.$(date +%F)

建立設定檔
# vim /etc/mysql/my.cnf
[mysqld]
default-storage-engine = myisam
key_buffer = 1M
query_cache_size = 1M
query_cache_limit = 128k
max_connections=25
thread_cache=1
skip-innodb
query_cache_min_res_unit=0
tmp_table_size = 1M
max_heap_table_size = 1M
table_cache=256
concurrent_insert=2
max_allowed_packet = 1M
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K

重新啟動 mariadb SQL Server
# systemctl restart mysqld

安裝後設定
# /usr/bin/mysql_secure_installation

測試 PHP 功能
# cat /srv/http/index.php
<?php
phpinfo();
?>

Banana Pi 測試 – ArchLinux 安裝 Samba Server

安裝 Samba Server
# pacman -S samba

修改設定檔
# cp /etc/samba/smb.conf.default /etc/samba/smb.conf
# egrep -v ‘^$|^#|^;’ /etc/samba/smb.conf
[global]
   workgroup = HOME
   server string = Samba Server
   printcap name = /etc/printcap
   load printers = yes
   log file = /var/log/samba/%m.log
   max log size = 50
   security = user
   dns proxy = no
[homes]
   comment = Home Directories
   browseable = no
   writable = yes
[printers]
   comment = All Printers
   path = /var/spool/samba
   browseable = no
   guest ok = no
   writable = no
   printable = yes
[@more@]設定使用者 Samba 密碼
# /usr/bin/pdbedit -a bananapi

測試設定檔是否正確
# /usr/bin/testparm

啟動 Samba Server
# system start smbd
# systemctl start nmbd

設定開機時啟動 Samba Server
# systemctl enable smbd
Created symlink from /etc/systemd/system/multi-user.target.wants/smbd.service to /lib/systemd/system/smbd.service.
# systemctl enable nmbd
Created symlink from /etc/systemd/system/multi-user.target.wants/nmbd.service to /lib/systemd/system/nmbd.service.

檢查是否有正常啟動
# netstat -antulp | egrep  ‘:445|:139|:137|:138’
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      15106/smbd
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      15106/smbd
tcp        0      0 192.168.1.103:445       192.168.1.6:2283        ESTABLISHED 15138/smbd
tcp6       0      0 :::445                  :::*                    LISTEN      15106/smbd
tcp6       0      0 :::139                  :::*                    LISTEN      15106/smbd
udp        0      0 192.168.1.255:137       0.0.0.0:*                           15112/nmbd
udp        0      0 192.168.1.103:137       0.0.0.0:*                           15112/nmbd
udp        0      0 0.0.0.0:137             0.0.0.0:*                           15112/nmbd
udp        0      0 192.168.1.255:138       0.0.0.0:*                           15112/nmbd
udp        0      0 192.168.1.103:138       0.0.0.0:*                           15112/nmbd
udp        0      0 0.0.0.0:138             0.0.0.0:*                           15112/nmbd

在 Windows 7 下測試
在檔案總管下輸入 SambaServer’IPusername

輸入使用者帳號及密碼

可以正常讀寫

其它分享的目錄

下載給 Banana Pi 的 BerryBoot 使用的 Linux Image

因為 ArchLinux 的部份一直無法製作成功,所以直接下載別人製作好的比較快,雖然自己很不喜歡這樣,但還是 ……
下載網址:在官方網站的論壇上 BerryBoot Images – Other – Banana Pi Forum

目前共有 Bananian / Raspbian / Lubuntu / ArchLinux / Gentoo 可以下載,除了 Gentoo 外,應該都是目前的最新版本。[@more@]下載之後,使用 7-Zip 解壓縮成 .img 檔,可以複製到隨身碟,

在 BerryBoot 開機時,選擇 Edit menu

選擇 Add OS 右下方的黑色三角形

選擇 Copy OS from USB stick 即可

或使用 WinSCP 之類的程式,上傳到 /dev/mmcblk0p2 分割區的 images 目錄之下

建立掛載目錄 /mnt/mmcblk0p2
# mkdir /mnt/mmcblk0p2

將 /dev/mmcblk0p2 分割區掛載到 /mnt/mmcblk0p2
# mount /dev/mmcblk0p2 /mnt/mmcblk0p2

切換到放置 Image 的目錄
# cd /mnt/mmcblk0p2/images

在 ArchLinux 製作給 BerryBoot 使用的 ArchLinux Image

因為之前是在 Raspbian 下製作的,但一直沒有成功,想會不會是系統的關係,所以改用 ArchLinux 來製作。

安裝所須套件
# pacman -S squashfs-tools kpartx
error: target not found: kpartx

但發現系統沒有 kpartx 這一個套件,在 Creating Arch Linux disk image – ArchWiki 這一篇中找到了解答,原來 kpartx 是屬於 multipath-tools-git 套件,而且是要以 AUR 的方式來安裝。
[@more@]
AUR 是 Arch User Repository 的縮寫,是由 ArchLinux 社群所維護的套件儲庫,每一個套件都包含 PKGBUILD,讓使用者可以使用 makepkg 指令把程式的始碼編譯成套件。

安裝編譯時所須套件
# pacman -S –needed base-devel
:: There are 25 members in group base-devel:
:: Repository core
   1) autoconf  2) automake  3) binutils  4) bison  5) fakeroot  6) file  7) findutils  8) flex  9) gawk  10) gcc
   11) gettext  12) grep  13) groff  14) gzip  15) libtool  16) m4  17) make  18) pacman  19) patch
   20) pkg-config  21) sed  22) sudo  23) texinfo  24) util-linux  25) which

Enter a selection (default=all):

連線到 AUR (en) – Home:https://aur.archlinux.org/
安裝 wget 來下載 Source Code
# pacman -S wget

安裝編譯 multipath-tools-git 所需套件
# pacman -S setconf

切換到一般使用者身份,因為系統不建議使用 root 身份來進行編譯
# su bananapi

下載 multipath-tools-git
$ wget https://aur.archlinux.org/packages/mu/multipath-tools-git/multipath-tools-git.tar.gz

解壓縮
$ tar xvzf multipath-tools-git.tar.gz

切換目錄
$ cd multipath-tools-git

進行編譯
$ makepkg
==> Tidying install…
  -> Purging unwanted files…
  -> Removing libtool files…
  -> Removing static library files…
  -> Removing empty directories…
  -> Compressing man and info pages…
  -> Stripping unneeded symbols from binaries and libraries…
==> Creating package “multipath-tools-git”…
  -> Generating .PKGINFO file…
  -> Generating .MTREE file…
  -> Compressing package…
==> Leaving fakeroot environment.
==> Finished making: multipath-tools-git 1397.aec68ab-1 (Sat Oct  4 16:48:36 CST 2014)

切換回 root 身份
$ exit

安裝 multipath-tools-git
# pacman -U /home/bananapi/multipath-tools-git/multipath-tools-git-1397.aec68ab-1-armv7h.pkg.tar.xz

# which kpartx
/usr/bin/kpartx

重新在 AcrhLinux 上製作給 BerryBoot 使用的 Image,還是失敗

不知道是什麼原因,但只好暫且先放棄了!

製作給 BerryBoot 使用的 ArchLinux – 失敗篇

原本以為在 BerryBoot 中使用的 Image 檔的製作方式都是一樣,所以製作了 Raspbian / Lubuntu / Bananian / ArchLinux,在測試時,前三者都沒有問題,唯獨 ArchLinux 有問題,後來使用 Google 在網路上搜尋了一下,發現好像 ArchLinux 的製作方式有些不一樣。
參考網頁:
‪Arch Linux ARM • View topic – Installation problems with BerryBoot
‪Convert other Linux distributions for Berryboot – Developer-Blog
‪Raspberry Pi • View topic – rPi, BerryBoot, ArchLinux (2 out of 3 ain’t bad!)

底下是重新製作的方式:[@more@]

kpartx 使用參數
$ kpartx
usage : kpartx [-a|-d|-l] [-f] [-v] wholedisk
    -a add partition devmappings
    -r devmappings will be readonly
    -d del partition devmappings
    -u update partition devmappings
    -l list partitions devmappings that would be added by -a
    -p set device name-partition number delimiter
    -g force GUID partition table (GPT)
    -f force devmap create
    -v verbose
    -s sync mode. Don’t return until the partitions are created

將 .img 檔的第二個分割區取出來
$ sudo kpartx -av ArchLinux_For_BananaPi_v2_0.img
add map loop0p1 (253:0): 0 102400 linear /dev/loop0 2048
add map loop0p2 (253:1): 0 7063552 linear /dev/loop0 104448

建立 /mnt/tmp 目錄
$ sudo mkdir /mnt/tmp

將第二個分割區掛載到 /mnt/tmp
$ sudo mount /dev/mapper/loop0p2 /mnt/tmp/

切換目錄到 /mnt/tmp
$ cd /mnt/tmp

刪除 /mnt/tmp/lib 目錄
$ sudo rm lib

搬移 /mnt/tmp/usr/lib 目錄成為 /mnt/tmp/lib 目錄
$ sudo mv usr/lib lib

切換到 /mnt/tmp/usr 目錄
$ cd usr

進行目錄連結
$ sudo ln -s ../lib lib

切換回使用者目錄
$ cd

進行轉換
$ sudo mksquashfs /mnt/tmp/ converted_ArchLinux_image_for_berryboot.img -comp lzo -e lib/modules
Parallel mksquashfs: Using 2 processors
Creating 4.0 filesystem on converted_ArchLinux_image_for_berryboot.img, block size 131072.
[=-                                                                                                                                                                        ]   191/29051   0%

卸載 /mnt/tmp 分割區
$ sudo umount /mnt/tmp
$ sudo rm -rf  /mnt/tmp
$ sudo kpartx -d ArchLinux_For_BananaPi_v2_0.img
loop deleted : /dev/loop0

將製作好的 Image 移到 BerrBoot  的 Image 目錄
$ sudo mv converted_ArchLinux_image_for_berryboot.img /media/berryboot/images/ArchLinux_For_BananaPi_v2_0_Server.img

測試結果:還是失敗

Banana Pi 測試 – ArchLinux 篇 調整篇 Firefox

安裝完的 Firefox 是英文版的,在套件中也找不到中文語系套件,所以採用 .xpi 的方式來中文化
安裝 wget 套件
$ sudo pacman -S wget mlocate
下載 Firefox 中文檔
$ wget http://download-origin.cdn.mozilla.net/pub/mozilla.org/firefox/releases/31.0/win32/xpi/zh-TW.xpi

開啟 Firefox 功能表
選擇 File / Open File
[@more@]
找到下載的 zh-TW.xpi,並按 開啟

選擇 Install Now 安裝

在 Firefox 網頁列輸入 about:config

出現警告訊息,請選擇 我發誓,我一定會小心的!

在搜尋列輸入:general.useragent.locale,並按 Enter 鍵

在下方的 general.useragent.locale 按滑鼠右鍵,選擇 修改



改成 zh-TW,並按 OK 即可

重新啟動 Firefox 就是中文介面了!

Banana Pi 測試 – ArchLinux 篇 調整篇

ArchLinux 系統安裝完成後,做一些簡單的調整,因為預設都沒有安裝什麼套件,需要自行安裝
1. 更新套件資料庫及安裝的套件
$ sudo pacman -Syyu

2. 安裝 Firefox
$ sudo pacman -S firefox

3. 安裝 Java JRE / JDK
搜尋可安裝的 Java 套件
$ sudo pacman -Ss OpenJDK
extra/jdk7-openjdk 7.u65_2.5.1-8
    OpenJDK Java 7 development kit
extra/jre7-openjdk 7.u65_2.5.1-8
    OpenJDK Java 7 full runtime environment
extra/jre7-openjdk-headless 7.u65_2.5.1-8
    OpenJDK Java 7 headless runtime environment
extra/openjdk7-src 7.u65_2.5.1-8
    OpenJDK Java 7 sources

安裝 Java JRE / JDK
$ sudo pacman -S jdk7-openjdk
$ sudo pacman -S jre7-openjdk[@more@]
4. 安裝 Chromium 瀏覽器和 Flash Plugin
$ sudo pacman -S chromium chromium-pepper-flash

5. 7-Zip 及解壓縮套件
$ sudo pacman -S p7zip wxgtk
$ sudo pacman -S unrar unzip

6. FileZilla 檔案傳輸程式
$ sudo pacman -S filezilla

7. 輕量級看圖工具 Geeqi
$ sudo pacman -S geeqie

8. 輕量級繪圖軟體 Pinta、mtPaint
$ sudo pacman -S pinta
$ sudo pacman -S mtpaint

9. 安裝 Midori 瀏覽器
$ sudo pacman -S midori

10. 安裝 LibreOffice
$ sudo pacman -S libreoffice libreoffice-zh-TW

11. PDF 閱讀器 Xournal
$ sudo pacman -S xournal

12. SMPlayer 媒體播放器
$ sudo pacman -S smplayer libcddb

13. 文字編輯器 leafpad
$ sudo pacman -S leafpad

Banana Pi 測試 – ArchLinux 篇

ArchLinux 也是一套高度客製化的 Linux,安裝完畢之後,預設不會安裝太多的軟體,有需要使用什麼套件,可以自行安裝,安裝套件的指令是 pacman,更多關於 ArchLinux 可以參考 Arch Linux – 維基百科,自由的百科全書,更多關於 pacman 指令的介紹:pacman (正體中文) – ArchWiki
ArchLinux Image 下載:http://www.lemaker.org/resources/9-96/archlinux_for_bananapi.html

預設登入的帳號及密碼:bananapi/bananapi
[@more@]自從上次接觸 ArchLinux 也有一段很長的時間,該忘的也都全忘了,本來還很擔心找不到相關的中文資料,不過出乎意料之外,還是有很多的資料可以供做參考,以下是我參考的網頁:
Beginners’ Guide (正體中文) – ArchWiki
Arch Linux 安裝(二) – X window 與 中文字型 (第 1 頁) / ArchLinux 安裝、應用程式、相關 / FluxBB in Taiwan Forums
Arch Linux 安裝(三) – 圖形介面 LXDE 及 中文輸入法 (第 1 頁) / ArchLinux 安裝、應用程式、相關 / FluxBB in Taiwan Forums
Arch Linux 安裝(四) – Xfce 桌面 (第 1 頁) / ArchLinux 安裝、應用程式、相關 / FluxBB in Taiwan Forums
Lawliet’s blog: ArchLinux 推廣教學起跑!(09.7.5更新)
NCKU CSIE Wiki – Arch Linux 介紹 與 安裝

ArchLinux 開完機後和 BananaPi 一樣,預設只有文字介面,如果需要使用圖形介面需要另行安裝。

1. 將套件庫來源設定成 Taiwan
$ sudo sed -i ‘s/^Server/#Server/’ /etc/pacman.d/mirrorlist
$ sudo sed -i ’57s/# Server/Server/g’ /etc/pacman.d/mirrorlist

2. 更新套件庫
$ sudo pacman -Syy

3. 更新已安裝的套件
$ sudo pacman -Syu

4. 安裝 xorg
$ sudo pacman -S xorg-server xorg-server-utils xorg-xinit

5. 設定中文化環境,加入 en_US.UTF-8 和 zh-TW.UTF-8
$ sudo sed -i ‘s/#en_US.UTF-8/en_US.UTF-8/’ /etc/locale.gen
$ sudo sed -i ‘s/#zh_TW.UTF-8/zh_TW.UTF-8/’ /etc/locale.gen

6. 產生 locale.gen 內指定的語系
$ sudo locale-gen

7. 設定預設語系
$ su –
# echo ‘LANG=”zh_TW.UTF-8″‘ > /etc/locale.conf

8. 設定時區
查看目前的設定
$ date
Fri Aug 22 12:17:55 UTC 2014
刪除舊的有時區設定
$ sudo rm -rf /etc/localtime
連結正確的時區設定
$ sudo ln -s /usr/share/zoneinfo/Asia/Taipei /etc/localtime
查看是否有設定正確
$ date
Fri Aug 22 20:19:44 CST 2014

9. 安裝顯示的驅動
$ sudo pacman -S xf86-video-vesa xf86-video-fbdev

10. 安裝預設環境
$ sudo pacman -S xorg-twm xorg-xclock xterm

11. 執行 startx 查看 X Window 是否有可以正常執行
如果可以看到如下的畫面,代表有執行成功,請執行 exit 退出
$ startx

12. 安裝字型
$ sudo pacman -S ttf-dejavu wqy-zenhei ttf-bitstream-vera ttf-arphic-uming ttf-arphic-ukai

13. 安裝 LXDE 桌面環境
$ sudo pacman -S lxde



按 Enter 鍵直接安裝所有軟體

14. 安裝 顯示管理員 SLiM 或 LXDM(擇一即可)
安裝 SLiM 並啟動 SLiM 服務
$ sudo pacman -S slim

$ sudo systemctl enable slim.service
Created symlink from /etc/systemd/system/display-manager.service to /usr/lib/systemd/system/slim.service.

複製設定檔到使用者家目錄
$ cp /etc/skel/.xinitrc ~
在檔案的最後面加入下面一行
exec $1
$
echo “exec $1” >> $HOME/.xinitrcecho

移除 SLiM 服務的方法
# sudo rm /etc/systemd/system/display-manager.service

SLiM 顯示管理員

輸入帳號及密碼即可登入系統

15. 安裝 LXDM – 已內附於 LXDE,不用再安裝
啟動 LXDM 服務
$ sudo systemctl enable lxdm.service

移除 LXDM 服務的方法
$ sudo rm /etc/systemd/system/display-manager.service

LXDM 顯示管理員

16. 安裝 gcin 輸入法
$ sudo pacman -S gcin

/etc/profile 檔尾加入:
$ su –
# echo “export GTK_IM_MODULE=gcin” >> /etc/profile
# echo “export QT_IM_MODULE=gcin” >> /etc/profile
# echo “export LC_CTYPE=zh_TW.UTF-8” >> /etc/profile
# echo “export XMODIFIERS=”@im=gcin”” >> /etc/profile
# echo “gcin &” >> /etc/profile

在右下角可以找到 gcin 圖示

17. 重新啟動系統
$ sudo reboot

18. 安裝 Xfce
$ sudo pacman -S xfce4
按 Enter 鍵,預設安裝所有的相關套件

SLiM 登入畫面,按「F1」至 Xfce Seesion。

按 F1 後切換成 Xfce

LXDM 可以在畫面左下角選擇要執行的工作階段

19. 安裝 Gnome 桌面環境
$ sudo pacman -S xorg gnome gdm gnome-terminal gnome-extra