發表文章

目前顯示的是有「Linux」標籤的文章

ubuntu studio

ubuntu studio 是 ubuntu 的影音加強版,是為了玩 MIDI 的 Rosegarden 才看到的。12.04 LTS 佔 1.9 GB (用家裡的 ADSL download 了快 4 小時),還得用 DVD 才能燒錄,所以在 Windows XP 下又找了一個免費的燒錄軟體 ImgBurn ,比起 ubuntu 用一張 CD 就能搞定,實在差太多了。 以下就是一些使用的心得(萬一以後還要重裝的話,也好有一個參考): 系統 | 日期與時間設定 改為 “與網路伺服器保持同步”(需安裝 NTP) 關閉 UTC 解決與 Windows 時間衝突的問題: timedatectl set-local-rtc 1 懶得用 gcin 了,直接用內建的 IBus,再加上 行列輸入法 即可 ( 還是得裝 gcin,IBus 的行列打不出特殊符號啊 ) 裝完再用 im-switch 切換內定輸入法,然後重新登入即可 設定主機板的 Wake on Lan (重裝 ubuntu studio 好像把這個選項又關掉了) 設定 wins ,不然 Windows 網路芳鄰的電腦名稱(NAS)又找不到了 Pidgin 網路即時通:MSN Sysinfo  Dropbox LibreOffice Asunder CD Ripper :抓 CD不可少的工具  Ripper X :Asunder CD Ripper 無法抓太多音軌的 CD 時可改用此軟體,不過中文支援有問題,需要用 EasyTAG 再改一次 (18.04 版的軟體中找不到,只能以手動安裝了 sudo apt-get install ripperx ) Rosegarden:玩 MIDI 的軟體,不過還是有當機的情形,希望不要當得太頻繁啊。另外安裝完後沒有在 Audio Production,反而跑到 Media Playback PS: 自動儲存的功能怎縻關掉啊? 原本這個功能是怕當機資料消失,結果我反而因為這個功能導至這篇文章消失了。 在編輯的過程中,切換到 HTMlS 模式後,又利用 Ctrl + Z 執行 Undo 時,不明原因導至整篇文章不見了,偏偏又在此時自動存檔,真是 #@#%^,害我又打了第二遍(還好還沒全部忘記)

Ubuntu 11.04 的點點滴滴 [更新 14.10 Unity systray-whitelist 設定]

圖片
Ubuntu 11.04 採用新的 Unity 介面,當使用 Compiz 開啟 3D 桌面時有許多衝突,因此得將 Unity 關掉,亂按的結果就是掛點了,重開機後畫面只剩一張背景圖。 這個時候就需要用到 Alt + SysRq + K 登出回到 Display Manager (登入) 的畫面,選擇 " 傳統 Ubuntu 桌面 " 登入後,將 Compiz 與 ATi Driver 移除後,結果還是一樣的空白桌面。將重裝一次 Driver 與 Compiz,還是一樣,看來是新版的 Unity 桌面被我的 Compiz 關掉了。

小小的 copy 大大的學問

平常都是直接在電腦上寫程式,結果面試的時候要在紙上寫,還真的寫不太出來。因為都習慣線上查資料,所以參數都沒有背,所以拿回家 compiler 後果然一堆錯誤,不是參數位置放錯,不然就是個數不正確。 以下是修改過的版本,錯誤檢查是一定要的,比較特別的是 fread  跟 fwrite  的第 2 & 3 個參數,其中第 2 個參數是 size,第 3 個參數是個數,而傳回值是成功讀取或寫入的個數而非 size。我原本的寫法是 length = fread(buf, sizeof(buf),1 , fp) 成功時 length = 1,但最後一筆不滿 buf size 的就讀不到了,所以才改成 length = fread(buf, 1, sizeof(buf) , fp) 這樣 length 就傳回實際讀到的長度了,不過不曉得有沒有影響效能就是了

重建 BeagleBoard-xM Angstrom

圖片
自從開始玩 BeagleBoard-xM  後,SD 卡不曉得被我毀掉幾次了 (原廠建議這一塊不要動,另外拿一塊新的 SD 卡來實驗,不過我沒有多的,只好 ...)。有幾次雖然有載入 Angstrom,HDMI 也有畫面輸出,LED 也是一直閃,但卡在登入畫面一個多小時 (Console 顯示 Uncompressing Linux...),實在是沒耐性就把它給關了。

Read Beagle Board xM RS-232 Serial output

環境設置 Beagle Board xM 使用 OTG USB 供電 Beagle Board xM RS-232 Serial output 連接到電腦 USB to COM 軟體修改老師的 ext_uart.c 如下

getfile

圖片
實現 getfile <ipaddr> <source filename> <destination filename> 例如 ./getfile 127.0.0.1 /etc/passwd passwd 顯示 成功 GET Success (12345 bytes) 失敗 Error! 參考 ch7/file ch7/wrapper/tcputils.c

Character bitmap with signal

圖片
#include <stdio.h> #include <signal.h> #include <unistd.h> //how_bitmap函式可將二維陣列的值輸出,輸出方式:當bit為1時輸出’*’,0輸出空白 //字元’ ’,每處理完2個byte輸出換行'\n' void update_time(int sig); char array[2][30] = { { 0x08,0x20,0x08,0x24,0xfe,0xfe,0x08,0x20, 0x00,0x00,0x08,0x20,0x04,0x40,0x04,0x40, 0x02,0x80,0x01,0x00,0x02,0x80,0x0c,0x70, 0x30,0x0e,0xc0,0x04,0x00,0x00 }, { 0x20,0x20,0x51,0xfc,0x88,0x88,0x00,0x50, 0xfb,0xfe,0x22,0x22,0x22,0x22,0xf9,0xfc, 0x21,0x24,0x21,0x24,0xa9,0x24,0x71,0x2c, 0x20,0x20,0xf8,0x20,0x00,0x00 } }; void update_time(int sig) { static int i = 0; static char *ptr = (char*)(void*)array; // change to one dimention char array int j,k; if (i < sizeof(array)) { for (j=0; j<2; j++) { for (k=7; k>=0; k--) { printf("%c", ( *(ptr+i) & (1 << k) ) ? '*' : ' '); ...

Character bitmap

圖片
#include <stdio.h> //how_bitmap函式可將二維陣列的值輸出,輸出方式:當bit為1時輸出’*’,0輸出空白 //字元’ ’,每處理完2個byte輸出換行'\n' void show_bitmap( char (*a)[30] ,int row); char array[2][30] = { { 0x08,0x20,0x08,0x24,0xfe,0xfe,0x08,0x20, 0x00,0x00,0x08,0x20,0x04,0x40,0x04,0x40, 0x02,0x80,0x01,0x00,0x02,0x80,0x0c,0x70, 0x30,0x0e,0xc0,0x04,0x00,0x00 }, { 0x20,0x20,0x51,0xfc,0x88,0x88,0x00,0x50, 0xfb,0xfe,0x22,0x22,0x22,0x22,0xf9,0xfc, 0x21,0x24,0x21,0x24,0xa9,0x24,0x71,0x2c, 0x20,0x20,0xf8,0x20,0x00,0x00 } }; void show_bitmap( char (*a)[30] ,int row) { int i, j, k; for (i=0; i<row; i++) { for (j=0; j<30; j++) { for (k=7; k>=0; k--) { printf("%c", ( a[i][j] & (1 << k) ) ? '*' : ' '); } if ( (j % 2) == 1 ) // new line every two bytes { printf("\n"); ...

qsort without move

圖片
使用 qsort 排序字串陣列,輸出按字典排序方式輸出,但排列完成後,原始陣列內容不可改變 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #define length (sizeof(string) / sizeof(string[0])) char string[][12] = { "Linux", "programming", "Embedded", "Android", "ittraining" }; static int cmpstringp(const void *p1, const void *p2) { return strcmp(*(char * const *)p1, *(char * const *)p2); } int main() { char* stringindex[length]; int i; // copy pointer for (i=0; i<length; i++) { stringindex[i] = string[i]; } qsort(stringindex, length, sizeof(stringindex[0]), cmpstringp); printf("\nSorted data:\n"); for (i=0; i<length; i++) { printf("%d = %s\n", i, stringindex[i]); } printf("After qsort, origonal array:\n"); for (i=0; i<length; i++) { printf("string[%d] = %s\n", i, string[i]); } ...

Padding file

對任意讀入的檔案進行 padding Padding rule:以 1M, 2M, 4M ... 二的倍數去 padding  顯示補了多少 Bytes 的資料 操作方式:./padding <file> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <fcntl.h> #include <string.h> #include <errno.h> int main(int argc, char *argv[]) { int fd; struct stat filestat; off_t alignmentsize; if (argc != 2) { printf("padding <filename>\n"); return 0; } // open file fd = open(argv[1], O_RDWR | O_EXCL); if (fd < 0) { printf("%s\n", strerror(errno)); return 0; } // get filesize fstat(fd, &filestat); if (filestat.st_size >= (1ul << 31) ) { close(fd); perror("File great than 2GB, it can not padding."); return 0; } // check alignment size alignmentsize = 1; while (filestat.st...

【已解決】網路的怪問題

家裡有一台電腦是透過 AP LAN port 上網,但奇怪的是: Ubuntu 可以正常連線 (AP 指示燈有亮) Windows XP 就不行 (AP 指示燈沒亮) 後來發現在開機時 AP 指示燈不會亮,要進入 Ubuntu 之後才會亮,但離開 Ubuntu 時指示燈又會熄掉。表示 網路是在 Ubuntu 下被開啟 的。那 Windows XP 先前為甚麼可以用呢?(為此我還重灌 Windows XP 呢!) 另外我還試過直接接到 ADSL Modem 甚至更換網路線,但在 Windows XP 下還是偵測不到網路連線,怪哉! 後來在利用 Ubuntu Live CD  重建 GRUB 時意外發現, 它會開啟網路連線,而且在離開後不會關閉 ,此時進入 Windows XP 就可以正常連線了。更詭異的是,在電腦關機的狀態下,開啟 AP 也能偵測到連線,為甚麼?(主機板有 Standby 電源的關係嗎?回家試著把 PC 電源關掉看看。 沒錯,PC 電源關掉的話,AP 的指示燈就不會亮了 ) 此後進入 Windows XP 網路連線就沒問題了,直到再一次進入 Ubuntu 被關閉後才不行。這時只好再一次用 Live CD 開機了! 我的疑問: 我的主機板很舊,是否路網路線是否 跳線 有關係? 連線偵測是在 AP?還是主機板的網路? 設定是永久性的?(不會因為關機而消失) 是否可以寫一個程式在 Windows 下設定? 這樣就不需要 Live CD 了 2012/7/30 原來關鍵就在 Wake on Lan,搜尋 " Ubuntu Wake on Lan " 找到 HOWTO: Set your system up for Wake On LAN (WOL) ,只要 sudo ethtool -s eth0 wol g 就可以了。原本還以為要照論壇中的說明將 Script 加入開機流程中,結果只要設定一次就可以了。讚!

Ubuntu 11.10 的點點滴滴

把視窗放大、縮小的按鈕移到右邊 安裝 gconf-editor 點選 apps | metacity | general | button_layout 將 close,minimize,maximize:  改成 menu:close,minimize,maximize  即可 (注意冒號的位置) 開關機的按鈕不見了? 看看  外觀  的設定是不是選到 HighContrast or HighContrastInverse 是的話,改回 Ambiance or Radiance 就可以了 如何查硬碟的 UUID? 到 /dev/disk/by-uuid 用 ls -l 查看就可以了

[已解決] 新螢幕在 Ubuntu 文字模式下的亂碼問題

最近跟 "亂碼" 還真是有緣,話說家裡的舊螢幕掛了,換了一台 ASUS VE225H 的寬螢幕, 效果真是沒話說,不過在文字模式下竟然是亂碼 後來東查西查才發現原來 Ubuntu 自動偵測的文字模式配上我的新螢幕有問題,所以只好自己指定了 sudo gedit /etc/default/grub 設定 GRUB_GFXMODE=1280x1024 原本該設定是被註解掉的,表示 Ubuntu 會自動偵測,不過寬螢幕似乎不在偵測的選單中,所以我們只好手動設定了 若要查看文字模式下有那些解析度可以用,可以在 GRUB 開機選單中按 c 進入互動模式,然後執行 vbeinfo 就會列出所有支援的模式了 (不過我試了一些寬螢幕的解析度如 1400 x 1050 還是有問題,所以就選了常用的 1280 x 1024 了) 設定完成後,不論是 Recovery Mode 或是 tty1~6 都可以正常顯示了,讚!

解決 Windows 壓縮檔在 Linux 底下出現中文亂碼的問題

日前發現在 Windows 下用 WinRAR 壓縮的中文檔案,在 Ubuntu 底下開啟 (透過 Dropbox) 會出現亂碼,原因出在 rar 套件,改用 p7zip-rar 與 p7zip-full 即可解決 參考: Ubuntu 的rar 壓縮檔內容亂碼問題 但目前 Windows 壓縮的 zip 檔,在 Ubuntu 底下仍會有中文亂碼的問題,待解決

如何讀取 Evergreen Leakage ID

根據 AMD 提供的 Application Notes,得知在 Diagnostics 中有一個 db32 的程式可以用來讀取暫存器,因此我寫了一個批次檔,只要將此批次檔放到 Diagnostics 的目錄中執行,就可以直接顯示出 Leakage ID 了 Leakage ID 的範圍是從 0x00 ~ 0x3F,值愈大表示 Leakage 愈大,也就需要愈多的 ASIC power

TinyLinux Tips

TinyLinux 用起來跟 Ubuntu 還是有點差別,所以就把這些差別記錄在這裡了 關機指令:poweroff (沒有 shutdown 指令) 檔案系統是開機時解壓縮的,所以沒辦法安裝自己想要的程式 檔案只能放在 /mnt/dos/mods 下

Linux 版的 Ghost

圖片
Jack 為了要對拷硬碟,試了 Ghost 跟 Clonezilla ( 再生龍 ) 都不行,最後只好請出 鳥哥 了 根據 "第九章、檔案與檔案系統的壓縮與打包 6. 其他常見的壓縮與備份工具 " 介紹的 dd 指令,它的功能可多了,不過我們今天先拿來做 640GB 的硬碟對拷,步驟很簡單:

Ubuntu 11.04 Crash 救援實錄

自從昨天更新後,今天不曉得為甚麼 Ubuntu 又進不去 (已經很久沒有這樣了),畫面就一直轉轉轉,終端機也進不去,sudo shutdown -r now 也沒反應,更慘的是連安全模式也進不去。 後來好不容易進去看了一下 dmesg,應該是 Graphics Driver 又掛點了,問題是我根本進不去,要如何移除呢? 這個時候就要請出偉大的 Live CD 了,開機後救援步驟如下: Ctrl + Alt + F1 進終端機模式 sudo fdisk -l 查看 Ubuntu 系統的 partition sudo mount /dev/sdax /mnt 掛載系統 sudo chroot /mnt /bin/bash 切換系統 進入 /usr/share/ati 移除 driver 重開機後安裝 Ubuntu 建議的 driver 就好了 (反正又不用 3D 桌面了) 備註: 移除 ATI driver 時,若使用修復模式的 root 帳號會有問題,改用原本帳號用文字模式登入就可以了 (sudo) 移除 driver 後若還是進不了桌面,到修復模式下的 fsck, clean, dpkg 跑一跑應該就可以了 進入桌面後若沒有選單畫面,按 Ctrl + Atl + T 把終端機叫出來用吧 通常更新後 ATI driver 就會掛點,需要一直移除、重裝,唉!!!

如何安裝 NV Diag 使用的 TinyLinux

圖片
根據 NV AP Note,TinyLinux 是安裝在 DOS 的環境下,然後再利用 GRUB4DOS 來作 DOS 與 Linux 的切換。但目前 DOS 的測試環境多由 Linux 取代,故改用以下的方式將 TinyLinux 與 Ubuntu 安裝在同一顆 HD,並經由 GRUB 2 來切換使用。詳細安裝步驟說明如下:

如何利用 GRUB 2 建立開機選單

想在同一顆硬碟安裝 DOS、Windows、Linux 等作業系統,則 GRUB 2 是不可或缺的開機選單工具。 如果照一般的方式先安裝 Windows 後再安裝 Linux,則 GRUB 2 可以認到 Windows Partiion,所以使用上沒有問題。但反之如果先安裝 Linux 再安裝 Windows,則 Windows 會蓋掉 MBR 的  Linux 開機選單。此時就要利用下列的方式來重建選單。