5 分鐘快速上手 Linux tmux 終端機分割畫面指令

用 Terminal 在多視窗切換,不免俗的提到 screen 指令,
因為 screen 指令在 Red Hat RHEL 中把它 deprecated 掉了
所以改學一下 tmux 指令,如果學過 screen 指令的話,可以 5 分鐘快速上手
但可能要背一下指令,因為指令 操作 & 快捷鍵 略為不同

tmux 它比 screen 更強,值得一學

安裝

這邊分成五個系統講

Red hat 系列的 Linux (RHEL / Rocky Linux) 使用 yum 指令

$ yum install -y tmux

Debian / Ubuntu 系列的 Linux 使用 apt 指令

$ apt install -y tmux

Alpine Linux 用對應的 apk 指令

$ apk add -y tmux

最後 macOS 使用 homebrew 來裝

$ brew install -y tmux

如果你要極致一點,連在 Android 裡面的 Termux app 也要用的話

$ pkg install -y tmux

基本操作

打入 tmux 之後
底下會出現一個綠色的 bar 就成功進入指令了

tmux 的起頭快捷鍵都是 ctrl + b,等等會慢慢介紹

分割視窗

水平分割視窗

ctrl + b + %

(百分比符號 % 有 shift 記得要按)

垂直分割視窗

ctrl + b + "

(雙引號 " 有 shift 記得要按)

然後分割視窗了之後用

ctrl + b + 方向鍵

可以自由切換各個正在使用的視窗

detach (暫時卸離) / attach (重新接回)

detach / attach 這個我不知道中文叫什麼
暫且翻譯成 detach (暫時卸離) 跟 attach (重新接回) 好了

ctrl + b + d

就會把整組視窗 detach
暫時卸離,暫丟在背景,綠色 bar 消失

再次打 tmux 指令之後,你會發現又起了一個新的 session
你可以打點東西區分其不同

再次按 ctrl + b + d

detach 暫丟在背景

(如果是使用 screen 指令的朋友,它的作用跟 ctrl + a + d 是一樣的)

這時背景有二個 session

tmux ls 指令查看所有 session

$ tmux ls

(如果是使用 screen 指令的朋友,它的作用跟 screen -r 是一樣的)

用以下指令接回第一個 session

$ tmux attach-session -t 0

指令太長不好打,通常會縮寫變成

tmux a -t 0  

數字請自行變通,
接回第二個 session 就是 tmux a -t 1 以此類推

(如果是使用 screen 指令的朋友,它的作用跟 screen -r 數字 是一樣的)

關閉當前視窗 (window) 或 面板 (pane)

最後關閉當前的視窗 (window) / 面板 (pane)
可以用萬用的快捷鍵

ctrl + d

或者 exit 指令

$ exit

離開或者登出

基礎就這樣子,如果想要更華麗更完整的點的話可以繼續看

其他補充

tmux 它其實有 session / window / pane 的概念

tmux 剛執行的時候會建立一個 session,建立一個 window
執行分割畫面之後,變成一個 window 二個 pane

你可以用

ctrl + b + w

打開視窗預覽頁,切來切去

其他可以參考 tmux 的 cheat sheet 有更完整的用法

參考資料

Docker image 映像檔的匯入與匯出:容器化離線部署的關鍵步驟

Docker 是一個 Open source 的容器化平台,可以輕鬆地打包、部署和運行你的應用程式。
Docker image (映像檔) 是該平台重要元件,它是一個輕量級、可執行、可快速打包的軟體包,不只是應用程式所需的執行檔,還包含運作環境和環境設定。

因為一些特殊需求,需要離線安裝 (offline install) 或者是有些時候你可能沒有一個可以使用私有 docker registry,
你可能會需要這些指令,因有常常忘記故筆記一下。

docker image 匯出

首先,先列出有什麼 images

$ docker image ls

這指令會列出所有你曾經用過的 images

找到你要的 images

然後用 docker save 來匯出 image

$ docker save myimage:latest | gzip > myimage_latest.tar.gz

docker image 匯入

在別台機器,使用 docker load 來匯入 image

docker load --input myimage_latest.tar.gz

備註:官方文件有說 docker load 除了可以直接輸入

  • *.tar 打包檔案(未壓縮)
  • *.tar.gz 壓縮檔案( gzip 壓縮格式)
  • *.tar.bz2 壓縮檔案( bzip2 壓縮格式)
  • *.tar.xz 壓縮檔案( xz 壓縮格式)

當然還是建議放在類似 Docker hub 這樣的 registry 比較好,
如果 docker hub 私有 registry 方案不符合需求,
三大雲端也有提供對應的服務,
有地端 (on-premise) 伺服器自建 docker registry 的方式
不過這個就是另外一個故事了

另外, Kubernetes (k8s) 就非常不建議用匯出匯入這種方式來做,
因為它是叢集自動部署的,你不知道它每次會部署在哪一台機器(除非你有特別指定),
如果你要做類似這樣匯入匯出,你需要在每一個 Node 都做匯出匯入,曠日費時,
建議還是架一個 docker registry 比較理想。

參考資料

Linux Server 伺服器建置筆記 (用 Ubuntu 設定基礎網路 & SSH伺服器)

這邊整理了一些手動 Linux server 伺服器安裝,需注意的一些事情與指令。
備忘一下以備不時之需。
(如果是設定雲端主機的話,部分步驟可以跳過,它預設都幫你建好了。)

製作可開機 USB (Bootable USB)

使用 UNetbootin 軟體

軟體下載:https://unetbootin.github.io/

選擇 USB drive,選擇 ISO 就可以了
針對目標機器做開機。

Mac 系統的話,可以使用 Etcher
軟體下載:https://www.balena.io/etcher/

做法差不多


選擇作業系統:

  • Debian 系列:可選擇 Ubuntu, Debian
  • RedHat 系列:可選擇 RHEL, CentOS, Fedora
  • BSD 系列:可選擇 FreeBSD
  • SUSE 系列:可選擇 OpenSUSE

前二項是筆者較為熟悉的,推薦 Ubuntu, Debian, CentOS 做為選項。

ISO 的版本很多:

  • Desktop ISO:有一個完整的 Live CD 可供試用
  • Server ISO:有預載一些伺服器使用的套件
  • Minimal ISO:只是檔案小,預設網路驅動了之後,大多都從網路上抓

不知怎麼選擇的話,預設就選 Desktop ISO
(以下撰文用 ubuntu 做示範)

網路指令相關

這邊列出常用的網路指令,如果網路不通的事情,當然要優先處理。

列出網路介面與 IP 位址

$ ip a
$ ip addr show
$ ifconfig

這幾個指令都可以,輸出格式稍有不同。

列出路由閘道 Gateway 設定

$ route -n

設定網路連線資訊

這邊介紹一個新東西:netplan
網路對它介紹不多,但個人覺得非常可以取代目前網路設定不方便的窘境。

假設你要設定的網路連線資訊如下:

  • 目標介面: eth0

  • IP 位址 (IP Address): 192.168.10.200

  • 子網路遮罩 (Netmask): 255.255.255.0 (/24)

  • 網路閘道 (Gateway): 192.168.10.1

  • 主要 DNS 為 8.8.8.8

  • 次要 DNS 為 168.95.1.1

(請根據你的自身環境修改,這裡只是舉例)

只要找到 /etc/netplan/01-netcfg.yaml 這個檔案並編輯

$ sudo vi /etc/netplan/01-netcfg.yaml

修改成類似以下內容:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses: [192.168.10.200/24]
      gateway4: 192.168.10.1
      nameservers:
        addresses: [8.8.8.8,168.95.1.1]
      dhcp4: no

(請根據你的自身環境修改,這裡只是舉例)

就這樣而已,省二、三個指令,簡單又直覺。

如果你要 dhcp (自動取得 IP 位址) 那更簡單了:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes

然後存檔離開

執行一個很直覺的指令: netplan try

$ sudo netplan try
Do you want to keep these settings?

Press ENTER before the timeout to accept the new configuration
Changes will revert in 120 seconds

是否要保留設定?按 Enter 保留設定,不然 120 秒後會復原。
就跟切換螢幕解析度一樣簡單。

爾或者可以用 netplan apply 直接套用。

$ sudo netplan apply

(舊式) 設定 IP 位址 (IP Address)

$ sudo ip addr add 192.168.10.200/24 dev eth0

這邊用 192.168.10.200 做為例子,請修改成恰當的值。

(舊式) 設定網路閘道 Gateway

$ sudo route add default gw 192.168.10.1 eth0

這邊用 192.168.10.1 做為例子,請修改成恰當的值。

(舊式) 設定 DNS

$ sudo echo nameserver 8.8.8.8″ > /etc/resolv.conf

這邊用 8.8.8.8 的 Google DNS 做為例子,你也可以調整成你喜歡的。

DHCP Relase

釋放從 DHCP 取得的 IP 位址

$ sudo dhclient -r

指令等同 Windows 裡的 ipconfig /release

DHCP Renew

從 DHCP 重新取得新的 IP

$ sudo dhclient

指令等同 Windows 裡的 ipconfig /renew

啟動/關閉 網路介面 (ip 指令)

$ ip link set dev eth0 up
$ ip link set dev eth0 down

例如介面名稱為 eth0,請自行修改成合適的網路名稱。

啟動/關閉 網路介面 (ifconfig 指令)

$ /sbin/ifconfig eth0 up
$ /sbin/ifconfig eth0 down

例如介面名稱為 eth0,請自行修改成合適的網路名稱。

列出所有網路介面與狀態

$ ip link show
$ ifconfig -a

這二個都可以

檢查外部公有 IP (Public IP)

$ curl ipinfo.io/ip

一個簡單的指令可以查詢外部公有IP地址 (Public IP)

SSH 相關

安裝 SSH Server (應該預設就有安裝了)

應該預設就有安裝了,如果沒有安裝,請手動用指令安裝之。
(以下為 ubuntu 的指令)

$ sudo apt install -y ssh openssh-server

開機預設啟動 ssh

$ sudo systemctl enable ssh

啟動 ssh

$ sudo systemctl start ssh

查看 ssh 狀態

$ sudo systemctl status ssh

使用 ssh key 取代密碼登入

增加方便性也加強安全性,建議用 ssh key (pem) 檔案來登入 ssh。

產生 ssh key

$ ssh-keygen

指定檔案,例如 id_rsa 檔案(檔名可自訂)。
密碼 passphrase 可以留空

將會產生 id_rsa (私鑰) 與 id_rsa.pub (公鑰) 檔案。

接下來的步驟將是把您的公鑰複製到伺服器上(或者是把私鑰下載回使用者電腦上)。
使用者(你)透過電腦上的私鑰來做連線。

自動複製 ssh key

(在 Client 端執行此指令)
這個步驟是自動把您的公鑰複製到伺服器上。

$ ssh-copy-id -i ~/.ssh/id_rsa -p 22 [email protected]

如果不能運作也不用太糾結,等等有手動的方式。

運行結果:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/user/.ssh/id_rsa.pub"
The authenticity of host '[192.168.10.200]:22 ([192.168.10.200]:22)' can't be established.
ECDSA key fingerprint is SHA256:wYmwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxcFme8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:

Number of key(s) added:        1

Now try logging into the machine, with:   "ssh -p '22' '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

另外一個指令,作法相同。

$ cat ~/.ssh/id_rsa.pub | ssh -p 22 [email protected] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

或者手動複製產生之公鑰 (PublicKey) 到伺服器的 ~/.ssh/authorized_keys 檔案。
(如果沒有 .ssh 隱藏資料夾與 authorized_keys 檔案,請自行建立。)

設定 SSH 關閉密碼登入

$ vi /etc/ssh/sshd_config

找到這行並修改

PasswordAuthentication no

設定免密碼 sudo

(這個步驟非必要)
在設定之前,先調整預設開啟的編輯器。
因為小弟長期習慣用 vim 所以用此指令先切換預設開啟的編輯器

$ sudo update-alternatives --config editor
There are 4 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /bin/nano            40        auto mode
  1            /bin/ed             -100       manual mode
  2            /bin/nano            40        manual mode
  3            /usr/bin/vim.basic   30        manual mode
  4            /usr/bin/vim.tiny    15        manual mode

Press <enter> to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in manual mode

ubuntu 預設是開 nano 編輯器,可以用這個來修改
可以選擇 3 改用 vim 編輯器。

然後使用該指令編輯設定檔

$ sudo visudo

找到

%sudo   ALL=(ALL:ALL) ALL

把它改成

%sudo   ALL=(ALL:ALL) NOPASSWD: ALL

然後存檔離開。

連線 SSH

這個可以做為 bash script 以後方便使用。

$ ssh -i ~/.ssh/id_rsa -p 22 [email protected]

軟體更新

時時軟體更新、修補漏洞、修復 Bug 是很重要的,以下是一些常用的指令

更新套件庫清單(取得有哪些套件已更新)

$ sudo apt update -y

更新套件

$ sudo apt upgrade -y

確認版號

$ lsb_release -a

其實另外二個都可以,個人比較喜歡這個

$ cat /etc/os-release  
$ hostnamectl

列出 Linux 核心版本號

$ uname -r

整個大版本更新
例如從 ubuntu 20.04LTS 升到 ubuntu 22.04.2LTS

$ sudo do-release-upgrade

參考資料

https://www.cyberciti.biz/faq/ubuntu-linux-install-openssh-server/
https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server
https://vitux.com/ubuntu-ip-address-management/
https://www.cyberciti.biz/faq/howto-linux-renew-dhcp-client-ip-address/
https://tldp.org/HOWTO/Linux+IPv6-HOWTO/ch05s02.html
https://www.cyberciti.biz/faq/upgrade-ubuntu-20-04-lts-to-22-04-lts/

[Fedora 14-17] 架設VPN Server (pptpd)

安裝PPTPD及相關服務

yum install -y rp-pppoe gcc pptp pptp-setup  ppp ppp-devel
 
安裝方式有二種:
 
RPM安裝(要依照Linux的版本安裝)
 
例如Fedora 14 (32bit)
wget http://poptop.sourceforge.net/yum/stable/fc14/i386/pptpd-1.3.4-2.fc14.i686.rpm
rpm -ivh pptpd-1.3.4-2.fc14.i686.rpm
 
Fedora 14 (64bit)
wget http://poptop.sourceforge.net/yum/stable/fc14/x86_64/pptpd-1.3.4-2.fc14.x86_64.rpm
rpm -ivh pptpd-1.3.4-2.fc14.x86_64.rpm
 
YUM安裝(要依照Linux的版本安裝)
 
rpm -ivh http://poptop.sourceforge.net/yum/stable/fc14/pptp-release-current.noarch.rpm
yum install pptpd
 
 
下載並安裝核心模組
 
 
wget http://sourceforge.net/projects/poptop/files/mppe%20module%20builder/kernel_ppp_mppe-1.0.2%20dkms-2.0.6/kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm/download
 
wget http://downloads.sourceforge.net/project/poptop/mppe%20module%20builder/kernel_ppp_mppe-1.0.2%20dkms-2.0.6/kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpoptop%2Ffiles%2Fmppe%2520module%2520builder%2Fkernel_ppp_mppe-1.0.2%2520dkms-2.0.6%2F&ts=1341655470&use_mirror=nchc
 
wget http://downloads.sourceforge.net/project/poptop/mppe%20module%20builder/kernel_ppp_mppe-1.0.2%20dkms-2.0.6/dkms-2.0.6-1.noarch.rpm?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpoptop%2Ffiles%2Fmppe%2520module%2520builder%2Fkernel_ppp_mppe-1.0.2%2520dkms-2.0.6%2F&ts=1341655518&use_mirror=nchc
 
rpm -ivh dkms-2.0.6-1.noarch.rpm
rpm -ivh kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
 
 
若沒有按照版本安裝會有類似以下錯誤: 
Error! Bad return status for module build on kernel: 3.4.2-1.fc16.x86_64 (x86_64)
Consult the make.log in the build directory
/var/lib/dkms/kernel_ppp_mppe/1.0.2/build/ for more information.
 
Error! Could not locate ppp_generic.ko for module kernel_ppp_mppe in the DKMS tree.
You must run a dkms build for kernel 3.4.2-1.fc16.x86_64 (x86_64) first.
 
========================================================
 
設定PPTPD
 
 
設定Client看到的伺服器IP,以及DHCP分發的IP範圍
vi /etc/pptpd.conf
加入以下:
localip 10.0.0.1
remoteip 10.0.0.10-100
 
—————————————————-
 
設定pptpd的加密方式和發給Client的DNS
vi /etc/ppp/options.pptpd
refuse-pap
refuse-chap
refuse-mschap
 
require-mschap-v2
require-mppe-128
 
ms-dns 168.95.1.1
 
—————————————————-
 
設定帳號密碼(若使用ppp撥號(xDSL),撥號的帳密也會在這裡)
格式為:
帳號、使用的服務、密碼、接受的IP(通常為*號)
中間用空格隔開
 
vi /etc/ppp/chap-secrets
內容大致為:
# client        server           secret             IP addresses
[email protected]”      *         “your password”
test pptpd 12345 *
 
 
—————————————————- 
 
設定系統IP轉發
vi /etc/sysctl.conf
修改
net.ipv4.ip_forward = 1
 
讓系統重新載入設定值
sysctl -p
 
—————————————————-
 
設定防火牆
 
主要是設定讓PPTP的Client能夠NAT上網
請依照對外連線的網路卡代號取代掉ppp0
ppp+的代表用來連接VPN Client的網卡,不需更動
vi /etc/sysconfig/iptables
 
 
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o ppp0 -j MASQUERADE
COMMIT
 
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
# 其他要開啟服務的port依照格式寫在這裡
 
#—-vpn—-
-A INPUT -i ppp0 -p tcp –dport 1723 -j ACCEPT
-A INPUT -i ppp0 -p gre -j ACCEPT
-A FORWARD -i ppp+ -o ppp0 -j ACCEPT
-A FORWARD -i ppp0 -o ppp+ -j ACCEPT
#—-vpn—-
 
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT
 
—————————————————-
 
重啟防火牆(Fedora 14以上使用)
systemctl restart iptables.service
systemctl restart ip6tables.service
 
重啟防火牆(Fedora 14含以下使用)
/etc/init.d/iptables restart

 

 
========================================================
 
啟動PPTPD等服務
 
 
啟動PPTPD服務
/etc/init.d/pptpd start
重啟PPTPD服務
/etc/init.d/pptpd restart
斷除所有VPN連線
/etc/init.d/pptpd restart-kill
 
 
查看相關的Log
tail -n 30 /var/log/messages
 
查看連線情況
netstat -an | grep :1723 | sort
 
========================================================
 

[Fedora12-14] 設定遠端桌面連線 (rdp)

大家都有用過WIndows的遠端桌面連線吧

其名稱叫做Remote Desktop Protocol (RDP)

是一個網路協定,微軟WinXP之後的都有他的Client可以說是非常方便

而Linux呢?沒有原生的RDP的Server

但有VNC,而且有個xrdp的軟體能夠『透過rdp協定』來連線vnc

設定上有一點點小複雜,不過應該還好

————————————————–

安裝vnc server

我之前也有寫過VNC的架設,大家可以參考一下

http://j796160836.pixnet.net/blog/post/20787531

這裡的設定跟之前寫的差不多,避免變成二篇文章後

大家設定不起來,還是簡單節錄一下

 

這裡我們用的是tightvnc server

直接下yum指令安裝

[root@localhost ~]# yum install vnc-server -y

 

安裝完畢後就可啟動服務

[root@localhost ~]# /etc/init.d/vncserver start

然後開一個user來做VNC連線登入的帳號,本例是vncDesktop

(也可以跟本機帳號一樣,如果是這樣就省略開帳號的動作)

[root@localhost ~]# useradd vncDesktop

設定密碼

[root@localhost ~]# passwd vncDesktop

如果是root登入,需要切換到該使用者,來設定vnc使用的密碼

[root@localhost ~]# su vncDesktop

設定vnc使用的密碼(這裡的密碼到時候就會是遠端桌面使用的密碼)

[vncDesktop@localhost ~]# vncpasswd

再切換回root

[vncDesktop@localhost ~]# su –

 

這裡需要設定哪個使用者需啟用vnc服務

[root@localhost ~]# vi /etc/sysconfig/vncservers

解除註解並修改

VNCSERVERS=”2:vncDesktop
VNCSERVERARGS[2]=”-geometry 800×600 -nolisten tcp -localhost”

 

 

2冒號  不可省略,指的是Terminal的號碼
VNCSERVERARGS註解要拿掉

 

 

然後重啟vnc服務,套用新設定

[root@localhost ~]# /etc/init.d/vncserver restart

這時候,如果沒有提示錯誤的話

應該會跑vnc在5902的port

這個port防火牆可以不開,也不需要開,因為我們要用xrdp去連vnc

 

————————————————–

 

安裝xrdp

 

這裡還是要再三描述觀念

xrdp是基於vnc服務的服務,所以vnc的架設和設定不能省略

架設方法在上文

 

xrdp安裝一樣直接下yum指令安裝

[root@localhost ~]# yum install xrdp -y

 

安裝完畢後就可啟動服務

[root@localhost ~]# /etc/init.d/xrdp start

 

防火牆對應做修改,打開3389的port

[root@localhost ~]# vi /etc/sysconfig/iptables

加一行文字,打開3389的port

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3389  -j ACCEPT

 

然後記得重啟防火牆,讓他套用新設定

[root@localhost ~]# /etc/init.d/iptables restart

 

 

————————————————–

我們需要修改startwm.sh修改啟動X Window的的順序

因為Fedora來說預設只有裝gnome

所以我們需要把它改到優先(橘色為修改)

[root@localhost ~]# vi /etc/xrdp/startwm.sh

#!/bin/sh -l

# change the order in line below to run to run whatever window manager you
# want, default to kde

SESSIONS=”gnome-session startkde startxfce4 xterm”

# change PATH to be what your environment needs usually what is in
# /etc/environment
#PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games”
#export PATH=$PATH

# for PATH and LANG from /etc/environment
# pam will auto process the environment file if /etc/pam.d/xrdp-sesman
# includes
# auth       required     pam_env.so readenv=1
#. /etc/environment
#export PATH=$PATH
#export LANG=$LANG

# for bash profile
#. ~/.bash_profile
#. /etc/profile

for WindowManager in $SESSIONS
do
  which $WindowManager
  if test $? -eq 0
  then
    echo “Starting $WindowManager”
    $WindowManager
    exit 0
  fi
done

exit 1

————————————————–

接下來,在實際測試的時候會出現一個很奇怪的現象

就是xrdp之後,滑鼠正常,但鍵盤就是無法使用

無法打入帳號密碼

後來發現是因為是鍵盤配置檔出問題

因為

在繁體中文的環境下,xrdp會抓不到對應的鍵盤配置檔

 

所以我們必須修正這個問題

以我的為例,xrdp的設定檔有這些

[root@localhost ~]# ls /etc/xrdp/

km-0004.ini  km-0409.ini  km-0419.ini  sesman.ini   xrdp.sh      
km-0404.ini  km-040c.ini  km-041d.ini  startwm.sh   
km-0407.ini  km-0410.ini  rsakeys.ini  xrdp.ini     

請注意這些km-xxxx.ini這些就是鍵盤配置檔

km-0409.ini 這個是英文的鍵盤配置

以下列出一些常看到的語系代碼,如果沒有的話請到以下網址去參考

http://xrdp.sourceforge.net/documents/keymap/rfc1766.html

 

“0004”=”zh;Chinese”
“0404”=”zh-tw;Chinese (Taiwan)”
“0804”=”zh-cn;Chinese (China)”
“0C04″=”zh-hk;Chinese (Hong Kong SAR)”
“1004”=”zh-sg;Chinese (Singapore)”

“0409”=”en-us;English (United States)”
“0809”=”en-gb;English (United Kingdom)”
“0C09″=”en-au;English (Australia)”
“1009”=”en-ca;English (Canada)”
“1409”=”en-nz;English (New Zealand)”
“1809”=”en-ie;English (Ireland)”
“1C09″=”en-za;English (South Africa)”
“2009”=”en-jm;English (Jamaica)”
“2809”=”en-bz;English (Belize)”
“2C09″=”en-tt;English (Trinidad)”

 

以繁體中文0404為例,因為我們的鍵盤配置跟英文一樣

所以只要打上這個指令就行了

[root@localhost ~]# cp /etc/xrdp/km-0409.ini /etc/xrdp/km-0004.ini

[root@localhost ~]# cp /etc/xrdp/km-0409.ini /etc/xrdp/km-0404.ini

其他鍵盤方面沒講到的地方都在這:

http://xrdp.sourceforge.net/documents/keymap/newkeymap.html

 

————————————————–

最後,測試成功後,就可以將它設定為開機自動啟動

[root@localhost ~]# chkconfig xrdp on

[root@localhost ~]# chkconfig vncserver on

————————————————–

參考資料

http://hpclab.cs.pu.edu.tw/wiki/index.php/Xrdp#.E9.8D.B5.E7.9B.A4.E9.8C.AF.E4.BA.82

http://chip.twbbs.org/2009/06/xrdpubuntu-904.html

[Fedora14]重灌筆記

這篇算是之前的文章的整理,有些東西可能就要煩請參考之前的文章摟

 

設定FireFox

http://gfx.tw/j796160836

關閉離線介面

http://j796160836.pixnet.net/blog/post/26241754

設定PPPOE連線,中文

http://j796160836.pixnet.net/blog/post/25444345

調整文字顯示模式

http://j796160836.pixnet.net/blog/post/26196073

解決在XP時間不同步的問題

http://j796160836.pixnet.net/blog/post/26041820

安裝相關的GUI介面

#yum install -y system-config-bind system-config-samba system-config-services system-config-boot system-config-network system-config-rootpassword policycoreutils-gui

[Fedora12]Linux的GRUB修復,安裝GRUB

大家在製作多重開機時都會遇到這個問題
就是不管是XP先安裝或是Linux先安裝

都會有開機資訊被覆蓋的情況

先講重要概念

————————————————————————–

重要概念

1. MBR為Master Boot Record每顆硬碟只有一個,寫在硬碟的第0軌上

2. 每切出的分割,除了裡面有檔案系統的資訊外,還有一個開機資訊(boot sector)

3. 大致的開機流程是,當BIOS控制權轉交到一顆硬碟上,會先讀取該硬碟的MBR
再由MBR裡寫的資訊(如果沒有則為active的分割區),載入該分割區的(boot sector),再經由該資訊,找到系統重要檔案,載入作業系統

4. 而多重開機則大多為在MBR裡寫入開機管理程式,顯示介面讓使用者選擇到開機的分割區或是其他資訊
(也有些開機管理程式程式太大,MBR的空間塞不進去,會從MBR中導到某個分割區的boot sector,再從該資訊載入開機管理程式)

5. 而Linux比較特別,可以直接從GRUB直接載入核心,載入作業系統 

解決辦法如下:

————————————————————————–

winXP下的開機資訊修復

放入XP安裝光碟,用它開機

按R進入Recovery Console下打fixmbr修復

或是使用spfdisk的修復MBR功能

A:\>spfdisk /mbr

————————————————————————–

Linux下的開機選單(GRUB)修復

放入你使用的Linux版本的LiveCD,用它開機
在登入到桌面之後,打開命令列

以Fedora 12為例 (GRUB 1版的做法)

(註:以下這段ubuntu就不適用,因為它使用GRUB 2版。做法為另一種)
(該做法不限定在Fedora,Redhat系列的都可以用,像是RHEL,Cent OS … 等等)

先打入fdisk -l查看磁碟分割的狀況

[root@localhost ~]#fdisk -l

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x129dfc88

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63    18844244     9422091    7  HPFS/NTFS
/dev/sda2        18844245   625137344   303146550    f  W95 Ext’d (LBA)
/dev/sda5        18860310    52516484    16828087+   7  HPFS/NTFS
/dev/sda6        52516548    60918479     4200966   83  Linux
/dev/sda7        60918543    62990864     1036161   82  Linux swap / Solaris
/dev/sda8        62990928    96454259    16731666    7  HPFS/NTFS
/dev/sda9        96454323   625137344   264341511    7  HPFS/NTFS

 

找到Fedora安裝的分割區(ext3或ext4分割,該目錄含有GRUB的資訊)
我的電腦為/dev/sda6

打入grub進入頁面

[root@localhost~]#grub

切換根目錄為Fedora安裝的目錄

grub> root (hd0,5)
root (hd0,5)
 Filesystem type is ext2fs, partition type 0x83

這個時候可能要嘗試一下,大約是在前面查到的sda6的上一號或下一號
出現ext2fs字樣就可以繼續

 

範例1:

寫入開機資訊到該硬碟的MBR

grub> setup (hd0)
setup (hd0)
Checking if “/boot/grub/stage1” exists… no
Checking if “/grub/stage1” exists… yes
Checking if “/grub/stage2” exists… yes
Checking if “/grub/e2fs_stage1_5” exists… yes
Running “embed /grub/e2fs_stage1_5 (hd0)”…  15 sectors are embedded.
succeeded
Running “install /grub/stage1 (hd0) (hd0)1+15 p (hd0,5)/grub/stage2
/grub/grub.conf”… succeeded
Done.

出現類似succeeded字樣就成功了

 

範例2:

寫入開機資訊到Fedora的該分割區的開機磁軌
(我的是sda6,也就是這裡的(hd0,5)每台電腦環境不同,請以你的為主)

grub> setup (hd0,5)
setup (hd0,5)
 Checking if “/boot/grub/stage1” exists… yes
 Checking if “/boot/grub/stage2” exists… yes
 Checking if “/boot/grub/e2fs_stage1_5” exists… yes
 Running “embed /boot/grub/e2fs_stage1_5 (hd0,5)”… failed (this is not fatal)
 Running “embed /boot/grub/e2fs_stage1_5 (hd0,5)”… failed (this is not fatal)
 Running “install /boot/grub/stage1 (hd0,5) /boot/grub/stage2 p /boot/grub/grub.conf “… succeeded
Done.

出現類似succeeded字樣就成功了

————————————————————————–

這篇很簡略的寫出操作的重點

詳細請看

http://linux.vbird.org/linux_basic/0510osloader.php#grub_install

http://bentai.wordpress.com/2006/08/16/%E5%9C%A8windows-xp-sp2%E4%B8%8B%E4%BF%AE%E5%BE%A9mbr/

[MySQL]更改預設資料庫的編碼

引用:http://www.twvbb.com/vbb/thread/104/9420/

這是MySQL安裝的時候預設的狀況
使用xampp或是linux底下的lampp

 

在phpmyadmin底下的variables可以看到
預設新增的資料庫的編碼會是latin1
但我們通常都會新增utf8的資料庫

請修改MySQL的設定檔my.cnf

(Linux底下)

/etc/my.cnf
或是
/opt/lampp/etc/my.cnf

(XP底下)

 

找到以下標籤並加上紅字部份

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
init-connect=’SET NAMES utf8′

[client]
default-character-set=utf8

 

資料庫轉換的步驟請參考引用原文
我看完消化過在補

[Fedora 12]關閉FireFox的離線模式(Offline mode)

摘錄自原文

Find “browser.offline-apps.notify” in the “about:config” method and set it to false.

toolkit.networkmanager.disable to “true”

————————————–

在用Linux時,是否會被那離線模式(Offline mode)給弄煩了呢?
無網路連線時會顯示離線模式,而當有網路連線時卻還是會留在離線模式

 

可照以下作法:

在FireFox上的網址列打入

about:config

會出現一個 You might void your warranty 的警告訊息
,按 I’ll be careful I promise! 繼續

在 Filter: 裡搜尋

browser.offline-apps.notify

雙點該項目,值從True -> False

相同的方法搜尋

toolkit.networkmanager.disable

雙點該項目,值從False -> True

完成

[Ubuntu10.04] 關於Ubuntu的一些雜記

切換root

sudo su –

修改root密碼

sudo passwd root

 使用vi

apt-get vim;alias vi=’vim’

vi ~/.vimrc

引用:http://linux.vbird.org/linux_basic/0310vi.php#vim_set

:set nu
:set nonu
就是設定與取消行號啊!
:syntax on
:syntax off
是否依據程式相關語法顯示不同顏色? 舉例來說,在編輯一個純文字檔時,如果開頭是以 # 開始,那麼該行就會變成藍色。 如果你懂得寫程式,那麼這個 :syntax on 還會主動的幫你除錯呢!但是, 如果你僅是編寫純文字檔案,要避免顏色對你的螢幕產生的干擾,則可以取消這個設定 。
:set bg=dark
:set bg=light
可用以顯示不同的顏色色調,預設是『 light 』。如果你常常發現註解的字體深藍色實在很不容易看, 那麼這裡可以設定為 dark 喔!試看看,會有不同的樣式呢!

 

關於GRUB2

引用:http://wiki.ubuntu-tw.org/index.php?title=GRUB_2_%E4%B8%AD%E6%96%87%E6%8C%87%E5%8D%97#.E5.A2.9E.E5.8A.A0.E5.8A.9F.E8.83.BD

  • 沒有 /boot/grub/menu.lst。已被 /boot/grub/grub.cfg 取代。
  • 在 grub 提示符號下沒有「/find boot/grub/stage1」。Stage 1.5 被淘汰了。
  • 主要選單檔,/boot/grub/grub.cfg,不應再被手動編輯,即使是由「root」身份。
  • grub.cfg 會在任何有更新、核心被加入/移除或是使用者執行 update-grub 的時候被覆寫。
  • 主要用來改變顯示設定的設定檔是 /etc/default/grub
  •  其他參見說明