2012年9月26日 星期三

電腦教室螢幕廣播軟體 iTALC 安裝及基本操作

iTALC - Intelligent Teaching And Learning with Computers

由於使用需要,找到了這套螢幕廣播軟體,才發現在學術界這套早就行之有年。
主要用來電腦教室上課時,老師可以全權掌控電腦,讓同學能專心聽課(以前上電腦課時,都在玩接龍^_^)。


iTALC 特點:
概觀模式:透過畫中畫功能,讓教師在主電腦能夠同時查看課室內所有學生電腦,並能夠擷取螢幕;
遠端控制:透過遠端控制,為學生提供支援或指導;
演示模式:可以以全螢幕或畫中畫形式,強制把教師電腦的螢幕在學生電腦上顯示,又或把指定學生的電腦螢幕轉發至其他學生的電腦螢幕上;
文字信息:透過軟件向學生傳送文字信息;
封鎖電腦:對於不專心的學生,可以透過封鎖他們的電腦,讓他們專心上課,而不能利用電腦作其他課堂以外的功能;
遠端開關:能夠透過Wake on LAN功能使課室內的電腦同時開啟,亦能同時關閉或重新啟動所有電腦;
遠端取證:當有學生違規使用電腦,可以即時擷取畫面作為證據;
在家學習:由於iTALC採用了SSH認證而不是其他遠端操控軟體的密碼控制,使網路上存取教學資源更安心。而iTALC亦支援VPN連線;
線程優化:透過對軟件的線程化,iTALC在多核心系統上的運行得到優化。
常駐電腦:與其他的MUSE或TightVNC不同的是,iTALC常駐在電腦之後,無法直接從Taskbar或Task Manager關閉,免除學生透過停止程式而規避監管。另外,程式的反安裝亦無法>從控制台執行,而要執行特別的命令。
遠端登入:透過指定的命令能夠遠端使所有學生電腦以指定的登入信息登入網路,這對低小年級學生最有幫助,因為一年級的學生很多時對鍵盤不熟習,需要花很多時間於電腦的登入。

本文章是以 debian wheezy 為主,理論上 ubuntu 應該也通用。

首先找一台當老師的電腦,其他就是學生電腦。

在老師電腦上:
$ sudo apt-get install italc-master

建立公鑰及私鑰:
$ sudo ica -createkeypair
會產生二個檔案
/etc/italc/keys/private/teacher/key     私鑰
/etc/italc/keys/public/teacher/key      公鑰

公鑰是任何人都能讀取的,而私鑰的檔案預設是無法讓 root 以外人看的,權限為 root:root 0440
將私鑰權限改成老師這台電腦的使用者可讀權限。如 teacher group,然後將使用者加入 teacher 群組即可:

$ sudo chgrp teacher /etc/italc/keys/private/teacher/key
$ sudo gpasswd -a your_username teacher
加入群組後,不會立刻生效,先登出再登入即可。

先執行 client 端程式(會在背景跑,並在通知區有一個綠色圖示):
$ ica &

再執行 master 端程式:
$ italc &

在學生電腦上:
$ sudo apt-get install italc-client

將老師那台產生的公鑰拷貝過來放到同樣位置。
/etc/italc/keys/public/teacher/key

執行 client 端程式(會在背景跑,並在通知區有一個綠色圖示):
$ ica &

防火牆部分,使用 5800 及 5900 埠,若電腦已安裝 vnc 軟體,則必須先行關閉,或在設定時使用其他埠,否則會造成相衝。另外,當廣播學生電腦時,課室所有電腦會連接到有
關學生電腦的 5858 埠。

學生電腦部份,只要執行 ica 及防火牆開 tcp port 5800, 5900, 5858 即可,其他就沒事了。

開始使用老師的電腦:
執行 italc & 後,若沒問題,會出現一個控制視窗。
最上方大圖示的工具列,可在最左上角一點點空白的地方,以滑鼠左鍵來拖曳到四個角落。
第一步先建立一間教室。
左邊小圖示第二個按鈕,進入 classroom-manager。
在中間空白地方按右鍵->Add Classroom 來建立教室,如 "我的教室"。
在中間空白地方按右鍵->Add Computer 來建立學生電腦。
IP/hostname:填入 ip
Name:看到的名稱
Mac-Address:網卡卡號,用來遠端開機用。

重覆將所有學生電腦都加入教室,完成後同樣按左邊小圖示第二個按鈕,關閉 classroom-manager。

按上方大圖示第一個 Classroom, 點選 "我的教室",會出現並連接所有學生電腦的視窗,若沒問題,則出現全部學生螢幕的縮圖。

在任一台學生電腦上按滑鼠右鍵,僅對該台電腦做動作。而在最上方工具列上則是對所有電腦做動作。

Overview:任何時間按此鈕,可結束之前狀態(如 Demo, Lock),回到所有電腦列表。
Fullscreen Demo:將老師桌面以全螢幕模式廣播到學生電腦螢幕。
Window Demo:將老師桌面以視窗模式廣播到學生電腦螢幕。
Lock aLL:鎖定學生電腦螢幕。
Text message:送文字到學生電腦。
Power on:電腦開機。
Power down:電腦關機。(在 linux 好像沒用)
Logon:windows 用的吧。
Support:對單一電腦做遠端控制,直接輸入 ip 即可,不用從一堆電腦清單中去尋找某台電腦。

另外,按上方工具列最右邊箭頭還可看到 2 個圖示。
Adjust/Align:整理電腦清單,填滿整個視窗。
Auto viewe:自動排列是否啟用。

在學生電腦上按右鍵,某些功能是 windows 上才有用的,如 logon user, logout user, reboot, power down 等等。
View live:觀看學生電腦畫面。(偷看有沒有在打電動)
Remote control:操控學生電腦。
Let student show demo:將學生電腦畫面廣播到所有人螢幕。
Take a snapshot:將學生電腦畫面截圖(抓學生做壞事要有證據 ^_^)。
Execute command:在學生電腦執行指令。

左方小圖示工具列第 3 個是用來觀看所有截圖。
第四個為設定,若是效能不好,可調整畫面更新間隔,預設 1 秒鐘,以及廣播畫面時的品質。
直接左鍵點二下,預設功能是操控該學生的電腦,可由此來修改。

基本上 italc 使用起來非常直覺,很容易上手,就介紹到此。


由於 arch aur 當中的 italc 為 2.0.0,但新版又無法和舊版相容,可是 debian 及 ubuntu 又沒包 italc 2.0.0,所以才會有後面在 debian 上自行編譯 2.0.0 的過程。


自己編譯 italc 2.0.0 版:
官方網站:
http://italc.sourceforge.net/

由於我不會自己從 source 包成 deb 檔,但是有找到有 debian developer 有弄好現成的 source,只要抓回來編完就可產生 deb 檔。

$ git clone git://git.debian.org/debian-edu/italc.git
$ sudo apt-get build-dep italc

因為 debian 只包 italc 1.0.x 版, build-dep 只會裝編譯 1.0.x 需要的東西,要編 2.0.0 還需要下列:
$ sudo apt-get install gcj-jdk git-buildpackage libxss-dev libvncserver-dev libv4l-dev libpam0g-dev

開始編 italc:
$ cd italc
$ git-buildpackage -rfakeroot
或用老方法也可以
$ dpkg-buildpackage -rfakeroot

預設 wheezy gcc 及 g++ 版本為 4.7,我編了好幾次都失敗,後來換成 gcc 4.6 才編的成功。

debian 裡存在同一軟體可裝不同版本的機制 update-alternatives.
我的 wheezy 系統上有裝 gcc 4.6 及 gcc 4.7(甚至舊的 4.4, 4.5 都有),預設編譯器是 gcc 4.7,那要如何改 4.6 成為預設的:

建立一個選擇項目 gcc, 連結位置在 /usr/bin/gcc ,第一個選擇為 4.6, 優先權為 40, 第二個為 4.7, 優先權為 50, 優先權是用在自動模式時,優先權最高的會當預設值。
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 40
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 50

手動選擇 gcc 4.6 當目前的 compiler
$ sudo update-alternatives --config gcc

$ sudo update-alternatives --set gcc /usr/bin/gcc-4.6

g++ 部份也如法炮製:
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 40
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.7 50
$ sudo update-alternatives --set g++ /usr/bin/g++-4.6

檢查看看是否變成 gcc 4.6
$ gcc -v
$ g++ -v

調整完 gcc 及 g++ 後,繼續編譯,我的機器大概編 7 分鐘完成。
$ git-buildpackage -rfakeroot

編譯完成後,會在上層目錄出現四個 deb 檔,安裝起來即可。
italc-master_2.0.0-1_amd64.deb
italc-management-console_2.0.0-1_amd64.deb
italc-client_2.0.0-1_amd64.deb
libitalccore_2.0.0-1_amd64.deb

$ sudo dpkg --install italc-master_2.0.0-1_amd64.deb  italc-management-console_2.0.0-1_amd64.deb italc-client_2.0.0-1_amd64.deb  libitalccore_2.0.0-1_amd64.deb

編完後記得改回來 gcc-4.7, g++-4.7
$ sudo update-alternatives --set gcc /usr/bin/gcc-4.7
$ sudo update-alternatives --set g++ /usr/bin/g++-4.7
或是切回自動模式,這樣系統會自動選擇優先權較高的 4.7 來當預設值。
$ sudo update-alternatives --auto gcc
$ sudo update-alternatives --auto g++


題外話
update-alternatives 不只用在同一程式不同版本間切換,也可用在同一功能,但不同程式間的選擇,如文字編輯器。

通常我們會直接打 vim 或 nano 來做文字編輯,但是大部份應用程式需要呼叫外部文字編輯器時,不知道你的喜好,所以會呼叫一個通用的程式 editor 來做編輯器,所以只要將
 /usr/bin/editor 設成你慣用的文字編輯器即可。

update-alternatives --list editor
/bin/nano
/usr/bin/vim.basic
/usr/bin/vim.tiny

在 debian 裡,預設文字編輯器為 nano (因為優先權 40 最高)

$ update-alternatives --display editor
editor - manual mode
  link currently points to /usr/bin/vim.basic
/bin/nano - priority 40
  slave editor.1.gz: /usr/share/man/man1/nano.1.gz
/usr/bin/vim.basic - priority 30
  slave editor.1.gz: /usr/share/man/man1/vim.1.gz
  slave editor.fr.1.gz: /usr/share/man/fr/man1/vim.1.gz
  slave editor.it.1.gz: /usr/share/man/it/man1/vim.1.gz
  slave editor.pl.1.gz: /usr/share/man/pl/man1/vim.1.gz
  slave editor.ru.1.gz: /usr/share/man/ru/man1/vim.1.gz
/usr/bin/vim.tiny - priority 10
  slave editor.1.gz: /usr/share/man/man1/vim.1.gz
  slave editor.fr.1.gz: /usr/share/man/fr/man1/vim.1.gz
  slave editor.it.1.gz: /usr/share/man/it/man1/vim.1.gz
  slave editor.pl.1.gz: /usr/share/man/pl/man1/vim.1.gz
  slave editor.ru.1.gz: /usr/share/man/ru/man1/vim.1.gz
Current 'best' version is '/bin/nano'.

將 /usr/bin/editor 設成 vim.basic
$ update-alternatives --set editor /usr/bin/vim.basic


可看目前系統上有哪些已設定的程式
$ update-alternatives --get-selections


回到主題,若是真的編不出來,可以使用我編譯的 binary deb,共 4 個檔案,約 2 M.

italc 2.0.0 使用:
建立公、私鑰的功能移到 management-console 去。
listen port 不再是 5858, 5900, 而是 11100 及 11400, 而 5800 保持不變,預設沒開,可到 management console 設定。


老師的電腦:

italc 2.0.0 for debian wheezy
編輯 /etc/apt/sources.list.d/italc.list
deb http://manstalk.no-ip.org/debian/wheezy ./

$ sudo apt-get update
$ sudo apt-get install italc-client italc-master

裝好後,會自動在系統上建立 4 個群組,italc-teachers, italc-supporters, italc-admins, italc-students。
也自動產生所有 key.
/etc/italc/keys/private/admin/key
/etc/italc/keys/private/supporter/key
/etc/italc/keys/private/teacher/key
/etc/italc/keys/public/admin/key
/etc/italc/keys/public/supporter/key
/etc/italc/keys/public/teacher/key


老師這台電腦上的使用者加入 italc-teachers。
$ sudo gpasswd -a your_username italc-teachers
登出再登入才會生效。
小插曲,通常我都會用 id username 來查詢某位使用者是屬於哪些群組,在加入 italc-teachers 後,登出再登入,id 查了半天,就是沒看到出現 italc-teachers 這個群組,以為自己記性不好,忘記剛才有沒有下加入群組指令,所以試了好幾次。

$ id (沒看到 italc-teachers)
uid=1000(louie) gid=1000(louie) groups=1000(louie),7(lp),25(floppy),29(audio),44(video),103(netdev),112(fuse),114(libvirt),990(event)

明明有在 /etc/group 裡
$ grep louie /etc/group
italc-teachers:x:126:louie

$ id louie
uid=1000(louie) gid=1000(louie) groups=1000(louie),7(lp),25(floppy),29(audio),44(video),103(netdev),990(event),112(fuse),114(libvirt),126(italc-teachers)

$ groups louie
louie : louie lp floppy audio video netdev event fuse libvirt italc-teachers

但仍然無法讀取 /etc/italc/keys/private/teacher/key
只好重新開機試試,開好後,打 id 就可看到在 italc-teachers 群組,一切都正常了,應該是 bug 吧。

先執行 management console 來設定:
$ sudo imc

在 General 部份,Autostart 是打抅的,所以預設一進入 X 就會開啟,這個要特別注意,平時最好是關掉的,要用時再開,不過電腦教室就另當別論。( italc 2.0.0 版改成要經由學生按確認,老師才能連到學生機器)

iTALC Server 部份,主要是調整 port,預設是 11100 及 11400。

Authentication 部份,在 linux 上,直接將 ACL-based logon authentication 抅抅拿掉,然後最下方 Logon authenticaion 也是抅抅拿掉,才會正常。(我試出來是這樣)

中間 Launch key file assistant 可重新產生公鑰及私鑰,或是在學生電腦滙入老師電腦上的公鑰。

設定完成按套用,接著可在上方 File 選單將設定存成一個檔案,拿到學生電腦匯入。

再來就和 1.0.x 版一樣,執行 client 程式

$ ica &

最後執行 master 程式:
$ italc &


學生的電腦:

編輯 /etc/apt/sources.list.d/italc.list
deb http://manstalk.no-ip.org/debian/wheezy ./

$ sudo apt-get update
$ sudo apt-get install italc-client
一樣將老師那台產生的公鑰拷貝過來,可以 3 個公鑰全過來,或只有 teachers 公鑰就好,放到和老師那台同樣位置即可。(私鑰不要離開老師那台電腦)
也可以使用 management console 來將公鑰匯入,不過檔名要叫 *.key.txt 結尾才看得到好匯入,選擇 Import public key (client computer) 角色選 Teacher 即可。

一樣執行 client 端:
$ ica

搞定,防火牆開 tcp port 11000 即可。


這套 iTALC 已經出現滿久了,而且台灣早就有很多人用,只是大部份都是老師或學術界,用於電腦教室。
現在可拿來用在一些 open source 的分享場合,理論上應該滿好用的才是,不過,還是要再實際測看看就是。

但由於 italc 是用在桌面分享及操控,並沒有聲音的部分,當然,電腦教室上課全部學生和老師都在同一間房間,直接用麥克風就好,所以不用透過電腦傳聲音。
但是若是一定要聲音,有一套 open source 的語音通訊工具,叫 mumble。

Mumble 是款針對遊戲玩家的低延遲、高質量的語音通訊工具,可以讓玩家在遊戲的同時,進行即時的語音交流。
軟體支援消除回音,這樣在遊戲過程中,其它玩家就不會聽到使用者喇叭裡發出的遊戲聲音了。

在國內也滿流行的,最主要是拿來打線上遊戲時溝通,可設定多種模式(push to talk 或自動偵測是否有講話),要架一台伺服器,所有人都連到那台伺服器去。在伺服器內可分房
間,只有在同個房間的人才聽得到彼此對話。

當然也可自己架伺服器,叫 murmur,debian 有包。不過有很多免費的伺服器好用,國內有一家。

到官方網站抓回來裝,裝好後要設定調整麥克風。
http://mumble.sourceforge.net

裡面有預設很多伺服器可以連,另外可加以下的

la1.mumblevoice.com:65003       國內遊戲公司的伺服器
mumble.debian.net:64738         debian 開發者架的


參考文件:
http://italc.sourceforge.net/documentation.php
http://sourceforge.net/apps/mediawiki/italc/index.php?title=Main_Page
http://zh.wikipedia.org/wiki/ITALC

10 則留言:

  1. 咦?這篇文章沒有你的慣用語氣了耶!
    寫Blog竟然跟以前寫文件口吻不一樣了!

    回覆刪除
  2. 老師您好:以前使用italc時不會出現什麼問題?但是現在出現問題了,如圖所示http://techapp.ctust.edu.tw/ezfiles/54/1054/img/16/italc.png,懇請幫忙。謝謝!

    回覆刪除
    回覆
    1. 你好,光看這張圖不是很懂出了什麼問題,是說已連線後,螢幕都是黑色的嗎?
      server 和 client 的 italc 版本有一致嗎?

      刪除
  3. 冒昧請教:
    italc安裝後其他功能都可以做,就是不能將老師畫面廣播給學生,也不能將學生示範畫面廣播給其他人,這樣做時收到的畫面是全黑,僅在左上角出現一行字 establishing connection to 192.168.2.20:11400,192.168.2.20是教師電腦,不知您能否給些建議協助?謝謝。

    回覆刪除
    回覆
    1. 您好:
      既然 ica 是由 x11vnc 改的,那先將 italc 全部關掉,在老師電腦執行 x11vnc -rfbport 11400,再到學生電腦執行 vncviewer 192.168.2.20::11400 看看是否還會黑畫面,若沒問題,再做進一步檢查。

      guildwar

      刪除
    2. 學校使用的系統是Win7,在學生端以 Ultravnc Viewer 經 11400 port 連 192.168.2.20 教師端是 OK 的。

      刪除
    3. 不好意思,我的環境是全 linux 的,試了都沒問題,沒有 windows 可試,幫不上忙,抱歉。
      我這邊試的 client 及 server 都是用 2.0.2,在 archlinux 上,完全正常。
      不過,若是可以的話,建議先弄台 linux 的學生電腦來連老師的看看正不正常,,能儘量排除一些問題。

      guildwar

      刪除
    4. 無論如何謝謝您,百忙中協助一個陌生人,感恩,我會嘗試在Ezgo系統上裝看看。

      刪除
  4. 我的環境是全arch linux,italc是2.0.2版,廣播出去時要等20幾秒畫面才出現在學生機,接下來則正常,等畫面還給學生是也是等20幾秒,學生機才會出現自己的畫面,不知何原因造成這結果?記得約5年前使用時沒有這現象。

    回覆刪除
  5. 有沒有可能是 delay 在解析 hostname?
    試著在 /etc/hosts 中加上連線 ip 的相對應 hostname 看看.

    guildwar

    回覆刪除