prettyprint

2022年8月18日 星期四

FreeBSD 13.1 透過手機連線網際網路(FreeBSD 13.1 Internet Access via Cell Phone)

  當處在沒為可上網的區域網路時,可利用手機透過電信網路連線網際網路。 本篇文章實做以FreeBSD 13.1 利用手機的USB網路共用(USB Tethering)、藍芽網路共用(Bluetooth Tethering)、與Wi-Fi熱點(Wi-Fi hot spot) 接取網際網路。



一、USB網路共用(USB Tethering):

  1. 使用Android手機時載入if_urndis:
    # kldload if_urndis

  2. 使用iPhone手機時載入if_ipheth:
    # lkdload if_ipheth

  3. 手機開啟USB網路共用


  4. FreeBSD就會新增一個ue0的網路介面

  5. 利用dhclient取得ip等網路設定
    # dhclient ue0

詳細步驟可參閱底下影片介紹

二、藍芽網路共用(Bluetooth Tethering):

  1. FreeBDS藍芽是架構在netgraph下,以指令dmesg查看是否有支援的驅動程式:
    # dmesg | grep ubt

  2. 啟用藍芽:
    # service bluetooth start ubt0
    若出現錯誤,再啟用一次即可。

  3. 有關Bluetooth device 設定檔存放在
    /etc/defaults/bluetooth.device.conf
    個別的device要覆寫default設定,更改檔案建立在/etc/bluetooth/<device_name>.conf中,例如/etc/bluetooth/ubt0.conf。像是需不需要配對驗證,可不可以被查詢名稱(inquiry, discoverable等)。

  4. 執行hcsecd或在/etc/rc.conf中設置hcsecd_enable="YES",負責藍芽配對,相對設定檔存在/etc/bluetooth/hcsecd.conf。

  5. 以bluetooth-config scan 掃描可連線的藍芽設備,此指令可配對藍芽外並將修改/etc/bluetooth/hosts與/etc/bluetooth/hcsecd.conf檔案。
    /etc/bluetooth/hosts存放bluetooth address與自訂名稱對應。
    /etc/bluetooth/hcsecd.conf存放配對PIN資料。


  6. 查看手機的藍芽是否支援NAP(Network Access Point) Service class:
    指令為sdpcontrol -a device browser or  sdpcontrol -a device search 0x1116
    0x1116為bluetooth NAP service class UUID
    # sdpcontrol -a iPhone search 0x1116

  7. 手機開啟藍芽網路共用:


  8. 使用btpand指令連線藍芽:
    # btpand -d device -a address -s NAP -i tap0

  9. 取得ip等相關網路設定
    dhclient tap0

三、Wi-Fi熱點(Wi-Fi hotspot):

  1. 手機開啟Wi-Fi hotspot,設定ssid, password
  2. FreeBSD 啟用Wi-Fi。
  3. 在/etc/wpa_supplicant.conf設定連線ssid與psk:



詳細設定過程請參閱下列影片連結:




2022年8月15日 星期一

FreeBSD 13.1 & LightDM & Multi Desktop Environment

在FreeBSD上同時安裝多的桌面環境,像MATE、XFCE、KDE5等, 使用LightDM display manager即可輕鬆隨時切換登入任何一個桌面環境。


安裝過程

  1. 系統基本安裝
  2. 安裝pkg
    # pkg update

  3. 安裝xorg
    # pkg install -y xorg

  4. 同時安裝MATE、XFCE、KDE5等桌面環境
    # pkg install -y mate xfce kde5

  5. 安裝lightdm, lightdm-gtk-greeter
    # pkg install lightdm lightdm-gtk-greeter

  6. 啟動設定: /etc/rc.conf
    # sysrc dbus_enable="YES"
    # sysrc lightdm_enable="YES"
安裝完成重新啟動即可選擇登入任一桌面

詳細過程成請參閱下列網址:


2022年8月3日 星期三

FreeBSD 13.1 auto mount: Builtin automount vs. Ports automount vs. Desktop automount

本篇文章探討FreeBSD 3.1 USB device auto mount功能,比較系統內建的automount(/usr/sbin/automount)、Port的automount(/usr/local/sbin/automount) 與各種Desktop環境的auto mount功能。



一、系統內建的automount(/usr/sbin/automount):

設定FreeBSD自動掛載USB Device步驟.

  1. 若須使用NTFS檔案系統,須先安裝fusefs-ntfs package
    # pkg install fusefs-ntfs

  2. 建立/etc/devfs.rules:加入
    [localrules=10]
    add path 'da*' mode 0660 group operator

    說明:設定device的onwer與permission,系統內的使用了ruleset number為1-5,自訂的為5以上,相同的number會覆蓋。

  3. 在/etc/rc.conf加入ruleset:
    devfs_system_ruleset="localrules"

    說明:加入user自訂的ruleset

  4. 在/etc/sysctl.conf 加入
    vfs.usermount=1

    說明:允許non-root user可mount device

  5. 在/etc/auto_master 啟用
    /media      -media       -nosuid

    說明:自動掛載在/media路徑下。

  6. 檢查/etc/devd.conf是否包含下列設定
    notify 100 {
         match "system" "GEOM";
         match "subsystem" "DEV";
         action "/usr/sbin/automount -c";
    };

    說明:內定的上述一段notify為放置在註解內,可複製註解外。

  7. 啟用autofs: 在/etc/rc.conf加入:
    autofs_enable="YES"
    sysrc kld_list+=fusefs

    說明:開機後自動啟用autofs與fusefs
經過上述設定後,只要插入USB device就會偵測到,一般使用不需要mount device即可使用,內定掛載在/media下,透過
$ ls -l /media
即可知道掛載的devices,但是一般使用者沒有權限umount device。詳細過程請觀看下列影片展示:


二、安裝port的automount:

有關的port說明請參閱:https://github.com/vermaden/automount/ 。

  1. 支援:
    NTFS/MSDOS/exFAT/EXT2/EXT3/EXT4/UFS/XFS/HFS/MTP/ISO9660
    自動安裝:
    
    automount: 1.7.8
           e2fsprogs: 1.46.5_1        e2fsprogs-libblkid: 1.46.5        e2fsprogs-libuuid: 1.46.5        fusefs-ext2: 0.0.10_3        fusefs-libs: 2.9.9_2        fusefs-ntfs: 2022.5.17        libublio: 20070103_3
  2. 相關設定檔:
    👉/usr/local/etc/automount.conf: 
    可設定:
    USERUMOUNT='YES'
    MNT_PREFIX='/media'
    group='operator'
    FAT_ENCODING=
    FAT_CODEPAGE=
    ATIME='YES'
    RETRY_COUNT='1'
    NOTIFY='YES'
    REMOVEDIRS=NO
    NICENAMES=YES
    IGNORE_SYS_PARTS=YES


    👉/usr/local/etc/devd/automount_devd.conf
    說明:會自動安裝此檔案,處理devd notify

  3. 當automount設定:USERMOUNT=YES時,會執行"chmod +s /sbin/umount",non-root user也可umount device。
  4. 使用port automount時須將原來的autofs_enable, /etc/auto_master,與在/etc/devd.conf中的notify設定取消。
  5. /etc/devfs.rules設定仍須一需要設定。
詳細步驟與展示請參閱下列影片片段:


三、各種Desktop(MATE, XFCE, KDE)的automount:

上述兩種方式均未安裝任何Desktop環境自動掛載USB Device,下列影片片段展示安裝port auotmount在MATE, Xfce, KDE下,在桌面環境的運作。
另外在KDE桌面環境下對於usb device自動掛載以內附在桌面系統中,無須再安裝automount(Builtin or port),就有完善整合的運作,請參閱下列影片片段展示。



2022年8月2日 星期二

Integrate FreeBSD NIS and NFS servers for Ubuntu Desktop and FreeBSD Desktop Clients(using ZFS)

本文文章記錄使用FreeBSD 13.1 當作NIS(Network Information System) 和使用ZFS檔案系統的NFS(Network File System) Server提供給FreeBSD或其他Non-FreeBSD系統用戶端使用。

目標:

  1. 建立NIS server,提供區網內(FreeBSD or Non-FreeBSD)帳號驗證與hostname對應。
  2. 用戶端home directory放在NFS server上,達到使用者漫遊目的。
  3. ZFS server提供共同儲存空間,透過ACL控制存取權限,達到分類控管。 
一、安裝過程
實驗架構如下圖

🌱FreeBSD NIS Server:
    FreeBSD  的 NIS 是內建的,因此只要設定啟用即可:
  1. /etc/rc.conf:
    nisdomainname="nis-nfs.local"
    nis_server_enable="YES"
    nis_yppasswdd_enable="YES"
    nis_yppasswdd_flags="-i -u -a"


    說明: nisdomainname可任意設定,但為了讓其他Non-FreeBSD Client,可設定為Internet Domain Name。
    啟用rpc.yppasswd讓使用著可以更改password
    nis_yppasswdd_flags額外設定讓ubuntu client可順利執行yppasswd

  2. 建立NIS maps(NIS 資料庫):

    FreeBSD NIS Client查詢NIS map為/var/yp/nis-nfs.local/master.passwd.byname,Ubuntu NIS Clinet 查詢的是/var/yp/nis-nfs.local/passwd.byname,因此
    FreeBSD NIS server for Non-FreeBSD NIS Client:
    👉/var/yp/Makefile: uncomment UNSECURE = "True", and then 
    執行指令,建立NIS maps:
       建立空的/var/yp/mster.passwd:
               touch /var/yp/master.passwd
               chmod 600 /var/yp/master.passwd
        ypinit -m nis-domainname

    password.byname, password.byid 才會提供加密密碼
    (為提供加密的passwd.byname or password.byid)
    使用pw指令建立NIS user maps
    pw useradd <username> -u uid -c "user name" -d /nfshome/<username> -M 700 -y /var/yp/master.passwd -Y -m  -w yes
    同時建立NIS user與nfs user directory

  3. /etc/hosts: 
    192.168.1.71  nfs   nfs.nis-nfs.local
    192.168.1.72  nis   nis.nis-nfs.local

    其他Clinet即可透過maps中的hosts.byname即可使用此設定
  4. /var/yp/securenets加入可存取限制
    #此行一定樣加入
    127.0.0.1    255.255.255.255
    #其他
    192.168.1.0    255.255.255.0   

🌱詳細步驟可參閱文末影片連結:

🌱FreeBSD NIS Client:
  • /etc/rc.conf:
    nisdomainname="nis-nfs.local"
    nis_client_enable="YES"
  • /etc/master.passwd: 在最後加入
    +:::::::::
  • /etc/group: 在最後加入
    +:*::
🌱Ubuntu NIS Client:
  • 安裝NIS套件:
    sudo apt install ypbind-mt nis
  • /etc/passwd、/etc/group、/etc/shadow、/etc/gshadow等檔案 最後加入一行
    +
  • /etc/nsswitch.conf: 更改加入紅色框部分

  • /etc/hosts: 加入nis hostname
    192.168.1.72   nis   nis.nis-nfs.local
    指加上一行即可,其他可由NIS server /etc/hosts(/var/yp/nis-nfs.local/hosts.byname取的定義
  • /etc/yp.conf加入
    domain nis-nfs.local  server nis.nis-nfs.local
  • 執行ypdomainname設定domainname:
    ypdomainname nis-nfs.local
  • /etc/defaultdomain:
  • nis-nfs.local
  • 執行
    sudo systemctl enable ypbind
    在系統啟用時即啟用NIS client ypbind

🌱FreeBSD NFS Server設定:
✅啟用FreeBSD NFS Server功能:
  1. /etc/rc.conf:
    rpcbind_enable="YES"
    nfs_server_enable="YES"
    mountd_enable="YES"

    rpc_lockd_enable="YES"  # 有些應用程式需要lock
    rpc_statd_enable="YES"

  2. /etc/exports:
    設定分享的目錄,例如: "/usr/src -ro -network 192.168.1.0/24"
    但是以ZFS dataset為NFS share directory時改用設定 zfs set sharenfs property,不用再/etc/exports設定,會自動在/etc/zfs/exports中加入設定。例如,分享兩個dataset,一個做為users的home directory,讓user可在不同機器間漫遊。另外一個dataset作為共用資料夾,並透過ACL設定存取權限。

    zfs set sharenfs="-alldirs -maproot=root -network 192.168.1.0/24" datastor/nfshome

    zfs set sharenfs="alldirs -network 192.168.1.0/24" datastor/sharedir
✅啟用FreeBSD NFS client功能:
  1. /etc/rc.conf:
    nfs_client_enable="YES"

  2. /etc/fstab: 
    192.168.1.71:/datastor/nfshome   /nsfhome   nfs  rw  0  0


    讓系統啟用及mount nfs home directory

✅啟用Ubuntu NFS client功能:
  1. 安裝套件:
    sudo apt install zfs-common

  2. /etc/fstab:
    192.168.1.71:/datastor/nfshome   /nsfhome   nfs  rw  0  0
🏀安裝過程與實際測試展示請觀看下列影片:



2022年7月19日 星期二

FreeBSD 13.1 as a host with VirtualBox 6.1.34 and phpVirtualBox 6.1 step by step installation

在FreeBSD 13.1上安裝VirtualBox 6.1.34當Host機用,並安裝phpvirtualbox web管理介面。在安裝過程中遇到一些問題,將一步一步安裝過程與遇到問題解決方法記錄下來。

✅完整安裝過程影片:

一、安裝VirtualBox 6.1.34
安裝方式可用FreeBSD 預先編譯好的packages最為方便

# pkg install virturalbox-ose

一行指令即可安裝好,亦會安裝相關的package,如下圖。

安裝virtualbox-ose-kmod後,在/boot/modules下有三個相關的vboxdrv。但是vboxdrv卻是FreeBSD 13.0的版本。因此無法載入使用。

解決方法,只好使用FreeBSD port安裝,若在安裝FreeBSD OS時未安裝port與src,就先需安裝

  1. 安裝port:
    # portsnap fetch
    # portsnap extract
  2. 安裝src
    先安裝 svn:
    # pkg install subversion
    再下載 /usr/src: 
    # svn checkout https://svn.FreeBSD.org/base/head /usr/src
  3. 安裝virtualbox-ose-kmod
    # cd /usr/ports/emulators/virtualbox-ose-kmod
    # make install
  4. 安裝virtualbox-ose
    # cd /usr/local/emulators/virtuslbox-ose
    #make install
這樣就能安裝完成,但是build過程會花很長的時間,需耐心等待。相關過程可參閱下列影片片段:https://www.youtube.com/watch?v=2bD2QvutYkQ&t=54s

其他相關設定:
  1. /boot/loader.conf: vboxdrv_load="YES"
  2. /etc/rc.conf: vboxnet_enable="YES"
  3. # pw groupmod vboxusers -m vbox
    新增vbox user可使用VirtualBox
  4. 更改/dev/vboxnetctl owner與permisssion
    # chown root:vboxusers /dev/vboxnetctl
    # chmod 0660 /dev/vboxnetctl
  5. /etc/devfs.conf:
    own vboxnetctl root:vboxusers
    perm vboxnetctl 0660

二、安裝phpvirtualbox網頁介面管理程式

若不需要在FreeBSD Server端執行VirtualBox,亦可只安裝virtualbox-ose-nox11,無論virtualbox-ose或virtualbox-ose-nox11均會安裝vboxwebsrv服務。
  1. 安裝web server程式:
    使用lighttpd或其他web server均可
    # pkg install lighttpd
  2. 安裝 phpvirtualbox
    # pkg install phpvirtualbox
設定相關configuration檔案
✅lighttpd相關檔案
  1. lighttpd.conf:
    document root位置: /usr/local/www/data



  2. modules.conf

  3. conf.d/fastcgi.conf
✅phpvirtualbox相關檔案
  1. 將phpvirtualbox目錄移到/usr/local/www/data下
  2. /etc/rc.conf
    vboxwebsrv_user需與phpvirtualbox/config.php中的user一致
  3. config.php
    location 須改為http://localhost:18083,因為18083只有在tcp6,因此指定ipv4的127.0.0.1會無法連線。


    vrdeaddress改成實際的ip

    consoleHost改成實際的ip

✅phpvirtualbox相關問題解決:
  1. 預設英文語言錯誤:
    預設語言'en',會造成錯誤,直接將languages/source目錄下的en.dat移除或更名即可,其他語言不會有問題。

  2. 無法瀏覽選取安裝的iso檔案
    修改/usr/local/www/phpvirtualbox/endpoints/jqueryFileTree.php
    參閱下列影片片段:https://www.youtube.com/watch?v=2bD2QvutYkQ&t=834s
    function getdir($dir, $dirsOnly=false, $recurse=array()) {
    
          global $allowed_exts; // 新加入
    
    .

    .

    .

    $ext = strtolower(preg_replace('/^.*\./', '', $path));
    if(is_array($allowed_exts) && count($allowed_exts) && !$allowed_exts['.'.$ext]) continue; //約在256行更改紅色部分
  3. VirtualBox extensions未支援FreeBSD
        

遠端桌面只好搭配VNC,可參閱下列影片片段:https://www.youtube.com/watch?v=2bD2QvutYkQ&t=1140s


2022年6月23日 星期四

在Raspberry Pi 3B+安裝FreeBSD 13.1 並實作WiFi Client/Access Point/Wireless Router等功能

     本實驗在Raspberry Pi 3B+硬體上安裝FreeeBSD 13.1系統,用來實現並測試當作WiFi Client 、 Access Point(AP)與Wireless Router的功能,三種模式如下圖所示:




因為FreeBSD尚未支援Raspberry Pi內建無線網卡的Driver,所以本次實驗以外加一片usb網卡(TP-Link TL-WN725N)來測試。

👉安裝FreeBSD 13.1系統在Raspberry Pi 3B+上

從FreeBSD官網下載image檔案:FreeBSD-13.1-RELEASE-arm64-aarch64-RPI.img.xz

下載Raspberry Pi Imager(https://downloads.raspberrypi.org/imager/imager_latest.exe)燒錄FreeBSD image到SD(註1)上,過程可參閱文末成果影片連結。

FreeBSD使用Raspberry Pi硬體,螢幕輸出的介面有兩種: primary為TTL Serial, Secondary 為Vodeo(HDMI介面),本實驗使用USB-UART介面接到筆電的USB上,開啟PuTTY Serial Port,如下圖,Raspberry Pi pinout可參閱https://pinout.xyz/。[RPI: Gnd(6), TX(8), RX(10)]

  • 系統root內定的password為root

本實驗使用的TP-Link TL-WN725N在FreeBSD下的driver 為rtwn,使用指令dmesg查閱,如下圖所示:

但使用內定參數實測後,網路存取速度異常慢,調整設定,載入kdlload wlan_amrr模組或設定dev.rtwn.0.ratectl=0,即可獲得良好的網路存取速度,可在/boot/loader.conf設定如下:
dev.rtwn.0.ratectl=0
wlan_amrr_load="YES"


👉設定成為WiFi Client使用:

  • 在/etc/rc.conf設定
wlans_rtwn0="wlan0"
ifconfig_wlan0="WPA SYNCDHCP"
create_args_wlan0="country TW"

  • 增設/etc/wpa_supplicant.conf檔案,內容填入
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
        ssid="your ssid"
scan_ssid=1
key_mgmt=WPA-PSK
psk="your passwd"
}
更改正確的ssid與psk
重新啟用系統後即可連至WiFi網路


👉設定成為Access Point(Bridge)使用:
Raspberry Pi wifi介面改成hostap mode,再將有線網路介面ue0與無線網路介面wlan0,加入到bridge members中。如上圖,終端無線設備(手機、筆電等)連到 Raspberry Pi AP後,即可將無線網路橋接到ISP Router連到Internet。終端無線設備屬於同一個網段,本實驗的例子為192.168.1.0/24。
  • 在/etc/rc.conf設定如下
#WLAN hostap mode
wlans_rtwn0="wlan0"
create_args_wlan0="wlanmode hostap -apbridge country TW"
hostapd_enable="YES"
# create a bridge
cloned_interfaces="bridge0"
ifconfig_bridge0="inet 192.168.1.61/24 addm ue0 addm wlan0 up"
ifconfig_ue0="up"
ifconfig_wlan0="up"
#enable geteway(net.inet.ip.forwarding)
gateway_enable="YES"

  • 在/etc/hostapd.conf下設定如下
interface=wlan0
debug=1
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel
ssid=myAP_SSID                       #==>改成你的SSID
wpa=2
wpa_passphrase=PassW0rd      #==>改成你的passphrase
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP

重新啟用系統Raspberry Pi即成為無線網路的Access Point。
但在系統重新啟動後,並無法正常使用,bridge0並未將ue0與wlan0加入bridge0的members中。
以dmesg查看driver啟用順序,發現bridge0先啟用後,ue0與wlan0再啟用,推測因此bridge0才無法把加入ue0與wlan0正確加入到bridge0的members中。
以netstat -r 查看 route table並未正確產生

因此把bridge0建立時間延後到啟用local daemon時,再來create bridge並加入ue0與wlan0到members中,步驟如下:
  1. 取消/etc/rc.conf中的下面兩行
    cloned_interfaces="bridge0"
    ifconfig_bridge0="inet 192.168.1.61/24 addm ue0 addm wlan0 up"
  2. 在/etc/rc.local加入
    #!/bin/sh
    br=`ifconfig bridge create`
    ifconfig $br addm ue0 addm wlan0
    dhclient $br
修改後重啟系統即可正常使用AP功能了。

👉設定成為Wireless Router使用:
設定為router模式時,WiFi與有線LAN分別屬於不同網段,因此Raspberry Pi須具備路由器功能。如上圖所示,有線的LAN連接ISP Router為192.168.1.0/24,無線網路為10.10.200.0/24,Raspberry Pi Router無線網路介面設定IP為10.10.200.1。所以Raspberry Pi上需增加NAT(Firewall)、DHCP server與DNS server等功能(DNS server為選項)。
設定步驟如下:

➤DHCP Server使用isc-dhcp時:

執行指令
pkg install -y isc-dhcp44-server
加入hdcp server功能,啟用方式

  1. 在/etc/rc.conf中加入
    dhcpd_enable="YES"
    dhcpd_flags="-q"
    dhcpd_conf="/usr/local/etc/dhcpd.conf"
    dhcpd_ifaces="wlan0"
    dhcpd_withumask="022"
  2. 在/usr/local/etc/dhcpd.conf中加入
    option domain-name "mytest.org";
    default-lease-time 60;
    max-lease-time 72;
    # A slightly different configuration for an internal subnet.
     subnet 10.10.200.0 netmask 255.255.255.0 {
            range 10.10.200.10 10.10.200.20;
            option domain-name-servers 192.168.1.1;
            option routers 10.10.200.1;
            default-lease-time 600;
            max-lease-time 7200;
    }

➤DHCP Server使用dnsmasq時:

執行指令
pkg install -y dnsmasq
  1. 在/etc/rc.conf中加入
    dnsmasq_enable="YES"
  2. 在/usr/local/etc/dnsmasq.conf中加入
    interface=wlan0
    dhcp-range=10.10.200.90,10.10.200.100,255.255.255.0,24h

➤啟用Firewall(NAT)與hostap等功能:

本實驗使用IPFW與IN-Kernel NAT
  • 在/etc/rc.conf設定如下(使用dnsmasq)
ifconfig_ue0="DHCP"
#WLAN WiFi hostap
wlans_rtwn0="wlan0"
create_args_wlan0="wlanmode hostap -apbridge country TW"
ifconfig_wlan0="inet 10.10.200.1 netmask 255.255.255.0"
hostapd_enable="YES"

ifconfig_ue0="up"
ifconfig_wlan0="up"

#Filrewall and NAT enable
firewall_enable="YES"
firewall_nat_enable="YES"
firewall_script="/etc/ipfw.rules"
gateway_enable="YES"

dnsmasq_enable="YES"

  • 在/etc/ipfw.rules下設定如下:

ipfw -q -f flush
cmd="ipfw -q add"
skip="skipto 1000"
pif=ue0
wif=wlan0
ks="keep-state"
good_tcpo="22,25,37,53,80,443,110"
ipfw disable one_pass
ipfw -q nat 1 config if $pif same_ports unreg_only reset
$cmd 005 allow all from any to any via $wif
$cmd 010 allow all from any to any via lo0 # exclude loopback traffic
$cmd 099 reass all from any to any in # reassemble inbound packets
$cmd 100 nat 1 ip from any to any in via $pif # NAT any inbound packets
# Allow the packet through if it has an existing entry in the dynamic rules table
$cmd 101 check-state
# Authorized outbound packets
$cmd 200 $skip tcp from any to any $good_tcpo out via $pif setup $ks
$cmd 210 $skip udp from any to any 53 out via $pif $ks
$cmd 220 $skip icmp from any to any out via $pif $ks
# allow all outbound
$cmd 230 $skip tcp from any to any out via $pif setup $ks
#Authorized inbound packets
$cmd 500 allow icmp from any to me via $pif
$cmd 501 allow tcp from any to me 22 via $pif setup $ks
# otherwise deny
$cmd 999 deny log all from any to any
$cmd 1000 nat 1 ip from any to any out via $pif # skipto location for outbound stateful rules
$cmd 1001 allow ip from any to any

詳細過程可觀看下列影片:




註1:

本次實驗使用不同SD卡安裝系統,若讀者發現系統DISK IO異常,也許可換不同廠牌SD卡試試看。


2022年6月9日 星期四

FreeBSD 13.1 GNOME、KDE5和Xfce中文桌面環境安裝

 FreeBSD桌面環境常用的有GNOME、KDE和Xfce。本文著重介紹在中文環境的安裝。

壹、FreeBSD 13.1基本安裝:

安裝過程主要使用內定值,其他特別事項如下說明:

  • 若不選擇安裝ports,則以後可使用portsnap fetch / portsnap extract指令安裝

  • 可安裝在ZFS partition或是一般的UFS partition
  • 使用ZFS可選用不同等級的 redundancy 增加系統可靠度
  • 開啟自動網路校時
  • 新增一位使用者 group 為wheel,可執行su指令成為root身分。

貳、安裝桌面環境

一、安裝共同部分:

  1. 安裝xorg,以pkg指令安裝
    pkg install -y xorg
  2. 安裝中文字型,使用ports安裝
    cd /usr/ports/chinese/CNS11643-font
    make install clean

二、安裝桌面環境:選擇一種安裝

  1. GNOME:
    執行:pkg install gnome
    在/etc/rc.conf加入以下各行,讓系統啟動後直接進入桌面環境
    dbus_enable="YES"
    hald_enable="YES"
    gdm_enable="YES"
    gnome_enable="YES"


  2. KDE5:
    執行:pkg install kde5,安裝完整KDE 或 執行: pkg install plasma5-desktop安裝精簡版的KDE
    執行: pkd install sddm, 安裝桌面登入管理
    在/etc/rc.conf加入以下各行,讓系統啟動後直接進入桌面環境
    dbus_enable="YES"
    hald_enable="YES"
    sddm_enable="YES
    "

  3. Xfce:
    執行:pkg install xfce
    執行: pkd install slim, 安裝桌面登入管理
    執行: echo ". /usr/local/etc/xdg/xfce4/xinitrc" > ~/.xinitrc
    在/etc/rc.conf加入以下各行讓系統啟動後直接進入桌面環境
    dbus_enable="YES"
    hald_enable="YES"
    slim_enable="YES"

三、桌面環境中文介面:

重新啟動系統後即可自動進入桌面環境登入介面,登入後啟用終端機程式,安裝ibus中文輸入法
執行:pkg install -y zh-ibus-chewing(注音)或 pkg install -y zh-ibus-canglie(倉頡)
接著設定中文環境
  • GNOME:
進入settings的region & language設定中文並無法更改中文介面,直接更改
/usr/local/etc/gdm/locale.conf檔案內容
LANG="zh_TW.UTF-8"
LC_CTYPE="zh_TW.UTF-8"
LC_MESSAGES="zh_TW.UTF-8"
LC_ALL="zh_TW.UTF-8"

詳細過程可參閱以下影片:



  • KDE5:
在settings region/language 下選擇中文,並且在
.profile檔案下加入以下設定,才能正常啟用輸入法:
~/.profile
XIM=ibus; export XIM
GTK_IM_MODULE=ibus; export GTK_IM_MODULE
QT_IM_MODULE=ibus; export QT_IM_MODULE
XMODIFIERS=@im=ibus; export XMODIFIERS
XIM_PROGRAM="ibus-daemon"; export XIM_PROGRAM
XIM_ARGS="--daemonize --xim"; export XIM_ARGS

詳細過程可參閱以下影片:


  • Xfce:
在~/.xinitrc檔案下加入下列設定以啟用中文與輸入法:
XIM=ibus; export XIM
GTK_IM_MODULE=ibus; export GTK_IM_MODULE
QT_IM_MODULE=ibus; export QT_IM_MODULE
XMODIFIERS="@im=ibus"; export XMODIFIERS
XIM_PROGRAM="ibus-daemon"; export XIM_PROGRAM
XIM_ARGS="--daemonize --xim"; export XIM_ARGS

LANG="zh_TW.UTF-8"; export LANG
LC_CTYPE="zh_TW.UTF-8"; export LC_CTYPE
LC_MESSAGES="zh_TW.UTF-8"; export LC_MESSAGES
LC_ALL="zh_TW.UTF-8"; export LC_ALL

exec startxfce4

===============
xfce音效輸出設定
執行:
pkg install -y xfce4-pulseaudio-plugin
pkg install -y xfce4-volumed-pulse
== /etc/rc.conf加入
sound_load="YES"
snd_hda_load="YES"
=============
詳細過程可參閱以下影片: