2011年1月25日 星期二

VirtualGL + TurboVNC

VirtualGL + TurboVNC
1. install VirtualGL + TurboVNC
2. Start TurboVNC Server by
ssh to server and
/opt/TurboVNC/bin/vncserver
3. Start TurboVNC Client by
/opt/TurboVNC/bin/vncviewer
And if U want to run any 3D applications MUST:

Procedure

In the terminal, start a 3D application using VirtualGL:
/opt/VirtualGL/bin/vglrun [vglrun options] {application_executable_or_script} {arguments}
The TurboVNC startup script sets the VGL_COMPRESS environment variable to 0, which will automatically enable the X11 Transport within VirtualGL.

applications can be
glxgears
/usr/games/foobillard

2011年1月24日 星期一

Arduino 初探

這個東西會是我以後 SmartHouse 的控制器...
優點:
1. 便宜 - 一組約1000, 可以有 13個 Digital I/O port and 6 Analog I/O port.
2. 可以連接 USB 透過 Terminal 直接送命令, as
     echo "t" > /dev/ttyUSB0
    配合下面 Code 可以控制開關LED 燈.

  1. void setup() {
  2. Serial.begin(9600);
  3. Serial.print("Ready");
  4. pinMode(13,OUTPUT);
  5. }
  6. void loop() {
  7. if ( Serial.available()) {
  8. char ch = Serial.read(); //接收由電腦端傳來的字元
  9. Serial.print(ch);
  10. switch(ch) {
  11. case 't':
  12. digitalWrite(13,HIGH); //將PIN3輸出高電位
  13. delay(1000);
  14. break;
  15. case 'r':
  16. digitalWrite(13,LOW); //將PIN3輸出高電位
  17. delay(1000);
  18. break;
  19. }
  20. }
  21. }

3. 透過訊號加強可以延伸至 50M, 應該有 repeater 可以繼續延伸才對.
4. 軟體 0022 版支援 Ubuntu 10.10
5. ...

2011年1月4日 星期二

MDADM-raid指令


#停止磁碟陣列

mdadm --manage --stop /dev/md0

#啟動磁碟陣列
mdadm --assemble --run /dev/md0

#查看RAID狀態
# mdadm --detail /dev/md0

#建立RAID5
mdadm --create /dev/md1 --level=raid5 --raid-devices=5 --chunk=4 /dev/sd{b,c,d,e,f}1
mdadm --create /dev/md1 --level=raid5 --raid-devices=5 --chunk=4 /dev/sd{g,h,i,j,k}1

#建立 RAID0
mdadm --create /dev/md0 --level=raid0 --raid-devices=3 /dev/sda4 /dev/sdb1 /dev/sdc1
mdadm --create /dev/md0 --level=raid0 --raid-devices=5 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde3

#RAID的配置文件
/etc/mdadm.conf 的文件主要提供我們方便管理,編輯這個文件可以讓RAID更好的為我們工作,當然這個步驟不是必要的.不經過編輯配置文件也可以讓RAID工作。
首先掃描系統中的全部陣列

# mdadm --detail -scan

ARRAY /dev/md0 level=raid5 num-devices=3 UUID=37230e69:51bcf476:9889f244:18b07644
devices=/dev/sda,/dev/sdb,/dev/sdd,/dev/sdc
# vi /etc/mdadm.conf
-------------------------------------------------------------------------------------------------------
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=37230e69:51bcf476:9889f244:18b07644
devices=/dev/sda,/dev/sdb,/dev/sdd,/dev/sdc
-------------------------------------------------------------------------------------------------------
其中的資料就如同 mdadm --detail -scan 一樣定義了RAID基本資料.
如果你不想手動設定用下面的指令同樣也可以.
mdadm --detail -scan >> /etc/mdadm.conf

#RAID的管理
mdadm /dev/md0 --add /dev/sdd1
mdadm /dev/md0 --fail /dev/sdc1
mdadm /dev/md0 --remove /dev/sdc1
mdadm --manage --run /dev/md0 重建指令 !!小心使用!!

#spare-group

#Multipath
mdadm -C /dev/md0 --level=multipath --raid-devices=2 /dev/sda1 /dev/sdb1


ARRAY /dev/md0 level=raid5 num-devices=5 metadata=00.90 spares=1 UUID=90dcc677:e6ef7c62:9baf8322:4f9d823d
ARRAY /dev/md1 level=raid5 num-devices=5 metadata=00.90 spares=1 UUID=981e1b70:736d1fb5:9baf8322:4f9d823d

Ref. 
http://ericbbs.blogspot.com/2009/05/mdadm-raid.html

UBUNTU 10.10 在現有系統下卦載 RAID1 採用 mdadm

首先, 步驟很多...and 記得資料要備份!!!! 很危險!!地球人要小心....XD..
我大概弄了15個小時, 很多狀況......不過大概有點眉目了, 有需要的人可以跟著做看看!

1. 首先我假定現有系統為 /dev/sda1(/) 與 /dev/sda2 (swap) 以及 /dev/sda3 (/home). (p.s. 我安裝UBUNTU時的分割是這樣).
然後我安裝了一個新硬碟 /dev/sdb (要大於 or 等於原來的/dev/sda), 並希望 Raid 建立好後產生 /dev/md0, dev/md1, dev/md2 這3個對應的虛擬分割, 這3個分割分別為/dev/sda(1-3) 與 /dev/sab(1-3) 的組合(Ex. /dev/md0 = /dev/sda1 + /dev/sdb1). 然後.....

2. 要把分割複製過來新硬碟, 記得 sudo su 成 root.
$ sfdisk -d /dev/sda | sfdisk –force /dev/sdb
可以用 sfdisk -l 看看有沒有成功.
再來要把新的分割區弄成Raid格式.
$ fdisk /dev/sdb
$ Command (m for help): <– t
$ Partition number (1-3): <– 1
$ Hex code (type L to list codes): <– fd
Changed system type of partition 1 to fd (Linux raid autodetect)
$ Command (m for help): <– t
$ Partition number (1-3): <– 2
$ Hex code (type L to list codes): <– fd
Changed system type of partition 2 to fd (Linux raid autodetect)
$ Command (m for help): <– t
$ Partition number (1-3): <– 3
$ Hex code (type L to list codes): <– fd
Changed system type of partition 3 to fd (Linux raid autodetect)
$ Command (m for help): <– w 



3. 再來就要建立我們的 RAID1 了
$ mdadm –create /dev/md0 –level=1 –raid-disks=2 missing /dev/sdb1 
$ mdadm –create /dev/md1 –level=1 –raid-disks=2 missing /dev/sdb2 
$ mdadm –create /dev/md2 –level=1 –raid-disks=2 missing /dev/sdb3
採用 missing 選項可以讓 mdx 先建立, 然後可以用  cat /proc/mdstat 看卦載狀態,
他會顯示 [_U] 表示你的 RAID1(mirror) 只掛了一個上來. 
接著給定檔案系統
$ mkfs.ext4 /dev/md0 
$ mkswap /dev/md1 
$ mkfs.ext4 /dev/md2
然後, 
$ cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
$ mdadm –examine –scan >> /etc/mdadm/mdadm.conf
這邊是用來建立 conf 檔 for mdadm.


4. 緊接著把做好的 raid 掛上系統
$ mkdir /mnt/md0
$ mkdir /mnt/md2
$ mount /dev/md0 /mnt/md0

$ mount /dev/md2 /mnt/md2


再來要編輯掛載設定 /etc/fstab 了, 這邊很重要!!!!要小心!!!
我先貼上我的例子..
---BOF

# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/sda5 during installation
#UUID=f4fce5b2-237f-461a-af96-5ad499c5ee71 /               ext4    errors=remount-ro 0       1
/dev/md0 / ext4 errors=remount-ro 0 1
#/home was on /dev/sda7 during installation
#UUID=5b2001cb-3a8a-4ed5-b75d-3a46f49637cf /home           ext4    defaults        0       2
/dev/md2 /home ext4 defaults 0 2
#/dev/sda6       none            swap    sw              0       0
/dev/md1 none swap sw

---EOF
以上是把本來用 UUID 的方式換成 /dev/mdx. 接著是 /etc/mtab
---BOF

/dev/md0 / ext4 rw,errors=remount-ro,commit=0 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
none /sys sysfs rw,noexec,nosuid,nodev 0 0
fusectl /sys/fs/fuse/connections fusectl rw 0 0
none /sys/kernel/debug debugfs rw 0 0
none /sys/kernel/security securityfs rw 0 0
none /dev devtmpfs rw,mode=0755 0 0
none /dev/pts devpts rw,noexec,nosuid,gid=5,mode=0620 0 0
none /dev/shm tmpfs rw,nosuid,nodev 0 0
none /var/run tmpfs rw,nosuid,mode=0755 0 0
none /var/lock tmpfs rw,noexec,nosuid,nodev 0 0
/dev/md2 /home ext4 rw,commit=0 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,noexec,nosuid,nodev 0 0
gvfs-fuse-daemon /home/tschen/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,user=tschen 0 0
---EOF

一樣要把本來 dev/sdxx 換成 /dev/mdx.


然後利用這兩個檔案的內容去更新 GRUB by.....
$ cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup
$ vi /etc/grub.d/09_swraid1_setup

     加入 set root=’(md0)’  in 09_swraid1_setup
Then
$ update-grub
$ update-initramfs -u


再來要把資料複製到mdx中....這邊是我的配置方式, 各個機器會不一樣.
$ cp -dpRx / /mnt/md0
$ cd /home
$ cp -dpRx . /mnt/md2



然後更新開機選單
$ grub-install /dev/sda
$ grub-install /dev/sdb



重開機!!!!!!!!!!!!!!!


5. 重開機後用 df -h 看看, mdx 有沒有全部掛上, 如果沒有請修改 /boot/grub/grub.cfg
這是我一部份的 grub
---BOP

menuentry 'Ubuntu, with Linux 2.6.35-24-generic-pae' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod raid
insmod mdraid
insmod part_msdos
insmod ext2
set root='(md0)'
search --no-floppy --fs-uuid --set 4302605f-d4bc-4437-abed-dc775cb53e8b
linux /boot/vmlinuz-2.6.35-24-generic-pae root=UUID=4302605f-d4bc-4437-abed-dc775cb53e8b ro   quiet splash
initrd /boot/initrd.img-2.6.35-24-generic-pae
}

---EOP
請注意!! UUID 要這樣查
$ blkid -s UUID


然後再重開機, 反正....就是要搞到開機後 df -h 都看到自己的 '/' and '/home' 都是從 /dev/mdx 掛載的. 才能再繼續做!!


再來就是要改 /dev/sda 的 Partition了! 
$ fdisk /dev/sda
$ Command (m for help): <– t
$ Partition number (1-4): <– 1
$ Hex code (type L to list codes): <– fd
Changed system type of partition 1 to fd (Linux raid autodetect)
$ Command (m for help): <– t
$ Partition number (1-4): <– 2
$ Hex code (type L to list codes): <– fd
Changed system type of partition 2 to fd (Linux raid autodetect)
$ Command (m for help): <– t
$ Partition number (1-4): <– 3
$ Hex code (type L to list codes): <– fd
Changed system type of partition 3 to fd (Linux raid autodetect)
$ Command (m for help): <– w



你會看到通通變成 Linux raid autodetect


然後就可以把硬碟加進 RAID1 了, By...
$ mdadm –add /dev/md0 /dev/sda1 
$ mdadm –add /dev/md1 /dev/sda2 
$ mdadm –add /dev/md2 /dev/sda3
可以用
$ cat /proc/mdstat
看狀態, 應該都要變成 [UU] 才對, 如果你有看到正在同步中, 請讓他跑完再重開機, 不然資料會掰掰, 切記!!!!!!!!!!!!!!!


再跑一次
$ cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf
$ mdadm –examine –scan >> /etc/mdadm/mdadm.conf
產生新的 /etc/mdadm/mdadm.conf


Then
$ rm -f /etc/grub.d/09_swraid1_setup
$ update-grub
$ update-initramfs -u



重開機!!!!!!!!!!!!!!! and KO!


開機後你應該可以在 系統->管理->磁碟公用程式 看到 RAID 了.



修復grub

昨晚不小心把Grub搞卦了...怎修勒..
1. Check 現有狀態
grub rescue>set
prefix=(hd1,1)/boot/grub
root=hd1,1

2. 改成可以開機的位置
grub rescue>ls
(hd0), (hd0,1), (hd0,2)
grub rescue>set root=(hd0,1)
grub rescue>set prefix=(hd0,1)/boot/grub
grub rescue>insmod normal
grub rescue>normal
接下來應該選單會出現.......

3. 進入系統後記得!!!!

執行update-grub修改menu
sudo update-grub
然後重新安裝grub於 sda 中
sudo grub-install /dev/sda

硬碟鏡像備份

sda to sdb 採用
dd if=/dev/sda of=/dev/sdb
也可以 sda1 to sdb1