Banana Pi 測試 – 使用 logwatch 寄送 Log 檔

在使用 CentOS Linux 時都會使用 logwatch,每天固定寄送系統 Log 給系統管理者,藉此了解目前系統使用的狀況。
在 Banana Pi 因為是拿來當做 Server 使用,所以也另外安裝了 logwatch
# apt-get install logwatch

設定寄給 root 的信件轉寄給會常收信的使用者
# echo “root: test@gmail.com” >> /etc/aliases

讓設定生效
# /usr/bin/newaliases[@more@]但設定完成之後,卻一直收不到相關的信件

查看一下系統 mail 的狀態
# /usr/bin/mailq
27h  4.3K 1XWuzr-0002FO-47 <> *** frozen ***
          root@bananapi
3h  6.5K 1XXHTP-0002×8-Q2 <> *** frozen ***
          root@bananapi
14m  6.6K 1XXKHz-0003cA-4m <> *** frozen ***
          root@bananapi
13m  1.2K 1XXKJ2-0003ca-Oa <> *** frozen ***
          root@bananapi

因為 Debian 的 mail server 是使用 exim4,所以查看一下 mail server 的相關記錄
# head -5 /var/log/exim4/mainlog
2014-09-26 06:32:22 Start queue run: pid=11655
2014-09-26 06:32:22 1XWuzr-0002FO-47 Message is frozen
2014-09-26 06:32:22 1XWYWS-0001UY-F3 Unfrozen by errmsg timer
2014-09-26 06:32:22 1XWYWS-0001UY-F3 ** test@gmail.com <root@bananapi> R=nonlocal: Mailing to remote domains not supported
2014-09-26 06:32:22 1XWYWS-0001UY-F3 test@gmail.com <root@bananapi>: error ignored

發現有 Mailing to remote domains not supported 的訊息,主要是 exim4 在沒有特別設定時,是只能在 local 端運作,無法遠端寄信

設定 exim4
#
# sed -i ‘/configtype/s/local/internet/’ /etc/exim4/update-exim4.conf.conf

# /usr/sbin/exim4 -bV
Exim version 4.80 #3 built 02-Jan-2013 19:15:12
Copyright (c) University of Cambridge, 1995 – 2012
(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 – 2012
Berkeley DB: Berkeley DB 5.1.29: (October 25, 2011)
Support for: crypteq iconv() IPv6 GnuTLS move_frozen_messages DKIM
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch nis nis0

passwd
Authenticators: cram_md5 plaintext
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
Configuration file is /var/lib/exim4/config.autogenerated

# /etc/init.d/exim4 restart
[ ok ] Stopping MTA for restart: exim4_listener.
[ ok ] Restarting MTA: exim4

echo “Hello ! ” | mail -s “My Testing Mail”

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 測試 – 安裝 vsftpd Server

安裝 vsftpd FTP Server
# apt-get install vsftpd
進行設定,vsftpd FTP Server 的設定檔在 /etc/vsftpd.conf
取消匿名者登入
# sed -i ‘s/anonymous_enable=YES/#anonymous_enable=YES/’ /etc/vsftpd.conf

讓系統中的使用者可以登入
# sed -i ‘s/#local_enable=YES/local_enable=YES/’ /etc/vsftpd.conf

可以寫入
# sed -i ‘s/#write_enable=YES/write_enable=YES/’ /etc/vsftpd.conf[@more@]
系統記錄檔
# sed -i ‘s|#xferlog_file=/var/log/vsftpd.log|xferlog_file=/var/log/vsftpd.log|’ /etc/vsftpd.conf

vsftpd FTP Server 登入時顯示的 Banner
# sed -i ‘s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to Banana Pi FTP service./’ /etc/vsftpd.conf

chroot 系統的使用者
# sed -i ‘120s/#chroot_local_user=YES/chroot_local_user=YES/’ /etc/vsftpd.conf
啟用 chroot 的功能
# sed -i ‘s/#chroot_list_enable=YES/chroot_list_enable=YES/’ /etc/vsftpd.conf
建立 /etc/vsftpd.chroot_list 設定檔
# touch /etc/vsftpd.chroot_list

讓 root 可以登入
# sed -i ‘s/root/#root/’ /etc/ftpusers

啟動 vsftpd FTP Server
# /etc/init.d/vsftpd start

在防火牆中開啟 vsftpd FTP Server
iptables -A INPUT -i eth0 -p tcp –dport 21 -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp –dport 21 -j ACCEPT

設定 fail2ban 的 ftp 阻擋功能
# vim /etc/fail2ban/jail.conf
[vsftpd]

enabled  = true
port     = ftp,ftp-data,ftps,ftps-data
filter   = vsftpd
logpath  = /var/log/vsftpd.log
# or overwrite it in jails.local to be
# logpath = /var/log/auth.log
# if you want to rely on PAM failed login attempts
# vsftpd’s failregex should match both of those formats
maxretry = 3
bantime  = 86400

重新啟動 fail2ban
# /etc/init.d/fail2ban restart

目前已經有二個阻擋的規則 ssh, vsftpd
# fail2ban-client status
Status
|- Number of jail:      2
`- Jail list:           vsftpd, ssh

可以在 vsftpd 列出有偵測到的連線攻擊
# fail2ban-client status vsftpd
Status for the jail: vsftpd
|- filter
|  |- File list:        /var/log/vsftpd.log
|  |- Currently failed: 0
|  `- Total failed:     0
`- action
   |- Currently banned: 0
   |  `- IP list:
   `- Total banned:     0

在防火牆規則上的規則
# iptables -t filter -L fail2ban-vsftpd -n
Chain fail2ban-vsftpd (1 references)
target     prot opt source               destination
RETURN     all  —  0.0.0.0/0            0.0.0.0/0

BerryBoot 的功能表修改

BerryBoot 的功能表修改
[@more@]
設定成預設開機選項

選擇 Edit 可以修改系統名稱和記憶體分配

按最右邊的 >>

1. Edit config:修改設定檔
2. Clone:系統複製,將一個系統複製另一系統
3. Console:開啟一個終端機
4. Set password:設定密碼
5. Repair file syetem:修復檔案系統

關於 BerryBoot 的多重系統開機

以在 ArchLinux 下操作為例
查看 SD 卡分割區
# fdisk -l

[@more@]建立掛載目錄 /mnt/mmcblk0p2
# mkdir /mnt/mmcblk0p2

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

切換到  /mnt/mmcblk0p2 目錄
# cd /mnt/mmcblk0p2
列出目錄
# ls

images 是放置 Image 的目錄
列出放置 Image 的目錄
從中比較特別的是 ArchLinux 和 Bananian
ArchLinux Desktop 是使用 ArchLinux Server ln -s 來進行連結
Bananian LAMP 和 Bananian LNMP 則是使用 BerryBoot 中的 clone 功能
# ls -l images

data 存放資料的地方
對應到存放 Image 的檔案名稱
# ls -l data

data 目錄下的 default 裡面就是預設開機的選項
# cat data/default

將 Banana Pi 的系統移到比較小的 SD 卡

寫這一篇文章的原因是有人詢問我相關的問題,我實作了一次。主要是在 Banana Pi – 從 SATA 硬碟上的 root 分割區來開機 這一篇文章中,已經將 root 分割區移至 SATA 硬碟上,所以原本使用的 SD 卡容量變不須要用那麼大,可以改用以前不要用的 64 / 128 / 256 / 512M …的記憶卡來開機。
但因為我沒有那麼小的 SD 卡,所以還是用原本的 16G SD 來實作。
這一片 SD 卡,原本是用來做 ArchLinux,有二個分割區
$ sudo fdisk -l /dev/sdb
[@more@]查看一下原本的記憶卡分割區配置狀況
$ sudo fdisk -l /dev/mmcblk0

分割 /dev/sdb,並將二個分割區刪除
$ sudo fdisk /dev/sdb

建立一個主要分割區,本來是要建的和原本一樣,但發現不同廠牌的 SD 卡,Blocks 數計算的起始位置好像不太一樣,所以就將就一些,只要建立分割區,不會比原來的小就可以了!

更改分割區的型別,將第一個分割區型別改成 c  W95 FAT32 (LBA)

輸入 wq 儲存並離開

這一個部分最主要是讓 /dev/sdb1 的分割區可以開機(不確定是否一定要做)

將原本的 /dev/mmcblk0p1 使用 dd 指令複製到 /dev/sdb1
$ sudo dd if=/dev/mmcblk0p1 of=/dev/sdb1

系統關機後,改用製作好的這一片 SD 卡來開機,看是否能正常開機
$ sudo fdisk -l
可以發現原本的 /dev/mmcblk0 只剩下一個用來開機的分割區

磁碟使用狀態
$ df -h

Banana Pi – 從 SATA 硬碟上的 root 分割區來開機

感謝 隨風浮雲 所提供的資訊,參考了 Cortex-A/M: Banana Pi: Boot your rootfs from SATA,把 root 分割區搬移到 SATA 硬碟上。
底下文章的內容,主要參考上述的網站,但比較大的不同是,原文是用整顆的 SSD,我是用筆記型電腦汰換下來的 2.5″inch 120G 硬碟,也只用到其中的一個分割區。
1. 查看硬碟分割區狀況
$ sudo fdisk -l /dev/sda
[@more@]刪掉 3 / 4 / 5 分割區

建立一個主要分割區來放 root 分割區

分割完成的狀態
輸入 wq 儲存並離開

格式化 /dev/sda3 分割區為 ext4 格式
$ sudo mkfs.ext4 /dev/sda3

建立 /tmp/1 和 /tmp/target 用來掛載的目錄
$ sudo mkdir /tmp/1 /tmp/target
/dev/mmcblk0p2 分割區掛載到 /tmp/1
$ sudo mount /dev/mmcblk0p2 /tmp/1
/dev/sda3 分割區掛載到 /tmp/target
$ sudo mount /dev/sda3 /tmp/target
切換到 /tmp/1 目錄
$ cd /tmp/1
/dev/mmcblk0p2 複製到 /dev/sda3
$ sudo tar –backup -c * | sudo tar -C /tmp/target -xv

複製中……

經過漫長的時間,終於完成了!

修改 /dev/mmcblk0p1 的 uEnv.txt 設定檔,讓系統從 /dv/sda3 的分割區啟動
建立掛載 /dev/mmcblk0p1 分割區的目錄 /tmp/boot
$ sudo mkdir /tmp/boot
掛載 /dev/mmcblk0p1 分割區到  /tmp/boot 目錄
$ sudo mount /dev/mmcblk0p1 /tmp/boot
修改設定
$ sudo sed -i ‘s|root=/dev/mmcblk0p2|root=/dev/sda3|’ /tmp/boot/uEnv.txt

最後善後工作
切換回使用者家目錄
$ cd
取消掛載之前掛載的分割區 /tmp/1 /tmp/target /tmp/boot
$ sudo umount /tmp/1 /tmp/target /tmp/boot
刪除臨時掛載的目錄 /tmp/1 /tmp/target /tmp/boot
$ sudo rm -rf /tmp/1 /tmp/target /tmp/boot
重新開機讓設定生效
$ sync;sync;sync;reboot

從 SATA 硬碟上的 root 分割區來開機,速度會快嗎?照理來說,應該是會,但我的硬碟的舊的,所以感受不太出來,也許換成 SSD,就可以很有感了!

下載給 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