2014年12月30日 星期二

手動無線網路 wlan0 連線


說明:

這邊介紹 iwconfig 的手動連線方法,
其中一點要注意的是,它不支援 WPA 加密格式
它只適用 WEP 加密處理,因此以本校 STUST 為例是適用的!

壹。手動 iwconfig 無線網路設定

一、清除網路設定

1. 有線網路 eth0 清除

route del default eth0
ifconfig eth0 down

順便補充無線網路 wlan0 清除:
ifconfig wlan0 down
iwconfig wlan0 txpower off

二、 開啟無線網路

iwconfig wlan0 txpower on
ifconfig wlan0 up

三、掃描可用的無線 AP 站

iwlist wlan0 scan | grep -i essid

輸出如下:
                    ESSID:"Alias 4G"
                    ESSID:"stust_p203"
                    ESSID:"stust_p205"
                    ESSID:"EDIMAX"
                    ESSID:"S611-AP"
                    ESSID:"stust_p306"
                    ESSID:"S210B"
                    ESSID:"stust_teacher"
                    ESSID:"stust_p302"
                    ESSID:"stust_j304"
                    ESSID:"stust_teacher"
                    ESSID:"stust_s412@"
                    ESSID:"stust_teacher"
                    ESSID:"stust_p503"
                    ESSID:"stust_teacher"
                    ESSID:"stust_s314"
                    ESSID:"stust_j402"
                    ESSID:"stust_s414"
                    ESSID:"stust_s514"
                    ESSID:"p501_PM"

四、設定 ESSID

假設要連線上面掃到的 ESSID:"stust_p203"
iwconfig wlan0 essid stust_p503

檢查 ESSID 設定:
iwconfig wlan0

五、取得 IP

dhclient -v wlan0

成功取得後,即可得到 AP 所發出來的 ip !

--------------------------------------------------------------------------------

貳。修改網路設定檔 (可支援 WPA 加密格式 )

一、同上面方式清除 eth0,開啟 wlan0

1. 有線網路 eth0 清除

route del default eth0
ifconfig eth0 down

2. 開啟無線網路

iwconfig wlan0 txpower on
ifconfig wlan0 up

二、修改設定檔

vi /etc/network/interfaces

加入下面設定 (原本的網路不變動,或用 # 註解掉)
auto wlan0
iface wlan0 inet dhcp
wpa-ssid "AP-ESSID"
wpa-psk "password"

三、重啟網路

/etc/init.d/networking restart

service networking restart

四、查看有無找到 ip

ifconfig














2014年12月18日 星期四

Easy2Boot 多系統 USB 重灌碟製作

Easy2Boot 是一套可以製作多系統 USB 安裝碟的工具,
最重要的是可以直接載入多個 .iso 映像檔,來做開機碟。

官網:http://www.easy2boot.com/


接下來進入正式筆記教學,
下面的各個軟體都是網路開放的免軟體,
可以直接 Google 搜尋下載,
同時本站的雲端也有備份,也可以直接從本站下載。

一、目標
以本作者所使用的為例,我希望如下系統整合開機碟:
  • Windows 7 整合版 9 in 1 容量約 4.18 GB
  • Windows 8.1 容量約 3.60 GB
  • Debian-7.7.0_amd64 容量約 635  MB
  • Ubuntu-12.04.04_amd64 容量約 733  MB
  • CentOS-7.0_amd64 容量約 3.86  GB
  • 及其它小工具…
總計需要容量:至少約 13 GB

二、準備東西


三、執行軟體 RMPrepUSB

依軟體步驟來格式化隨身碟為 NTFS 或 FAT32 ,
本文使用 NTFS 為了可以裝大於 4 GB 的 ISO 檔,
按照軟體內步驟 1 - 6 即可。(後面選項全選 yes)


四、安裝 Grup4dos 於 MBR (後面選項全選 yes)



五、解壓 Easy2Boot

請先暫時關閉防毒軟體,避免 easy2boot 的檔案被誤判為電腦病毒,
接著直接將 Easy2Boot_v1.61.zip 解壓縮到 USB 目錄下:



六、植入 ISO 檔

依檔案分類,直接複製、貼上至 USB 內的 _ISO 目錄下:

_ISO\WINDOWS\WIN7\Windows7_9in1.iso
_ISO\WINDOWS\WIN8\Windows_8.1.iso
_ISO\LINUX\CentOS-7.0_amd64.iso
_ISO\LINUX\Debian-7.7.0_amd64.iso
_ISO\LINUX\Ubuntu-12.04.4_amd64.iso













Referencd:

2014年12月2日 星期二

一次建立20個使用者帳號

利用 Bash / Shell Script 來一次完成建置 20 個使用者帳號,
且要給每個使用者加入不同的登入密碼,
並且強制要求第一次登入後,要修改使用者密碼。

設定群組:s100
建立帳號:s100a000 ~ s100a020
設置密碼:`date +%N` 來產生亂數

vi buildAccount.sh
# !/bin/bash
# 2014/12/02    Author:AaronHuang
# Create 20 user
# account:   s100a000 ~ s100a020,
# usergroup: s100

# Setting Parameter
GROUP=s100
USER_HEAD=s100a0

# Check root
if [ `whoami` != "root" ]
then
        echo "===== Permision Deny ====="
        echo "You need login root."
        echo
        exit 0
fi

# Create group
groupadd s100

# Create account 0~9
for i in `seq 0 9`
do
        USER_NAME=${USER_HEAD}0$i
        # Setting account password is ramdon
        PASSWD=`date +%N`
        echo "Creating User 0$i: $USER_NAME"
        echo "Set Password: $PASSWD"
        useradd -m -s /bin/bash -g $GROUP $USER_NAME
        echo $USER_NAME:$PASSWD | chpasswd
        chage -d 0 $USER_NAME
done

# Create account 10~20
for i in `seq 10 20`
do
        USER_NAME=${USER_HEAD}$i
        # Setting account password is ramdon
        PASSWD=`date +%N`
        echo "Creating User $i: $USER_NAME"
        echo "Set Password: $PASSWD"
        useradd -m -s /bin/bash -g $GROUP $USER_NAME
        echo $USER_NAME:$PASSWD | chpasswd
        chage -d 0 $USER_NAME
done



刪除剛剛建的群組:s100,及使用者s100a000 ~ s100a020

vi deleteAccount.sh
# !/bin/bash
# 2014/12/02    Author:Kai-Lin Liao
# Delete 20 user 
# account:   s100a000 ~ s100a020,

# Setting Parameter
GROUP=s100
USER_HEAD=s100a0

# Check root
if [ `whoami` != "root" ]
then
        echo "===== Permision Deny ====="
        echo "You need login root."
        echo
        exit 0
fi


# Create account 0~9
for i in `seq 0 9`
do
        USER_NAME=${USER_HEAD}0$i
        echo "Delete User 0$i: $USER_NAME"
        userdel -r $USER_NAME
done

# Create account 10~20
for i in `seq 10 20`
do
        USER_NAME=${USER_HEAD}$i
        echo "Delete User $i: $USER_NAME"
        userdel -r $USER_NAME
done

# Delete group
groupdel $GROUP

2014年12月1日 星期一

如何將硬碟從GPT格式轉換成MBR

隨機預裝Win8的電腦,硬碟爲GPT格式的,如果需要安裝Win7等早期版本系統,需要轉換爲MBR格式的,使用Diskpart命令即可完成轉換。
操作步驟:
注意:轉換硬碟格式需要清空硬碟中的所有分區和數據,在操作前,請保存好硬碟中所有重要數據。

1.使用Win7光碟或者USB引導,進入系統安裝界面。
2.按Shift + F10打開命令提示符。
3.輸入”Diskpart”(不用輸入引號,下同),並按ENTER,進入操作界面
4.輸入:”list disk”,查看硬碟信息。注意看硬碟容量來選擇。
5.輸入:”select disk 0”,選擇disk 0爲當前操作的硬碟。(注意是否為系統安裝的disk,通常預設為disk 0,但也有例外,所以在執行這部前請再三做確認!)
6.輸入:”Clean”,清空當前硬碟分區。
7.輸入:”convert mbr”,轉換爲MBR分區。
8.操作完成,關閉此命令提示符窗口,繼續按照正常的方法安裝Win7系統即可。
擴展知識:convert命令的其它用法:
convert  basic     -將硬碟從動態轉換爲基本。
convert  dynamic  -將硬碟從基本轉換爲動態。
convert  gpt      -將硬碟從MBR轉換爲GPT。
convert  mbr     -將硬碟從GPT轉換爲MBR。

引用:http://home.gamer.com.tw/creationDetail.php?sn=2117049

2014年11月22日 星期六

gtk-recordmydesktop 錄影工具

一、安裝

apt-get install gtk-recordmydesktop recordmydesktop ffmpeg

二、操作

1. 開啟軟體

gtk-recordmydesktop

2. 出現操作介面,如圖


3. 按紅點,開始錄影錄音…


4. 完成錄影

Ctrl + Alt + S

5. 輸出到家目錄或指定目錄


6. 轉檔 .ogv -> .avi

ffmpeg -i out.ogv -vcodec mpeg4 -sameq -acodec libmp3lame out.avi

三、其他

1. 錄音

可以安裝 gnome-alsamixer ,
用來調整 Mic 的音量設定,

我的 Mic 是插主機後方,設定如下圖:

2. 播放

可以使用 mplayer 播 .ogv 格式之影片檔。

3.整理 Shell Script 快速轉檔

vi toAVI.sh
# !/bin/bash
# .ogv to .avi

if [ -z $1 ] || [ -z $1 ] ;then
        echo
        echo ====== Usage =========
        echo "toAVI.sh [input.ogv] [output.avi]" 
        exit 0
fi

ffmpeg -i $1 -vcodec mpeg4 -sameq -acodec libmp3lame $2








Reference:
http://blog.longwin.com.tw/2009/04/linux-record-recordmydesktop-2009/

http://www.cyberciti.biz/faq/linux-unix-bsd-appleosx-convert-ogv-to-avi-video-audio/

2014年11月17日 星期一

題目練習

1. 下載下來的核心之解壓路徑;解壓指令。
2. 編譯的電腦有 n 核心,要下什麼指令讓全部核心下去跑。
3. 怎麼查看 CPU 資訊。
4. 核心選單要在哪個目錄設定?下哪個指令?
5. 核心設定檔 .config 的絕對路徑+檔名
6. 建立一個 2GB 的 sdcard.img
7. 連接 sdcard.img 到 /dev/loop0
8. 連接 /dev/loop1 到 /dev/loop0p1 重點 offset
9. 連接 /dev/loop2 到 /dev/loop0p2 重點 offset
10. 分割指令
11. 格式化指令
12. vi 操作,刪除、複製、貼上
13. 核心編譯指令(不用參數)
14. 查看目前權限;登入root指令
15. 掛載指令
16. 編譯 Hello.c 的指令
17. 為什麼要用 xz 壓縮?
18. 核心安裝到 Linux 的哪個目錄?
19. Android 是用什麼核心?


請低調,解答自己找。

2014年10月30日 星期四

hdparm - Linux硬碟測試讀寫速度



sudo apt-get install hdparm

sudo hdparm -Tt /dev/sdX

sudo hdparm -t --direct /dev/sdX

Timing cached reads:   3164 MB in  2.00 seconds = 1582.31 MB/sec
Timing buffered disk reads: 238 MB in  3.01 seconds =  79.08 MB/sec

2014年10月28日 星期二

WinSetupFromUSB 製作 USB 重灌碟


WinSetupFromUSB 是一套可以製作多系統 USB 安裝碟的工具,
該軟體內整合了數個我們製做重灌開機碟工具,包含:
FBinstTool、Bootice、RMPrepUSB、Grub4dos、Imdisk…等等,
它可以建立開機引導程式 GRUB ,
最重要的是可以直接載入 .iso 映像檔,來做開機碟。

官網:
http://www.winsetupfromusb.com/

官方載點:
WinSetupFromUSB 1.4.exe
WinSetupFromUSB 1.4.7z

接下來進入正式筆記教學,
下面的各個軟體都是網路開放的免軟體,
可以直接 Google 搜尋下載,
同時本站的雲端也有備份,也可以直接從本站下載。

一、規劃開機選單
以本作者所使用的為例,我希望設計如下:

  1. Windows 7 整合版 9 in 1 容量約 4.18 GB
  2. Windows 8.1 容量約 3.60 GB
  3. Debian-7.7.0_amd64 容量約 635  MB
  4. Ubuntu-12.04.04_amd64 容量約 733  MB
  5. CentOS-7.0_amd64 _livecd 容量約 687  MB
  6. Reboot 
  7. Shutdown
合計所需容量約: 9.835 GB 


二、準備東西



三、使用軟體 WinSetupFromUSB_1.4
本作者是使用 64 位元 Windows 7 作業系統的機器下使用。



四、植入檔案

開啟 USB 隨身碟,先建立一個 ISO 目錄,
接著無順序,植入:

/menu.list
/unifont.hex.gz
/ISO/CentOS-7.0_amd64_livecd.iso
/ISO/Debian-7.7.0_amd64.iso
/ISO/Ubuntu-12.04.4_amd64.iso
/ISO/Windows_8.1.iso


五、調整 menu.list




六、QEMU 測試開機







Debug 1:
進入選單後,執行安裝 Windows 8.1 ,出現:


Sol 1:
這可能是 QEMU 虛擬機,設定給的 RAM 不足,可以試試給 1024 MB (或更多) 再開看看。


Debug 2:

Sol 2: 未解決
參考:http://fireball-catcher.blogspot.tw/2012/07/grub4dos.html
用 imdisk 嘗試解決,又出現新的問題:
「缺少數位簽章或是惡意軟體」







Reference:
http://www.coolpc.com.tw/phpBB2/viewtopic.php?f=21&t=53402

http://fireball-catcher.blogspot.tw/2012/07/grub4dos.html

http://520.be/1496-%E5%88%A9%E7%94%A8grub4dos%E8%A3%BD%E4%BD%9Cusb%E9%96%8B%E6%A9%9F%E7%A2%9F.html#lightbox[gallery-DY9l]/6/

http://skynimo.lionfree.net/joomla/index.php?option=com_content&view=category&layout=blog&id=17&Itemid=101&limitstart=15

2014年10月27日 星期一

建立虛擬 SD Card



目標是建立一個 1GB 的 sdcard.img ,其分割區如下圖:



一、先建一個空的 sdcard.img (User 權限)

(其中 bs 是 block size)
dd if=/dev/zero of=sdcard.img bs=1G count=1

查看一下檔案屬性:
file sdcard.img
hexdump sdcard.img

會發現都是 0 組成的空檔案。

二、連接到 /dev/loop0 (Root 權限)

losetup /dev/loop0 sdcard.img

三、磁區分割 (Root 權限)

fdisk 指令參考
sudo fdisk /dev/loop0
n
p
1
[enter]
+80M

n
p
2
[enter]
[enter]
t
1
b

p
w

四、做 Offset (Root 權限)

fdisk -lu /dev/loop0
查看分割,輸出如下:
所用裝置 開機      開始         結束      區塊   識別號  系統
/dev/loop0p1            2048      165887       81920    b  W95 FAT32
/dev/loop0p2          165888     2097151      965632   83  Linux

losetup -o `expr 512 \* 2048` /dev/loop1  /dev/loop0
losetup -o `expr 512 \* 165888` /dev/loop2 /dev/loop0

查看連接結果,輸出如下:
losetup -a
/dev/loop0: [0804]:9701359 (/home/lin/qemu/sdcard.img)
/dev/loop1: [0005]:1218 (/dev/loop0),偏移值 1048576
/dev/loop2: [0005]:1218 (/dev/loop0),偏移值 84934656

五、格式化 (Root 權限)

先裝 filesystem tools
apt-get install dosfstools

fdisk -lu /dev/loop0
查看分割,輸出如下:
所用裝置 開機      開始         結束      區塊   識別號  系統
/dev/loop0p1            2048      165887       81920    b  W95 FAT32
/dev/loop0p2          165888     2097151      965632   83  Linux

開始格式化記得如入 blocks:
mkfs.vfat /dev/loop1 81920
mkfs.ext4 /dev/loop2 965632

看一下 block id ,如下:
blkid /dev/loop1 
/dev/loop1: SEC_TYPE="msdos" UUID="3A38-5A24" TYPE="vfat"
blkid /dev/loop2
/dev/loop2: UUID="dec7a9d5-b0bb-433b-aefb-6b4eecc28aba" TYPE="ext4"

Debug 1: 
如果找不到 mkfs.vfat 的指令

解決 1:
sudo apt-get install dosfstools

七、掛載  (Root 權限)

先建立要掛的目錄
mkdir  /sd1 /sd2

掛載
mount /dev/loop1 /sd1
mount /dev/loop2 /sd2

查看掛載
df -h

八、清除全部(Root 權限)

先卸載
umount /sd1
umount /sd2
df -h

解除連接(注意由下到上)
losetup -a
losetup -d /dev/loop2
losetup -d /dev/loop1
losetup -d /dev/loop0
losetup -a

九、連接及掛載(Root 權限)

  (可以8. 及 9. 反覆練習)
losetup /dev/loop0 sdcard.img
losetup -o `expr 512 * 2048` /dev/loop1
losetup -o `expr 512 * 165888` /dev/loop2
losetup -a

mount /dev/loop1 /sd1
mount /dev/loop2 /sd2
df -h

十、產生檔案

1. bootloader 可參考文章:u-boot 編譯
產生檔案:
MLO
u-boot
u-boot.bin
u-boot.img

2. kernel 可參考文章:編譯 ARM Linux 核心
產生檔案:
uImage
modules

3. Rootfs 可以參考文章:建立 Rootfs
瘦身過後的 Rootfs 全部檔案,
還需要含有步驟 2. 所編譯出來的核心 modules 

4. uEnv.txt 可參考文章:U-Boot 指令及建立 uEnv.txt
uEnv.txt        -> 開機設定檔

十一、分割區整理

sdcard1 -> 

第 1 個分割區,FAT 16/32 格式,有打開開機旗標,
內含檔案:
-rwxr-xr-x 1 root root   45128 2012-10-30 22:19 MLO
-rwxr-xr-x 1 root root 1215711 2012-10-30 22:19 u-boot
-rwxr-xr-x 1 root root  294672 2012-10-30 22:19 u-boot.bin
-rwxr-xr-x 1 root root  294736 2012-10-30 22:19 u-boot.img
-rwxr-xr-x 1 root root       1 2012-10-30 23:29 uEnv.txt
-rwxr-xr-x 1 root root 2475616 2012-10-30 22:15 uImage

sdcard2 -> 

第 2 個分割區,ext4 格式,
內含 rootfs 一些能正常開機執行的檔案,
還包含我們做好的核心 modules

十二、測試 sdcard.img

qemu-system-arm -M beagle -m 512 -nographic -sd sdcard.img








Reference:
http://pominglee.blogspot.tw/2012/10/sd-card.html

2014年10月23日 星期四

OCCT 燒機軟體



OCCT 燒機軟體,常用於測試電腦穩定度,
有玩超頻者的必備工具。

官網:
http://www.ocbase.com/

下載:
OCCTPT4.4.1.zip (免安裝版)
OCCTPT4.4.1.exe (安裝版 )


介面如下圖:


介面右側「Monitoring」可以查看下圖數據:


常用的燒機模式:POWER SUPPLY
可以全機燒機,包含 CPU、GPU、Memory... 等。







快速格式化工具



假設需要格式化的分割區為 /dev/sdb1,

  • HPFS/NTFS/exFAT

我們一般的 Linux 下格式化 NTFS 檔案系統格式,
常用的指令有:
mkfs -t ntfs /dev/sdb1
mkfs.ntfs /dev/sdb1

接下來推薦,NTFS 的快速格式化工具 ntfsprogs
sudo apt-get install ntfsprogs
mkntfs -f /dev/sdb1


  • EXT4

快速格式化要加 -T largefile 參數:
mkfs.ext4  -T largefile  /dev/sdb1










2014年10月22日 星期三

OpenHardwareMonitor 系統監測工具



Open Hardware Monitor 可用於監測系統資訊、溫度,
如:CPU、顯卡、記憶體…等。


官網:
http://openhardwaremonitor.org/

載點:
openhardwaremonitor-v0.6.0-beta.zip


可以自行設定( View -> 勾選 Show Gadget ),加到桌面顯示,如下圖:


設定開機啟動及長駐:





用 iconv 將檔案轉換格式


因為Big-5的檔案,看都會有亂碼,


所以就可以用

iconv

來將Big-5格式的檔案,


直接轉成UTF-8的格式。

(1) Big-5 To UTF-8

 

       
iconv -f big5 -t utf-8 big5.txt -o utf8.txt

(2) UTF-8 To Big-5

        
iconv -f utf-8 -t big5 utf8.txt -o big5.txt

MobaXterm 遠端連線工具



推薦軟體 MobaXterm
可以於 Windows 7 下,遠端連線至 SSH Server ,
且免 X Loader 直接支援圖形視窗複製文字

相似的軟體 PuTTY ,但是只裝 PuTTY 還要另裝 X Loader 。

官網:
MobaXterm

載點:
MobaXterm v7.3 (installer 安裝版)
MobaXterm v7.3 (portable edition 免安裝版)



開啟介面如下圖:


點選 Session 設定連線服務,支援相當多遠端方式:


點選在 Linux 最常用的 SSH,並直接打入要連的 IP (user 可以不用填):


從左側選單的 PuTTY sessions 可以選到所加的 IP。








安裝 QEMU Linaro 完整版

1. 修改鏡像站

先準備 Debian backports 鏡像站,後面安裝工具會需要:
sudo vi /etc/apt/sources.list

加入下面這行:
deb http://ftp.tw.debian.org/debian wheezy-backports main

下一步請更新套件
sudo apt-get update && apt-get upgrade

2. 下載 QEMU-Linaro

至 qemu-linaro 官方下載其檔案:
官方位置: https://launchpad.net/qemu-linaro
載點: qemu-linaro-1.7.0-2014.01.tar.gz

下載完後解壓縮,並進去 ./configure
tar xfva qemu-linaro-1.7.0-2014.01.tar.gz
cd qemu-linaro-1.7.0-2014.01/
./configure

可能遇到以下 ERROR:

問題1:
ERROR: pixman not present. Your options:
(1) Preferred: Install the pixman devel package (any recent
distro should have packages as Xorg needs pixman too).
(2) Fetch the pixman submodule, using:
git submodule update --init pixman
解決1:
sudo apt-get install libseccomp-dev

問題2:
ERROR: DTC not present. Your options:
(1) Preferred: Install the DTC devel package
(2) Fetch the DTC submodule, using:
git submodule update --init dtc
解決2:
sudo apt-get install -y libfdt-dev

成功後可以看到 ./configure 的內容後,
但是大多的功能都是 support no,
接下來要讓它們變 yes ,進行完整化。


3. 要安裝以下套件

libnss3-dev
libudev-dev
libpng12-dev
libghc6-zlib-dev
libogg-dev
libglobus-openssl-dev
libxrandr-dev
libxfixes-dev
libjpeg8-dev
libsasl2-dev
libiscsi-dev
librbd-dev
xfslibs-dev
libbrlapi-dev
libbluetooth-dev
libxen-dev
libvte-dev
libseccomp-dev
python-pyparsing

sudo apt-get install libnss3-dev libudev-dev libpng12-dev libghc6-zlib-dev libogg-dev libglobus-openssl-dev libxrandr-dev libxfixes-dev libjpeg8-dev libsasl2-dev libiscsi-dev librbd-dev xfslibs-dev libbrlapi-dev libbluetooth-dev libxen-dev libvte-dev libseccomp-dev python-pyparsing

接下來處理幾個比較麻煩的套件,
可以查看  qemu-linaro-1.7.0-2014.01/ 目錄下的 configure 內容,
vi configure

輸入關鍵字(例如 spice),可以找到所取少的套件。

spice support 要讓這個功能需要裝有
 --atleast-version=0.12.0 spice-server  (至少 0.12.0 版以上)
--atleast-version=0.12.3 spice-protocol (至少 0.12.3 版以上)

我們要到 spice 官方,下載,安裝如下面步驟:

4. 安裝 spice-0.12.5 

(如有遇到問題,解決方法在下面)
下載 spice-0.12.5.tar.bz2

tar xfva spice-0.12.5.tar.bz2
cd spice-0.12.5/

這邊的設定要多加 smartcard 開啟
./configure --enable-smartcard

會看到輸出:
Spice 0.12.5
        ==============
        prefix:                   /usr/local
        c compiler:               gcc -std=gnu99
        c++ compiler:             g++
        python:                   /usr/bin/python2
        Build Spice client:       no
        Smartcard:                yes
        SASL support:             yes
        Automated tests:          no
        Manual:                   no
        Now type 'make' to build spice

才接著編譯及安裝:
make -j ${core number}
sudo make install


裝 spice 問題一 (如果沒有就跳過此步驟)
Alternatively, you may set the environment variables CELT051_CFLAGS
and CELT051_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

因為 spice-0.12.5 只接受 CELT 051 版。

解決:
下載 celt-0.5.1.3.tar.gz
tar xfva celt-0.5.1.3.tar.gz
cd celt-0.5.1.3/
./configure
make -j ${core number}
sudo make install

裝 spice 問題二 (如果沒有就跳過此步驟)
checking for pyparsing python module... not found
configure: error: pyparsing python module is required to compile this package
解決:
sudo apt-get install python-pyparsing

裝 spice 問題三 (如果沒有就跳過此步驟)
checking sasl/sasl.h usability... no
checking sasl/sasl.h presence... no
checking for sasl/sasl.h... no
checking for sasl_client_init in -lsasl2... no
checking for sasl_client_init in -lsasl... no
configure: error: Missing required Cyrus SASL development package
解決:
sudo apt-get install libsasl2-dev


裝 spice 問題四 (如果沒有就跳過此步驟)
checking for SMARTCARD... no
configure: error: Package requirements (libcacard >= 0.1.2) were not met:
No package 'libcacard' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix.
Alternatively, you may set the environment variables SMARTCARD_CFLAGS
and SMARTCARD_LIBS to avoid the need to call pkg-config.
解決:
下載 libcacard-0.1.2.tar.bz2
tar xfva libcacard-0.1.2.tar.bz2
cd libcacard-0.1.2/
./configure
make -j ${core number}
sudo make install

承上面問題,裝 libcacard 問題 (如果沒有就跳過此步驟)
checking for NSS... no
configure: error: Package requirements (nss) were not met:
No package 'nss' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix.
Alternatively, you may set the environment variables NSS_CFLAGS
and NSS_LIBS to avoid the need to call pkg-config.
解決:
sudo apt-get install libnss3-dev


5. 安裝 spice-protocol-0.12.7

下載 spice-protocol-0.12.7.tar.bz2
tar xfva spice-protocol-0.12.7.tar.bz2
cd spice-protocol-0.12.7/
./configure
make -j ${core number}
sudo make install


6. 安裝 libusb-1.0.1

下載 libusb-1.0.19/libusb-1.0.19.tar.bz2
tar xfva libusb-1.0.19.tar.bz2
cd libusb-1.0.19/
./configure
make -j ${core number}
sudo make install


7. 安裝 usbredir-0.7

下載 usbredir-0.7.tar.bz2
tar xfva usbredir-0.7.tar.bz2
cd usbredir-0.7/
./configure
make -j ${core number}
sudo make install


8. 再回到(步驟 2.)  裝 qemu-linaro

cd qemu-linaro-1.7.0-2014.01/
./configure
內容如下:
tcg debug enabled no
gprof enabled no
sparse enabled no
strip binaries yes
profiler no
static build no
-Werror enabled no
pixman system
SDL support yes
GTK support yes
curses support yes
curl support yes
mingw32 support no
Audio drivers oss
Block whitelist (rw)
Block whitelist (ro)
VirtFS support yes
VNC support yes
VNC TLS support yes
VNC SASL support yes
VNC JPEG support yes
VNC PNG support yes
VNC WS support yes
xen support yes
brlapi support yes
bluez support yes
Documentation yes
GUEST_BASE yes
PIE yes
vde support yes
Linux AIO support yes
ATTR/XATTR support yes
Install blobs yes
KVM support yes
RDMA support yes
TCG interpreter no
fdt support yes
preadv support yes
fdatasync yes
madvise yes
posix_madvise yes
sigev_thread_id yes
uuid support yes
libcap-ng support yes
vhost-net support yes
vhost-scsi support yes
Trace backend nop
Trace output file trace-
spice support yes (0.12.7/0.12.5)
rbd support yes
xfsctl support yes
nss used yes
libusb yes
usb net redir yes
GLX support yes
libiscsi support yes
build guest agent yes
QGA VSS support no
seccomp support yes
coroutine backend ucontext
coroutine pool yes
GlusterFS support no
virtio-blk-data-plane yes
gcov gcov
gcov enabled no
TPM support no
libssh2 support yes
TPM passthrough no
QOM debugging yes
vhdx yes
接著編譯:
make -j ${core number}
安裝:
sudo make install


9. 重整 qemu 檔案路徑

安裝完後可能出現檔案路徑問題,請執行:
ldconfig


10. 查看版本

qemu-system-arm -version
QEMU emulator version 1.7.0 (qemu-linaro 2014.01), Copyright (c) 2003-2008 Fabrice Bellard

qemu-system-arm -M ?
Supported machines are:
none empty machine
beagle Beagle board (OMAP3530)
beaglexm Beagle board XM (OMAP3630)
collie Collie PDA (SA-1110)
nuri Samsung NURI board (Exynos4210)
smdkc210 Samsung SMDKC210 board (Exynos4210)
connex Gumstix Connex (PXA255)
verdex Gumstix Verdex (PXA270)
highbank Calxeda Highbank (ECX-1000)
midway Calxeda Midway (ECX-2000)
integratorcp ARM Integrator/CP (ARM926EJ-S) (default)
kzm ARM KZM Emulation Baseboard (ARM1136)
mainstone Mainstone II (PXA27x)
musicpal Marvell 88w8618 / MusicPal (ARM926EJ-S)
n800 Nokia N800 tablet aka. RX-34 (OMAP2420)
n810 Nokia N810 tablet aka. RX-44 (OMAP2420)
n900 Nokia N900 (OMAP3)
sx1 Siemens SX1 (OMAP310) V2
sx1-v1 Siemens SX1 (OMAP310) V1
overo Gumstix Overo board (OMAP3530)
cheetah Palm Tungsten|E aka. Cheetah PDA (OMAP310)
realview-eb ARM RealView Emulation Baseboard (ARM926EJ-S)
realview-eb-mpcore ARM RealView Emulation Baseboard (ARM11MPCore)
realview-pb-a8 ARM RealView Platform Baseboard for Cortex-A8
realview-pbx-a9 ARM RealView Platform Baseboard Explore for Cortex-A9
akita Akita PDA (PXA270)
spitz Spitz PDA (PXA270)
borzoi Borzoi PDA (PXA270)
terrier Terrier PDA (PXA270)
lm3s811evb Stellaris LM3S811EVB
lm3s6965evb Stellaris LM3S6965EVB
tosa Tosa PDA (PXA255)
versatilepb ARM Versatile/PB (ARM926EJ-S)
versatileab ARM Versatile/AB (ARM926EJ-S)
vexpress-a9 ARM Versatile Express for Cortex-A9
vexpress-a15 ARM Versatile Express for Cortex-A15
xilinx-zynq-a9 Xilinx Zynq Platform Baseboard for Cortex-A9
z2 Zipit Z2 (PXA27x)





其他 QEMU Bug 排除,參考文章:Bridge 建立橋接網路(QEMU Debug) 下方內容。

Reference:
http://pominglee.blogspot.tw/2014/06/linaro-qemu.html


2014年10月13日 星期一

用 QEMU 來開機 arm.img


1. 查看 .img 

查看一下我們做好的 image 檔案:
file arm.img
hexdump arm.img

再做一個空的 arm_test.img 測試 & 比較:
dd if=/dev/zero of=arm_test.img bs=1G count=2
file arm_test.img
hexdump arm_test.img

然後會發現, arm.img 裡頭有很多東西,但 arm_test.img 就是一個空的data。

2. 練習運算指令:expr

加法: expr 5 + 2
減法: expr 5 - 2
乘法: expr 5 \* 2
除法: expr 5 / 2

只有乘法比較特別,因為 * 是萬用特殊字元。

3. 對 image 檔案做連接,指令:losetup

到 ~/qemu_image 目錄下,需要 superUser
cd ~/qemu_image
su

查看連接狀況:
losetup -a

將 /dev/loop0 連接 arm.img:
losetup /dev/loop0 arm.img


4. 做磁區偏移(一樣 ROOT 下)

fdisk -lu /dev/loop0
所用裝置 開機      開始         結束      區塊   識別號  系統
/dev/loop0p1            2048     3913727     1955840   83  Linux
/dev/loop0p2         3915774     4192255      138241    5  延伸
/dev/loop0p5         3915776     4192255      138240   82  Linux 交換區/ Solaris

其中 /dev/loop0p1 的開始(0ffset)為 2048,我們需要修正 512 * 2048 個 sector:
losetup -o `expr 512 \* 2048` /dev/loop1 /dev/loop0


5. 核心檔案擷取

掛載:
sudo mount /dev/loop1 /mnt

複製核心檔案(這邊要一般 User)
cd /mnt/boot
cp vmlinuz-3.2.0-4-versatile ~/qemu_image
cp initrd.img-3.2.0-4-versatile ~/qemu_image

6. 用 QEMU 來做 arm.img 開機

我們先做一個 Shell Script:
vi runarm.sh

# !/bin/bash
#
# Run arm.img

qemu-system-arm -M versatilepb -m 512 \
-kernel ~qemu_image/vmlinuz-3.2.0-4-versatile \
-initrd ~qemu_image/initrd.img-3.2.0-4-versatile \
-hda ~qemu_image/arm.img \
-append "root=/dev/sda1" &

執行 runarm.sh
sh runarm.sh

7. 進入 QEMU - arm.img

開機以後,在QEMU中查看一下核心,證明我們是用 ARM 核心開機
cat /proc/cpuinfo

接下來套件更新
sudo apt-get update && apt-get upgrade -y

安裝 X-Window 套件
sudo apt-get install icewm xorg

清除套件,省空間
apt-get clean

進入圖形介面
startx

裝瀏灠器及 http 伺服器測試
sudo apt-get install iceweasel apache2
iceweasel &
網址列: localhost
可以看到 網頁 work 中...

關機
sudo halt





Reference:
http://pominglee.blogspot.tw/2013/11/qemu-arm.html



2014年10月11日 星期六

半自動備份檔案

這是我寫來備份一些辛苦調好的設定檔跟重要資料用。

說明:使用需要 ROOT 權限,需要裝有 xz-utils 套件,
要使用需要修改幾個地方: 

09 USER = 這邊改你自己的一般使用者帳號。

10 SAVE_AS = 要先建立好要存放備份檔的地方,
我個人是放 /bak_dir 下,再上傳到雲端空間。


最後是註解圍起來的地方「Backup List」,請自訂你想要備份的檔案、目錄。
vi Backup_data.sh
#!/bin/bash
# 2014/06/24 aaronhuang
# Backup My data.

# parameter setting
TIME=`date +"%Y%m%d"`

# Use Setting
USER=youUsserName
SAVE_AS=/bak_dir

BAK_DIR=backup_$TIME
BAK_TARGET=$SAVE_AS/$BAK_DIR

# check account
if [ ! `whoami` == root ];then
        echo "Permision Deny, you're no root."
        exit 0
fi

# check directory
if [ -e "$BAK_TARGET.tar.xz" ];then
        echo "Directory exist!" 
        exit 0
fi

# build directory
mkdir $BAK_TARGET
mkdir -p $BAK_TARGET/root_dir
mkdir -p $BAK_TARGET/${USER}_dir

##############################################################
## Backup List
# system backup list
rsync -av /etc $BAK_TARGET/root_dir

# root backup list
rsync -av /root/.bashrc $BAK_TARGET/root_dir
rsync -av /root/.vimrc $BAK_TARGET/root_dir
rsync -av /root/* $BAK_TARGET/root_dir

# user backup list
rsync -av /home/$USER/.bashrc $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/.conkyrc $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/.vimrc $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/.xinitrc $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/.asoundrc $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/bin $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/images $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/Notes $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/Other_work $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/sdl $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/Script $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/Eclipse $BAK_TARGET/${USER}_dir
rsync -av /home/$USER/Java $BAK_TARGET/${USER}_dir
#rsync -av /home/$USER/driver $BAK_TARGET/${USER}_dir
##############################################################

# compress
cd $SAVE_AS;tar -c --xz -f $BAK_DIR.tar.xz $BAK_DIR

# remove dir
rm -r $BAK_TARGET

# permision change
chown $USER:$USER $BAK_TARGET.tar.xz

最後加入可執行權限,放到執行檔目錄下:
chmod a+x Backup_data.sh
mv Backup_data.sh /usr/local/bin/

使用方法,直接下 Backup_data.sh 指令。






2014年10月10日 星期五

DHCP Server

可以自建 Bridge ,並設一個虛擬網段,能給虛擬機使用,
讓虛擬機自動抓到 ip 。
(以下皆需要 ROOT )

1. 安裝
sudo apt-get -y install isc-dhcp-server


2.建立虛擬網段
可以參考 Bridge 建立橋接網路 來建立!

3. 設定 dhcpd.conf
vi /etc/dhcp/dhcpd.conf

subnet 192.168.9.0 netmask 255.255.255.0{
range 192.168.9.51 192.168.9.100;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.9.255;
option routers 192.168.9.1;
option domain-name-servers 120.117.2.1;
next-server 192.168.9.254;
filename "pxelinux.0";


4. 重啟 DHCP 服務
/etc/init.d/isc-dhcp-server restart
update-rc.d isc-dhcp-server defaults






ssh 遠端連線「安全性」

ssh 是一個遠端連線服務,但連上網路後,
有可能會有相當的資安風險,因此要多幾道防禦手續。

1. 安裝 ssh server。
sudo apt-get update && apt-get install ssh


2. 測試遠端連線
(-X 是支援 X11,可遠端開圖形介面程式)。
ssh -Xl Account IP
ssh -X Account@IP

舉例:
Account : userA
IP: 192.168.1.2

ssh -Xl userA 192.168.1.2
ssh -X userA@192.168.1.2
-------------------------------------------------------------------------
安全性1. 拒絕遠端直接登入 Root。
一般而言,我們使用 Root 之前,會先登入一般 User,
再用 su 指令來進入 SuperUser 權限;而拒絕 ssh 直接連 root ,意思是要遠端取得 root 權限,需要有兩組密碼才行!
(當然 root 跟一般 user 密碼要不同。)
vi /etc/ssh/sshd_config

將 「PermitRootLogin」開啟,並 yes

/etc/init.d/ssh restart


安全性2. ssh 黑名單套件。
當有人嚐試遠端登入,並失敗一定次數時,
代表這位遠端使用者來者不善,我們可以把它加到:
/etc/hosts.deny 把它黑名單掉!!
安裝下面套件可以自動完成這件防禦機制:
apt-get update
apt-get install denyhosts openssh-blacklist openssh-blacklist-extra
/etc/init.d/ssh restart


更詳細設定要參考下面設定檔,
包含對方連幾次才加黑名單之類的…
vi /etc/denyhosts.conf






2014年10月8日 星期三

APT 套件安裝管理


高階包裝工具 APT (dvanced Packaging Tools),
為 Debian 發行的二進制下載機制,
也已經可以安裝在支援RPM的系統管理RPM套件。

1. 設定檔 (本例使用 Opensource)

vi /etc/apt/sources.list

## Security.debian
deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main

## Opensource
deb http://opensource.nchc.org.tw/debian/ wheezy main
deb-src http://opensource.nchc.org.tw/debian/ wheezy main
deb http://opensource.nchc.org.tw/debian/ wheezy-updates main
deb-src http://opensource.nchc.org.tw/debian/ wheezy-updates main


2. apt 操作用法:

資安套件及同步套件更新
apt-get update


已裝套件升級
apt-get upgrade


安裝與移除
apt-get install
apt-get remove


其他常用
apt-get -f install
apt-get autoremove
apt-get install debian-keyring


APT 的選單模式
aptitude


Debug 1.

問題:
GPG error: http://www.debian-multimedia.org etch Release: The following signatures couldn't be verified because teh public key is not available: NO_PUBKEY 123456789123456789

Sol:
apt-get install debian-keyring
gpg --keyserver pgp.mit.edu --recv-keys 123456789123456789
gpg --armor --export 123456789123456789 | apt-key add -

Debug 2.

問題,安裝 ARM-Toolchain 後,update 出現:
W: GPG error: http://www.emdebian.org wheezy Release: 由於無法取得它們的公鑰,以下簽章無法進行驗證: NO_PUBKEY B5B7720097BB3B58

Sol:
apt-get install emdebian-archive-keyring


Debug 3.

問題,`apt-get update` 後出現
W: 無法取得 http://dl.google.com/linux/chrome/deb/dists/stable/Release,Unable to find expected entry 'main/binary-armhf/Packages' in Release file (Wrong sources.list entry or malformed file)

E: Some index files failed to download. They have been ignored, or old ones used instead.





2015-07-01 新增

使 APT 套件,安裝時,可以按 [TAB] 鍵取得完整名稱。
sudo apt-get install bash-completion
source /etc/bash_completion

即可使用 [TAB] 功能:
apt-get ins [TAB]
apt-get install dove[TAB]
apt-get install dovecot[TAB]










http://askubuntu.com/questions/86375/apt-get-autocomplete-package-name-is-broken
http://webplay.pro/linux/ubuntu/enable-apt-get-autocomplete.html

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: 

2014年10月7日 星期二

使用者、群組及密碼設定



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 --------------------------> 改檔案、目錄的權限





安裝 i386 之 .deb 檔

目標是於 x86_64 系統下,安裝 32 位元 .deb 檔套件。


假設,要安裝Adobe Reader i386時,首先要下載官方安裝軟體 .deb 檔。
載點:
https://get.adobe.com/tw/reader/download/?installer=Reader_8.1.7_Chinese_Trad_for_Linux_(.deb)&standalone=1


接著:


dpkg --add-architecture i386
apt-get update
apt-get -fy install
dpkg -i [AdobeReader..................deb]








安裝 QEMU 虛擬機

目標是建置一個 ARM Image 的虛擬機環境。

1. 先安裝 QEMU 虛擬環境套件( 基礎版先讓 KVM、SDK support 起來):

libtool
zlib1g-dev
pkg-config
libsdl1.2-dev
libcurl4-openssl-dev
libsasl2-dev
libaio-dev
libvde-dev
libvdeplug2-dev
uuid-dev
libcap-ng-dev

sudo apt-get update && apt-get install -y libtool zlib1g-dev pkg-config libsdl1.2-dev libcurl4-openssl-dev libsasl2-dev libaio-dev libvde-dev libvdeplug2-dev uuid-dev libcap-ng-dev


2. 至官網下載 QEMU 最新版本 (本例為 QEMU version 2.1.2):

http://wiki.qemu.org/Main_Page

3. 解壓縮檔案:

tar xfva qemu-2.1.2.tar.bz2


4. 到 qemu-2.1.2.tar.bz2 解壓縮的目錄下,進行參數設定:

./configure


如上所述,要看到:
SDL support       yes
KVM support      yes

5. 接著進行編譯:

make -j [核心數]


核心數可以用 cat /proc/cpuinfo 來查看 siblings 核心處理序數量。

6. 開始安裝 QEMU :

sudo make install

安裝完後,其目錄會自動建置在 /usr/local/bin 底下。

7. 查看 QEMU 版本:

qemu-system-arm -version

8. 查看所支援的硬體平台:

qemu-system-arm -M ?



其他 QEMU Bug 排除,參考文章:Bridge 建立橋接網路(QEMU Debug) 下方內容。


安裝 Nvidia 顯卡驅動

1. 查看自己的顯卡型號 (本例如下型號):


lspci

01:00.0 VGA compatible controller: NVIDIA Corporation G94 [GeForce 9600 GT] (rev a1)


2. Nvidia 官方載點:

http://www.nvidia.com.tw/Download/index.aspx?lang=tw

下載以 Nvidia Geforce 9600 GT 為例,如下圖:

搜尋後,下載到一個「NVIDIA-Linux-x86_64-340.32.run」。

3. 開始安裝(頁面最下方有 Debug 說明):

sh NVIDIA-Linux-x86_64-340.32.run

4. 在 X-Windows 下,以終端機開啟 Nvidia 設定視窗,指令如下:

nivida-setting

可以查看到各項顯卡設定,
例如我有兩台螢幕,在裡面設定:

左螢幕:
 

右螢幕(主要):

輸出結果:

5. 以 Blender 軟體為例,來驅動 3D 硬體加速:

至軟體 Blender > file > system > USR...> compute device > CUDA

Debug 1. 

過程需要關 X-Windows  ,若 X 無法關閉(以gnome為例),
則需要移除下列三個套件:
gnome
gnome-core
gdm3

apt-get remove gnome gnome-core gdm3


Debug 2.

過程中發現 nouveau 驅動模組無法關閉( rmmod )的話,
則有可能是在核心編譯過程中,選到 <*> 或 <M>  所致:

先試試停用 Nouveau 驅動模組,
(特別注意下面是兩個大於符號):
echo "blacklist nouveau" >> /etc/modprobe.d/fbdev-blacklist.conf
reboot

如果還是不行,請重新做核心編譯:
> Device Drivers >
Graphics support >
< > Nouveau (nVidia) cards


解決方法為,重編核心,把上面的 <*> 或 <#> 改為 < >
把 kernel 內建的 nvidia 驅動關閉,我們另裝官方提供的驅動程式。



Linux Kernel 編譯及更新

1. 安裝編譯工具

#gcc-4.4
gcc
#g++-4.4
g++
#cpp-4.4
cpp
m4
make
nasm
bison
flex
autoconf
automake
autotools-dev
#compile kernel
kernel-package
libncurses5-dev
# Fetch Source Code
git
subversion

將上述工具、套件 copy 起來,
並建立一個編譯工具安裝列表 PKG_PROG 文字檔 paste 上去,
可以更方便紀錄及管理;接著下 cmd 安裝:
sudo apt-get update && apt-get install -y `grep -v ^# PKG_PROG`

grep 是擷取文字。
-v 是 inverter 反向。
^# 相當等於 \# ,因為 # 為特殊字元,要用反斜線或^來使用。

2. 至 https://www.kernel.org/ ,下載最新的核心版本,
建議使用 longterm (長期支援版),下載至 /usr/src 目錄下,
下面以linux-3.14.20.tar.xz 為例。


3. 電腦驅動模組:

lspci -v
lspci -k
lsmod
cat /proc/cpuinfo


基本的查看的項目:Ethernet、VGA、Audino…等,以我的為例:
02:00.0 Ethernet controller: Atheros Communications Inc. AR8121/AR8113/AR8114 Gigabit or Fast Ethernet (rev b0)
Subsystem: ASUSTeK Computer Inc. Device 8226
Flags: bus master, fast devsel, latency 0, IRQ 17
Memory at fe9c0000 (64-bit, non-prefetchable) [size=256K]
I/O ports at bc00 [size=128]
Capabilities:
Kernel driver in use: ATL1E

01:00.0 VGA compatible controller: NVIDIA Corporation G94 [GeForce 9600 GT] (rev a1) (prog-if 00 [VGA controller])
Subsystem: ASUSTeK Computer Inc. Device 8304
Flags: bus master, fast devsel, latency 0, IRQ 46
Memory at fd000000 (32-bit, non-prefetchable) [size=16M]
Memory at c0000000 (64-bit, prefetchable) [size=512M]
Memory at fa000000 (64-bit, non-prefetchable) [size=32M]
I/O ports at ac00 [size=128]
[virtual] Expansion ROM at fe880000 [disabled] [size=512K]
Capabilities:
Kernel driver in use: nvidia

06:00.0 Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)
Subsystem: Device 160b:0010
Flags: bus master, medium devsel, latency 64, IRQ 16
I/O ports at ec00 [size=32]
I/O ports at e880 [size=128]
Capabilities:
Kernel driver in use: snd_ice1724


4. 先解壓縮,並做一個 sublink 到 linux,並進去做核心參數設定

tar xfva linux-3.14.20.tar.xz
ln -s /usr/src/linux-3.14.20 /usr/src/linux
cd /usr/src/linux

make menuconfig


下面開始做最基本的核心選單設定,可以用 "/" 來做搜尋,輸入上面找到的 Kernel driver,可以更快的開啟模組:

設定編譯的壓縮格式,XZ 為壓縮率高及失真率低優點:
> General setup > Kernel compression mode > XZ


設定自己核心所屬的家族 (本例是 Core 2/newer Xeon):
> Processor type and features > Processor family > (Core 2/newer Xeon)


網路卡開啟自己的型號(本例是 Atheros 要開啟 ):
> Device Drivers > Network device support > Ethernet driver support > Atheros 全開


顯卡驅動( 本例是 Nvidia ),這邊注意不能選<*> ,後面要裝官方驅動會有問題。
> Device Drivers > Graphics support >  <M> Nouveau (nVidia) cards 


音效卡驅動(本例是 Onkyo SE-90PCI 音效卡,晶片為 VT1720/24 [Envy24PT/HT]):
-> Device Drivers > Sound card support (SOUND [=m])  > Advanced Linux Sound Architecture (SND [=m])  > PCI sound devices (SND_PCI [=y])  >   ICE/VT1724/1720 (Envy24HT/PT) 


選好所需要的核心模組後,及可按 Exit 並儲存離開,回到 /usr/src/linux 目錄下。

5. 開始編譯!直接指令來 Run :

time make-kpkg --initrd --revision=[版本名稱] kernel_image -j [核心數]


版本名稱可以自訂,一般設定習慣為 1.0.1.xxx 這種格式,數字及英文代號皆可自訂。
核心數可以用 cat /proc/cpuinfo 來查看 siblings 核心處理序數量。

6. 編譯完成,來進行最後核心 .deb 檔的安裝(本例核心版本名稱為 1.0.1.lpm ):

sudo dpkg -i linux-image-3.14.20_1.0.1.lpm_amd64.deb


7. 安裝完成,重開機~

sudo shutdown -r now 或
reboot

8. 查看核心版本:

uname -a