顯示具有 作業系統 標籤的文章。 顯示所有文章
顯示具有 作業系統 標籤的文章。 顯示所有文章

2010/03/06

apt-get 無法更新 (無法連線 or 0% 等待標頭) 解決方法

前幾天接到安全性更新通知,但是 sudo aptitude update && sudo aptitude upgrade 卻一直出錯,常常下載到一半就突然停住不動,中斷重來也沒辦法下載更新檔。

最神奇的是明明顯示「連線失敗」,我在瀏覽器輸入 IP 以後卻可以看到列表,套件也可以正常下載。

下載:1 http://debian.luna.com.tw ./ libvte-common 1:0.22.2-0ubuntu2.im [101kB]
下載:2 http://ppa.launchpad.net karmic/main ubuntu-tweak 0.5.2-1~karmic2 [689kB] 
下載:3 http://debian.luna.com.tw ./ libvte9 1:0.22.2-0ubuntu2.im [554kB] 
下載:4 http://debian.luna.com.tw ./ gnome-terminal-data 2.28.1-0ubuntu1.im [2,104kB] 
下載:5 http://debian.luna.com.tw ./ gnome-terminal 2.28.1-0ubuntu1.im [113kB] 
下載:6 http://debian.luna.com.tw ./ python-vte 1:0.22.2-0ubuntu2.im [30.7kB] 
錯誤 http://security.ubuntu.com karmic-security/main ure 1.5.1+OOo3.1.1-5ubuntu1.1 
連線失敗 [IP: 91.189.88.37 80]
6% [等待標頭] 

後來在噗浪詢問後,聽從 褻玩小道 的建議在 /etc/resolv.conf 加上 nameserver 設定後恢復正常。

覺得比較奇怪的地方是 NetwordManager 在 /etc/NetworkManager/system-connections 設定檔中明明已經有 dns 設定,而且連線確實有將 domain 轉成 IP:91.189.88.37 80,但是沒有在 resolv.comf 設定 name server 確定讓更新失敗 ....。

2010/01/18

Unix 和 Windows 的文化差異

Unix 和 Windows 程式設計師的文化差異
http://blog.lauct.org/?p=1481

這篇字數多到讓我想翻桌,但實在寫得很客觀。

以目標來區別的話:Unix 的目標是讓其他開發者能更輕鬆;Windows 的目標則是讓使用者能更輕鬆。

玩二個不同的系統這麼多年,我不得不說 Windows 的人機介面真的是我用過數一數二的 (Mac 感覺很棒但是不熟不敢亂說 XD),但是對於一個在 Windows 上開發程式的人而言,在命令提示字元裡面做事實在有夠麻煩,資料夾一堆空白不說,連基本的 rootkit 也很鳥,在 CLI 根本作不了什麼事。

但是換成 Unix / Linux 系統上,開發程式顯得輕鬆很多,撰寫程式、編譯、除錯都有免費又方便的程式可以用,也不需要花大錢買個 XX Studio 或是找破解,參加完 SA@Tainan 的「終極密碼戰」才知道,連 Hack 掉一個全 bunary 的程式也只需要基本的幾個免費工具。但是說到人機介面,Unix 上的軟體就實在很不人性化,很多時候會讓人想不透為什麼這個功能會放在這裡,那個功能卻跑到另一個地方去,而且很多很基本的問題甚至要使用 command line 才能解決。

不知道為什麼在台灣很多所學校都把「人機介面」的課放在選修甚至不用修。以前寫程式大多都是專用程式或只針對某用途而客製化的程式,但是現在電腦普及,大多數的程式已是為了一般使用者而撰寫,但是為什麼把使用者操作的感覺拋到腦後?

2010/01/06

查詢系統版本資訊

我一直以為只能用 uname 查詢系統版本資訊:
$ uname -a
Linux johnroyer-laptop 2.6.31-16-generic #53-Ubuntu SMP Tue Dec 8 04:01:29 UTC 2009 i686 GNU/Linux

不過來有另一個方法可以查詢:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 9.10
Release: 9.10
Codename: karmic

也可以到 cat /etc/lsb-release 查看系統資訊。

2009/12/28

我想買「大」筆電

今天去系學會打算 Demo 時,發現 Ubuntu 在接上投影機時會偵測失敗,網路上看到很多作法都很麻煩,再加上版本不一樣失敗機率還是很高。

這時就有點後悔當初怎麼不去買一台正常一點的筆電,社群大、使用者多,對硬體的支援也會比較完整.....。

等我有前買第二台筆電,一定要去弄一台無敵小黑!



ps. 一定要趕快推 Linux,使用者多廠商才會重視!

2009/12/27

FreeBSD 安裝步驟


用光碟開機,並載入開機程式



選擇鍵盤排列方式,一般選擇美式鍵盤就可以



選擇 Standard Installation



磁碟分割,使用整個硬碟可直接按 A - Q



是否要安裝 Boot Manager



設定掛載點,一般可以直接按 A - Q 使用預設值


若是 FTP Server 建議將 /home 目錄分開以便設定 quota;若是 Web Server 建議將 www 分開掛載,/var 目錄也應該多流一些空間給 Databases,免得塞爆以後讓系統掛彩。



選擇要安裝的環境,不需要圖形介面的話可直接選擇 Developer



是否需要安裝 ports collection,不安裝就不是 FreeBSD 了啊 XD



選擇安裝位置,一般可以直接從 CD 安裝;選擇網路安裝則會先設定網路 (DHCP or Static IP)



安裝要一段時間,可以去喝杯茶在回來看



準備設定網路,設定好以後就可以 SSH 登入,離開該死的機房



選擇電腦的網路卡



如果選擇 DHCP 則會自動填上部份資料,沒有的話請自行輸入



SSH 是一定要的啊!



安裝 linux_base 可以模擬執行 Linux 上的程式



新增一個使用者,如果要讓這個使用者可以 su 成 root,記得加入 wheel 群組



設定完 root 以後就差不多大公告成了


接下來就可以使用 ports 或是 pkg_add 安裝套件,/etc/make.conf 設定可以參考「FreeBSD make.conf」,要安裝 FAMP 環境可以參考「FAMP:FreeBSD + Apache + MySQL + PHP」。

2009/11/20

Google Chrome OS

剛剛看完 Google Chrome OS 發表會,興奮的睡不著 XD

這次很可惜沒能從頭開始聽,不過感謝 Engadget 有全程文字轉播,即使沒聽到也大致上知道說了些什麼。不過內容並不多,大致上就繞著幾個主題打轉,把內容稍微整理了一下:

  • Google Chrome OS is SPEED, simplicity, security

  • Everything is in the cloud, every application is web application. Doing all your stuff through the browser on the internet.

  • Root system is read-only, you can focus on the internet and don't worry about your computer

  • "If I lose my Chrome OS machine, I should be able to get a new one, log in, and get everything back...everything should look similar. We want users to be able to share machines."

    "About a seven second login. We're now looking at Chrome OS UI. It looks like ...... Chrome." XDDDDD


發表會用到的影片:





其他在 Youtube Google Chrome Channel 上的影片:








其他相關資源:

Engadget 發表會全程文字轉播
http://www.engadget.com/2009/11/19/live-from-googles-chrome-os-project-announcement/


Google Chrome OS Project Page
http://dev.chromium.org/chromium-os


Google Chrome OS Repository
http://src.chromium.org/


看了一下 Chrome OS 編譯說明,感覺上沒有那麼容易,VMware 裡剛好有 Ubuntu 可以試試看,不過安裝光碟和 ISO 檔大概就要等網路上得高手 release 了吧。

2009/11/04

用 XP 開機選單開啟 Ubuntu

安裝 XP 以後再安裝 Ubuntu 基本上會相安無事,不過 XP 經常有事沒事就需要重灌,重灌完 MBR 被洗掉 Ubuntu 就進不去了。目前參考網路上的作法,讓使用者可以用 XP 的開機程式開啟 Ubuntu,且重灌時備份也很方便。

測試環境:
  • IDE Master:Windows XP
  • IDE Slave:Ubuntu

先安裝完 XP 以後再安裝 Ubuntu 到兩個不同的硬碟後,正常情況下應該會看到 Ubuntu GRUB 的開機選單,這時先進入 Ubuntu 內。



第一件事情,就是先把 Ubuntu 建立的 MBR 開機程式複製出來。

開啟終端機 (應用程式選單 => 附屬應用程式 => 終端機),先用 fdisk 看一下自己的硬碟在 Ubuntu 上面的編號:
zero@zero-desktop:~$ sudo fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xd011d011

所用裝置 Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1043     8377866    7  HPFS/NTFS

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000ea8c9

所用裝置 Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         993     7976241   83  Linux
/dev/sdb2             994        1044      409657+   5  延伸的
/dev/sdb5             994        1044      409626   82  Linux swap / Solaris
可以看到我的 XP 是安裝在 /dev/sda1,開機程式也會在這個硬碟上,所以接下來用 dd 備份 MBR:
zero@zero-desktop:~/桌面$ sudo dd if=/dev/sda1 of=~/桌面/Ubuntu.img bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000470415 s, 1.1 MB/s
這一步做完最難的部份也結束了。

再來使用 Windows XP 開機光碟還原成 Windows 的 MBR 開機程式。


使用修復模式進入 command line



使用 fixmbr 將開機程式寫入 MBR


最後把 Ubuntu.img 這個檔案複製 Windows XP 的 C 槽根目錄,打開 boot.ini 修改開機設定:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
C:\Ubuntu.img="我的 Ubuntu"
改好存檔以後,重新開機應該就會看到以下的畫面,選擇「我的 Ubuntu」就會跳到 GRUB 開機選單,也可以啟動 Ubuntu。



以後重灌 Windows 只要記得備份 Ubuntu.img,重灌完只要修改 boot.ini 就可以開啟 Ubuntu 了。

參考資料:
用Windows內建的boot.ini做多重開機Linux + XP
http://www.wretch.cc/blog/mezl/20241371

Jserv's blog: Linux/x86 開機流程:自 MBR 到 init
http://blog.linux.org.tw/~jserv/archives/001714.html

異動:
2009.11.05 更新:補上還原 Windows MBR 部份。

2009/10/09

設定檔 .cshrc

Be lazy:
alias ll        ls -lAG
alias ls        ls -G

UTF-8:
setenv LANG zh_TW.UTF-8
setenv LC_ALL zh_TW.UTF-8
setenv LC_CTYPE zh_TW.UTF-8
setenv MM_CHARSET utf8

2009/08/06

FAMP:FreeBSD + Apache + MySQL + PHP

Install Apache
cd /usr/ports/www/apache22
make WITH_MPM=worker WITH_THREADS=yes install clean

for subversion:
make WITH_MPM=worker WITH_THREADS=yes WITH_AUTH_MODULES=yes WITH_DAV_MODULES=yes WITH_SSL_MODULES=yes WITH_PROXY_MODULES=yes WITH_BERKELEYDB=db42 install clean

然後到 /boot/loader.conf 加入一行
accf_http_load="yes"

讓 Apache 開機時自動啟動,到 /etc/rc.conf 加入一行
apache_enable="YES"

若有看到以下錯誤訊息:
Invalid argument: Failed to enable the 'httpready' Accept Filter

檢查一下核心設定檔是否有加上:
options         ACCEPT_FILTER_HTTP


Install MySQL
cd /usr/ports/databases/mysql51-servermake install clean

如果希望 MySQL 支援 Big5 編碼,請在 Makefile ONFIGURE_ARGS 參數後面新增:「--with-charset=big5」
CONFIGURE_ARGS= --localstatedir=/var/db/mysql \--without-debug \--without-readline \--without-libedit \--with-libwrap \--with-mysqlfs \--with-low-memory \--with-comment='FreeBSD port: ${PKGNAME}' \--enable-thread-safe-client \--with-charset=big5

不過這個缺點是會讓 MySQL 建立新的資料庫時,預設的編碼都選擇 big5,而 big5 已經越來越少用了,所以建議以加上參數的方式,更改對 big5 的支援。
make WITH_CHARSET=utf8 WITH_XCHARSET=all WITH_COLLATION=utf8_general_ci install clean

設定開機自動啟動,在 /etc/rc.conf 加入一行
mysql_enable="YES"

請將適合的 MySQL 設定檔複製到 /etc 底下:
cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf


Install PHP
cd /usr/ports/lang/php5make install clean

修改 Apache 設定檔
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps


參考資料:
http://blog.twku.net/2005/10/15/18/

ps.餅乾又出現了 0.0

最後修改日期:2009/08/06

2009/05/14

FreeBSD kernel update

要準備重編 kernel 前,還是要先去更新一下 src:
cd /usr/src/
make update
更新完成以後可以看一下最新的 src 版本:
more /usr/src/sys/conf/newvers.sh

確定要更新以後開 Makefile 看注意事項,更新步驟大致如下:
  1. make buildworld
  2. make buildkernel KERNCONF=MY_CONF
  3. make installkernel KERNCONF=MY_CONF
  4. reboot
  5. mergemaster -p
  6. make installworld
  7. make delete-old
  8. mergemaster
  9. reboot
  10. make delete-old-libs

我電腦比較爛,這邊要編一個多小時,後來很懶乾脆直接用 freebsd-update 裝 bin。
freebsd-update -r 7.2-RELEASE fetch
freebsd-update install

FreeBSD make.conf

/etc/make.conf
# for make install

MASTER_SITE_BACKUP?= \
ftp://ftp.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp2.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp3.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp4.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp5.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp7.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp8.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp9.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/

MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}
MASTER_SORT_REGEX=      \.tw/ \.tw\. \.edu/ \.edu\.
FETCH_CMD=fetch -U -A -P

WITHOUT_X11=yes

MAKE_JOBS_NUMBER=3

# for cvsup make update

SUP_UPDATE=yes
SUP=            /usr/bin/csup
SUPFLAGS=       -g -L 2
SUPHOST=        cvsup2.tw.FreeBSD.org
SUPFILE=        /usr/share/examples/cvsup/standard-supfile
PORTSSUPFILE=   /usr/share/examples/cvsup/ports-supfile
DOCSUPFILE=     /usr/share/examples/cvsup/doc-supfile



/usr/share/examples/cvsup/standard-supfile
*default release=cvs tag=RELENG_7_2

聽說 FreeBSD 8.0 會加上 Parallel port builds,到時候裝東西應該會很快。

2009/04/10

腦殘 + 手賤不可取

之前為了全自動更新 ports,寫了一個 script 存成 /usr/ports/update.sh。最近要更新發現不管發生什麼事 make update 都會顯示「update is to date」,連資料夾全部砍掉也不例外!後來是餅乾出馬才知道 make 會自動去找與關鍵字有關的檔案當作指令,好死不死 update 就是一個。

後來把 update..sh 更名時整個手賤,連 /usr/ports/Makefile 一起消失了。Makefile 消失以後 make 又自動跑去找其他檔案當作 Makefile,整個 ports 開始狂噴錯誤訊息。到 /usr/src make update 以後總算把 ports 還原,現在開始重裝套件。

一天沒睡,早上吃宵夜看 pietty 跑 make install 的感覺實在很微妙........

2008/12/04

OpenSolaris 2008.11 released

Features:
  • ZFS Time Slider and Songbird
  • Suspend/Resume and CPU power management 
  • Distribution Constructor and Prototype Automated Installer
  • WebStack with 64-bit MySQL, CherryPy, and DTrace for Ruby
  • GNOME 2.24, OpenOffice 3.0, and Firefox 3
  • Many F/OSS apps added, including top, sudo and emacs
  • 700 additional man pages and Package Manager online help 
>> Download OpenSolaris

2008/05/30

FreeBSD : Cannot allocate red zone for initial thread

前幾天主機大爆炸,apachectl stop 時狂噴錯誤訊息:
Fatal error 'Cannot allocate red zone for initial thread' at line 384 in file usr/src/lib/libthr/thread/thr_init.c (errno = 12)


餅乾要我 ldd /usr/local/sbin/httpd,看看會用到哪些 lib:
/usr/local/sbin/httpd:
libm.so.4 => /lib/libm.so.4 (0x280ca000)
libaprutil-1.so.2 => /usr/local/lib/libaprutil-1.so.2 (0x280e0000)
libdb-4.2.so.2 => /usr/local/lib/libdb-4.2.so.2 (0x280f4000)
libexpat.so.6 => /usr/local/lib/libexpat.so.6 (0x281b2000)
libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x281d2000)
libapr-1.so.2 => /usr/local/lib/libapr-1.so.2 (0x282c6000)
libcrypt.so.3 => /lib/libcrypt.so.3 (0x282e6000)
libpthread.so.2 => /lib/libpthread.so.2 (0x282fe000)
libc.so.6 => /lib/libc.so.6 (0x28323000)
libc.so.7 => /lib/libc.so.7 (0x2840a000)


錯誤原因是因為 kernel 更新以後,卻沒有更新函式庫,所以用到的全部是舊的函式庫,剛好 FreeBSD 6.x to 7.0 東西又改很大,所以倒台很正常。若有大的更新,步驟就不要偷跑,最好按照 Makefile 上的說明一步一步慢慢做:
  1. make buildworld
  2. make buildkernel KERNCONF=YOUR_KERNEL_HERE' (default is GENERIC)
  3. make installkernel KERNCONF=YOUR_KERNEL_HERE' (default is GENERIC)
  4. reboot (in single user mode: boot -s from the loader prompt)
  5. mergemaster -p
  6. make installworld
  7. make delete-old
  8. mergemaster
  9. reboot
  10. make delete-old-libs
最後一個步驟就是把舊的函式庫清除。

清除舊的函式庫以後,其他的套件執行時還是會去使用舊的函式庫,這時就會發生我遇到的錯誤。必須 pkg_delete -af 並重新編譯所有的套件,套件才會連到正確的函式庫。

更新後在 ldd 一次:
/usr/local/sbin/httpd:
libm.so.5 => /lib/libm.so.5 (0x280d2000)
libaprutil-1.so.2 => /usr/local/lib/libaprutil-1.so.2 (0x280e7000)
libdb-4.2.so.2 => /usr/local/lib/libdb-4.2.so.2 (0x280fc000)
libexpat.so.6 => /usr/local/lib/libexpat.so.6 (0x281d0000)
libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x281f0000)
libapr-1.so.2 => /usr/local/lib/libapr-1.so.2 (0x282e5000)
libcrypt.so.4 => /lib/libcrypt.so.4 (0x28308000)
libthr.so.3 => /lib/libthr.so.3 (0x28321000)
libc.so.7 => /lib/libc.so.7 (0x28334000)

2008/05/10

Apache Virtual Host

Virtual Host 的功能是能讓你將不同的 domain name 對到同一台機器上,但是能依照不同的 domain 來顯示不同的資訊。例如你擁有這三個網址:
http://www.zeroplex.orz/
http://mail.zeroplex.orz/
http://game.zeroplex.orz/
但是你可以讓這些網址全部連到同一台機器,但是根據網址不同,讓一個看到的是首頁、一個是電子郵件服務、另一個是遊戲下載。

Apache 有提供這項功能 (之後簡稱 vhost),只要把設定檔後面一段語法的注解取消掉就可以了。
/usr/local/etc/apache22/httpd.conf :

# Virtual hosts
Include etc/apache22/extra/httpd-vhosts.conf

設定檔大概會長的像這個樣子:
<VirtualHost *:80>
ServerAdmin your.mail@mail.com
DocumentRoot /www/game/
ServerName game.zeroplex.orz
ErrorLog /var/log/http-error_log
CustomLog /var/log/http-access_log common
</VirtualHost>
  • ServerAdmin:管理員的電子郵件信箱
  • DocumentRoot:你這個網址要以哪個目錄做為根目錄
  • ServerName:你使用的 domain name
  • ServerAlias:domain name 的 Alias
  • ErrorLog、CustomLog:記錄檔可以使用原本的也可以另外存放


vhost 設定好了以後不要忘記設定資料夾的權限:
<VirtualHost *:80>
ServerAdmin your.mail@mail.com
DocumentRoot /www/game/
ServerName game.zeroplex.orz
ErrorLog /var/log/http-error_log
CustomLog /var/log/http-access_log common

<Directory "/www/game/">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

</VirtualHost>


存檔以後 appachectl restart 即可。

當你有多個 vhost 時,使用這個方法會讓你的設定檔落落長,之後要修改也會變的非常麻煩。cookys 提供了一個不錯的管理方法,先在 httpd.conf 中加上:
Include /usr/local/etc/apache22/vhosts/*.conf

之後把所有設定檔存放在 vhosts 目錄下即可:
www.zeroplex.orz.conf
mail.zeroplex.orz.conf
game.zeroplex.orz.conf


參考資料:
http://httpd.apache.org/docs/1.3/vhosts/
http://wiki.debian.org.hk/w/Virtual_hosting_with_Apache

2008/03/09

FreeBSD PF and ALTQ configure

#PF conf
device pf
device pflog
device pfsync

#ALTQ conf
options ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (RED)
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)
options ALTQ_PRIQ # Priority Queuing (PRIQ)
options ALTQ_NOPCC # Required for SMP build

2008/02/12

Windows XP 將在六月停止銷售

微軟將在六月停止 Windows XP 的銷售,強力推廣 Vista。

iThome online : : XP六月將停產 微軟加速轉移用戶至Vista
http://www.ithome.com.tw/itadm/article.php?c=47449

微軟推出 Vista 一年多了,根據調查因為硬體需求高,而且軟體相容性並沒有很好,使得多數人不想要將作業系統升級為 Vista。雖然微軟表示將在四月左右推出更新,使得 Vista 性能更好、相容性更高,但是使用者並沒有意願升級,InfoWorld 還發起「Save Windows XP」活動,希望微軟能無限期延長對 XP 的支援。

我個人對 Vista 也感到不滿。同樣的特效 Vista 需要 1GB 以上的記憶體和高檔的顯示卡,但是 Linux 卻僅需要 512M 的記憶體和主機板內見的顯示卡就做的到,雖然有人跟我說過二者特效是不相同的系統,但是看起來一模一樣我為什麼還要花那麼多錢安裝 Vista?

如果要買 Vista,那我寧可去買 Vitas ..... XD