2014年10月8日 星期三

Bridge 建立橋接網路 (還有缺,待補中)


1. 安裝套件

sudo apt-get install bridge-utils uml-utilities


2. 常用brctl 橋接指令,需要root權限

brctl help
brctl show
brctl addbr [Bridge Name]
brctl addif [Interface Name]
brctl delbr [Bridge Name]
brctl delif [Interface Name]


3. 建立橋接網路br0

sudo brctl addbr br0

4. 將 br0 橋接給 eth0 使用

sudo brctl addif br0 eth0

5.設定網路

sudo vi /etc/network/interfaces
## 說明
# 
#                 ->  eth0 -> 實體機
# Internet -> br0 ->
#                 ->  br1 -> N 個虛擬機
# 

# The loopback network interface
auto lo
iface lo inet loopback

iface eth0 inet manual
## interent -> br0 -> eth0 -> 實體機
auto br0
iface br0 inet static
       address [本機 ip]
       netmask [本機 netmask]
       gateway [本機 gateway]
       bridge_ports eth0
       bridge_fd 9
       bridge_hello 2
       bridge_maxage 12
       bridge_stp off

## interent -> br0 ->  br1 -> 虛擬機
auto br1
iface br1 inet static
       address 192.168.1.1
       netmask 255.255.255.0
       gateway [本機 ip]
       bridge_ports tap0
       bridge_fd 9
       bridge_hello 2
       bridge_maxage 12
       bridge_stp off 

6. 重啟動網路

ifconfig eth0 down
ifconfig eth0 up
/etc/init.d/netwroking restart

7. 查看網路連線

ifconfig
route -n
ping gateway
ping 8.8.8.8

8. 設定防火牆 iptables (ROOT)


echo 1 > /proc/sys/net/ipv4/ip_forward


### 下面的 br1 要看上面連虛擬機的 Bridge 設多少
iptables -A INPUT -i br1 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

9. 開啟 DHCP 服務

可以參考文章 DHCP Server 來安裝設定。

10. 開虛擬機連上網路

下面的 OS.img 檔案,可以參考文章
建立一個 arm.img 並且可以用虛擬機開機 來建立!


qemu-system-x86_64 -enable-kvm \
-cpu host \
-smp 4 \
-m 6000 \
-hda OS.img \
-boot c \
-net nic \
-net bridge,br=br1 &

------------------- Debug -------------------
# Question 1
Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory
Back to tcg accelerator.
qemu: could not load PC BIOS 'bios.bin'

#  Solution 1
sudo apt-get install seabios
sudo cd /usr/local/share/qemu
sudo ln -sf /usr/share/seabios/*.bin .

-----------------------------------------------------------------------------
# Question 2
failed to create tun device: Operation not permitted
failed to launch bridge helper
qemu-system-x86_64: -net bridge,br=br10: Device 'bridge' could not be initialized

qemu-bridge-helper 需要有 root 的權限才能執行

# Solution 2
chmod u+s /usr/local/libexec/qemu-bridge-helper

------------------------------------------------------------------------------
# Question 3
failed to initialize KVM: No such file or directory
Back to tcg accelerator.

# Solution 3
忘了…

-------------------------------------------------------------------
# Question 4
failed to parse default acl file `/usr/local/etc/qemu/bridge.conf'
failed to launch bridge helper

# Solution 4
vi /usr/local/etc/qemu/bridge.conf -> allow br1

---------------------------------------------------------------------
# Question 5
Could not access KVM kernel module: Permission denied
failed to initialize KVM: Permission denied

# Solution 5
建立 kvm 群組:
groupadd kvm

將自己的使用者 $USER 加到 kvm 群組中:
usermod -a -G kvm $USER

調整 /dev/kvm 使用者權限
chown root:kvm /dev/kvm
chmod 660 /dev/kvm

重新載入 kvm 驅動模組
rmmod kvm_intel kvm
modprobe kvm_intel kvm


# 如果還是不行,就請重新開機再試試
shutdown -r now

---------------------------------------------------------------------
# Question 6
qemu-system-x86_64: symbol lookup error: qemu-system-x86_64: undefined symbol: libusb_get_port_numbers

# Solution 6
先確認 libusb-1.0 有無安裝,版本對不對,再做以下指令重新連結:
sudo ln -sf /lib/x86_64-linux-gnu/libusb-1.0.so.0 /usr/local/lib/libusb-1.0.so.0





預設 X-Window 設定


當裝了多個圖形環境時,想選一個常用的來當作預設,
或者想要開機時,先進入文字介面,再自己手動進入
X - Window ,就需要動到以上設定:

update-alternatives --config x-session-manager
  選項       路徑             優先權  狀態
------------------------------------------------------------
  0            /usr/bin/metacity   60        自動模式
* 1            /usr/bin/icewm      50        手動模式
  2            /usr/bin/metacity   60        手動模式



update-alternatives --config x-window-manager 
  選項       路徑                           優先權  狀態
------------------------------------------------------------
  0            /usr/bin/gnome-session            50        自動模式
  1            /usr/bin/gnome-session            50        手動模式
  2            /usr/bin/gnome-session-fallback   40        手動模式
* 3            /usr/bin/icewm-session            10        手動模式





推薦音樂播放器 DeadBeef

DeadBeef 是一個號稱 Linux 界的 foobar2000,
它的介面沒有太多的裝飾,完全專注在音樂的播放能力上,
但實用性非常高,還可以自定全域的快捷鍵,相當便利實用!

1. 安裝

官方:http://deadbeef.sourceforge.net/

載點:0.6.2 static portable build x86_64

下載完會得到壓縮檔:deadbeef-static_0.6.2-2_x86_64.tar.bz2,
習慣把應用程式放到 /opt 目錄下:
cd ~/Download
tar xfva deadbeef-static_0.6.2-2_x86_64.tar.bz2
sudo mv deadbeef-0.6.2 /opt


執行,如下圖:
/opt/deadbeef-0.6.2/deadbeef



2. 將 deadbeef 指令以 alias 加到家目錄 .bashrc 內。

vi ~/.bashrc


加入下面:
alias deadbeef='/opt/deadbeef-0.6.2/deadbeef'

:wq 儲存離開

source ~/.bashrc

3. 將指令放到 menu 及 toolbar 中。

vi /etc/X11/icewm/menu
vi /etc/X11/icewm/toolbar
prog "DeaDBeef"  deadbeef.png /opt/deadbeef-0.6.2/deadbeef

## 注意,deadbeef.png 要放到 IconPath 下。



Debug1. 如果開啟 Deadbeef 遇到訊息:

INFO: loading playlist Default
INFO: from file /home/skmpz/.config/deadbeef/playlists/0.dbpl
server_start
INFO: unlink socket: Permission denied
bind: Address already in use
Sol:
ls -l ~/.config/deadbeef/socket -------> 權限是否為 root ?
chown -R user:user ~/.config/deadbeef

將 deadbeef 包含子目錄下全部改為一般 user。

Shutter 圖片擷取工具


介紹一個 ScreenShot 工具,名稱為  shutter ,
它的優點為:安裝簡單、使用容易,可以快速擷取圖片,
並立即編輯圖片,還可以指定好輸出路徑、定時擷圖等功能。

其介面如下圖:

1. 安裝。

sudo apt-get update && apt-get -y install shutter


2. 執行,只要直接 terminal 上打套件名稱 shutter。

shuuter

3. 編輯 menu 及 toolbar ,讓擷圖更便利。

vi /etc/X11/icewm/menu
vi /etc/X11/icewm/menu

一樣加入下面這行:

prog "Screenshot" shutter.png shutter


## 注意,shutter.png 圖檔要自己做,並放到 IconPath 下。

4. 簡易操作說明:


選取上圖的「擷取選取區域」,接著按住左鍵,
框選要擷的區塊,放開後還可以再移動區塊微調,
最後決定截圖按 Enter,取消截圖按 Esc。

其它功能,更是很直覺的操作方法,按了就開始工作!
最後,可以到「編輯」 -> 「偏好設定」->「主要」,
修改輸出的品質、影像格式、名稱、位置…等,
自行客自化,並且可以再上方儲存成一個樣式。

5. 立即編輯圖片工具

在介面的右上角有「編輯」,可以立即編輯圖片,
為圖片加入文字、框線…等修改,並另存新檔!


建立一個 arm.img


首先,當然要先安裝 QEMU 虛擬機,可參考前面一章節,接著:

1. 建立目錄

(為了方便整理 QEMU Image 。)
cd ~
mkdir qemu_image
mkdir -p qemu_image/install
cd qemu_image/


2. 建立空的 qemu-img 檔:

qemu-img create arm.img 2G

接著可以用下面指令來查看檔案大小:
ls -l
du -sh arm.img

其中會發現, ls 所看到的遠比 du -sh 還來得大,
這是因為 qemu-img 會建立出一個「用多少就長多大」的 img,
為了節省儲存空間,但是最大可用值不會超過當初設定的 2GB 。

3. 下載 .iso 

至台灣高品質學術研究網路(TWAREN)下載最新版 Debian armel 版之 .iso 檔。
網址路徑:
  http://ftp.twaren.net/Linux/Debian/debian-cd/7.6.0/armel/iso-cd/

載點: debian-7.6.0-armel-CD-1.iso

4. 下載 ARM 開機檔。

至 Debian 官方下載兩個 ARM 版開機所需檔案: initrd.gz 、 vmlinuz-3.2.0-4-versatile 。

官方網址路徑:
ftp://ftp.debian.org/debian/dists/wheezy/main/installer-armel/current/images/versatile/netboot/

載點:
initrd.gz
vmlinuz-3.2.0-4-versatile

把這兩個檔案下載至 ~/qemu_image/install 下。

5. 啟動 QEMU

於 ~/qemu_image 目錄下,
寫一個 Shell Script 來快速執行: QEMU 安裝 arm.img  。

vi buildarm.sh

buildarm.sh 的內容如下:
qemu-system-arm -M versatilepb -m 512 \
-kernel ./install/vmlinuz-3.2.0-4-versatile \
-initrd ./install/initrd.gz \
-hda arm.img \
-append "root=/dev/sda1"


再加入可執行權限:
chmod u+x ~/qemu_image/buildarm.sh

開始執行安裝:
sh ~/qemu_image/buildarm.sh

6. 最後,照安裝步驟來進行安裝。


7. 備份

複製 arm.img 為 arm_OK.img 做為備份,即可開始搞爛 arm.img !
~/qemu_image $ cp arm.img arm_OK.img






Reference: 

使用者、群組及密碼設定



1. 與使用者、群組及密碼設定相關之設定檔路徑

/etc/passwd -------------> 帳號設定檔
/etc/group ----------------> 群組設定檔
/etc/shadow --------------> 密碼設定檔

2. useradd 新增一個使用者

useradd 
  -m ---------------------------> 自動建家目錄
  -d homename ------------> 指定家目錄
  -g groupname ------------> 加入Main group
  -G ----------------------------> 加入Sub group
  -s /bin/bash ----------------> 設定Shell為bash

 usermod ---------------------> 修改使用者帳號


3. passwd 建立或修改使用者密碼

passwd -----------------------------------------------> 設定密碼
echo “user:password”  | chpasswd  ----------> 設定密碼,適用Script大量建帳號



4. groupadd 建立或移除一個群組

groupadd [GroupName] --------------------------> 建立群組
groupdel -r [GroupName] -------------------------> 移除群組


5. change 改變帳戶資訊

change -l [Account]  --------------------------> 觀看帳號資訊
change -d 0 [Account] -----------------------> 設定密碼只能用一次,擔入後就要換密碼


6. 檔案目錄權限

chown --------------------------> 改檔案、目錄的所有使用者
chgrp ---------------------------> 改檔案、目錄的所有群組
chmod --------------------------> 改檔案、目錄的權限