2014-12-25

認識電源供應器

PSU輸出總共分成3.3V、5V、12V三種,電腦零件個別使用哪種呢?
3.3V:PCI匯流排、南橋晶片、網路晶片

5V:12cm風扇(包含以下尺寸,部分14cm也可以5V供電啟動)、HDD硬碟跟光碟機PCB以及晶片元件、MB前後I\O輸出介面(EX : USB、P\S2)、MB 部分控制晶片(EX : PWM、音效晶片)、記憶體

12V:PCI-E匯流排、CPU、顯示卡、北橋晶片(未整合進CPU前)、HDD硬碟以及光碟馬達、MB MOSFET、14cm風扇(包含以上尺寸)

12cm風扇最低可以用3.3V電壓啟動,14cm以上最低則需要7V電壓才能啟動,PWM風扇實際上就是以電壓去控制風扇轉速高低,少部分高價風扇則是自己有PWM晶片做溫控動作。

在AGP跟更早之前的PCI時代,顯示卡吃的是3.3V,所以當時PSU重視的是3.3V、5V輸出,某些廠商因無力研發新架構就只能一直啃老本賣舊有商品,這類PSU跟目前時下主流重視12V相比會被認為『不足瓦』,實際上單純就以前跟現在的供電需求類型不同。
從顯示卡改吃12V供電之後,整平台吃最重的就是12V了,不計瑣碎的周邊、IO、匯流排、晶片那些,光算CPU跟顯示卡的耗電量就佔了總平台將近95%,所以挑PSU幾乎只要看12V就能夠判斷能否供給平台穩定使用。

12V以目前主流來看幾種迴路設計

(一) 單路12V輸出, 如下:

OcyQKjZ
P.S. : 振華雖然都為單路設計,但保護僅有3項

優點:
硬體只要接上即可使用,不須計算12V迴路供電有無分別過載

缺點:
OPP、OCP觸發上限不明確的話,過載未斷路12V有極大機率直接帶走所有零件

(二) 雙路、三路、四路12V輸出, 如下:

abzoLTg
優點:
多數設計為CPU、PCI-E1、PCI-E2甚至大瓦數產品有PCI-E3、PCI-E4為個別12V負責供應,遇到零件故障或者某路12V過載造成暴衝或者OCP、OPP、SCP未觸發,幾乎是只有該路12V所附掛的零件損壞

缺點:
如廠商未提供明確的12V分路供應設計,USER又無法得知該資訊,很容易因附掛零件擠在同一路12V造成過載

12V部分挑完之後就是看保護,基本上有六項
低電壓UVP:電壓的最小值超過限制時自動關閉電源供應器

過電流OCP:超過電流負荷時,自我防護動作啟動自動關閉電源供應器(視廠商設定觸發上限). 無OCP,有可能是"假雙路、真單路". OCP設太高=虛設

過電壓OVP:電壓的最大值超過限制時自動關閉電源供應器

過負載OPP:超過電源最大負載110%~130%時,自動關閉電源供應器(視廠商設定觸發上限)

過溫度OTP:感溫元件感應到溫度超過限制溫度時自動關閉電源供應器

短路保護SCP:當有輸出到任一零件端的電阻低於0.1歐姆時避免造成其他零件發生短路, 自動關閉電源供應器

以目前3.3V+5V總和100~120W左右來說,硬碟掛8顆是絕對沒問題的,不要有硬碟掛多吃不少3.3V、5V就認為12V輸出會減少,兩者的保護是分開做不互相干涉。

!!! 不管再貴、設計再好的產品良率也不會100%.

你學會看7樣東西,挑出來的psu的89不離10了。

[1]電壓上的波紋必須小, ripple of 100% loading (要看用示波器測的,軟體測的都是垃圾,無參考價值)
[2]電壓必須穩定,高負載不能掉壓,掉一點點可以, 不能太多。以顯示卡而言, 如供電不足螢幕會出現花屏之類的,表示螢幕顯示不正常,並不清晰,就是代表供電不足,但不至於會燒掉. 檢測電源供應器最好用線性阻抗當負載,如大功率電阻,加載之後再以示波器觀測各點波形,這樣比較能明確判斷電源供應器是否正常。輕載或空載的情況下, 單單量測電壓是不足以判斷的.電容老化, 輸出電流不足, 接上負載一定會掉電壓. 差勁的Power, 電壓起伏越大,相對的顯示卡.主機板.記憶體.硬碟 升天的機率就越高. 常見的狀況就是電壓供應器沒有爆炸. 硬碟掛了N顆. 主機板或顯示卡一直送修.
[3]該有的安全機制必須有,保護機制的種類和設定值。( 缺一不可, 多路款至少要知OCP的設定值)
[4]交叉負載時,哪些點的表現比較差
[5]知道自己到底要單路還是多路,多路又是幾路
[6]瓦數計算:單軌供電尤其是12V的瓦數必須足夠應付需求。取得CPU、顯示卡的約略滿載耗電量→挑選預算內12V足以供給CPU、顯卡總和耗電量之產品→從12V足夠、預算內的清單內先挑選出保護最足的部分→以用料、交叉負載表現最佳的產品購買。主要是看PSU的12V瓦數, 不是總瓦數。
[7]各式接頭在12v分路上的分配 (ex: 12V1 for MB+Accessory, 12V2 for CPU, …)、長度與數量

另外, 基於安全上的考慮, 歐美先進國家認為超過240VA的直流電,對人體電擊和設備火災..安全有危險. 所以其安規有要求持續功率不能超過240VA的認證. 例如,12V電源輸出不能超過20A, 5V不能超過48A,20V不能超過12A....

單路12V設計PSU,它的電流往往都超過20A,這種單路PSU在歐美是違反安規,不得進口販售的.且電流的限流保護線路會受溫度和材料誤差所影響,限流值常可能有10% 以上誤差. 廠商怕違反安規, 在標示PSU 12V最大額定電流時,有時只標示18A ,不敢標剛剛好20A.

各國安規略有不同要求,歐盟有CE,北美FCC,CSA,CB,UL標張,中國有CCC ,日本有PSE, ... 台灣經濟部標檢局BSMI認證則沒要求240VA規定,所以市售仍買得到單路12V大電流的PSU. 台灣市售號稱符合多國安規的PSU,大都是採多路設計,設計成本略高一點點.

顯卡設計者,也明白這240VA安規,且一根power pin腳,最大約可耐6~7A,所以,高階的顯卡的12V接頭,會分成8P +6P(3power pins + 3 GND pins),分別吃不同路的電流. 同理, SLI時,顯卡上的接頭也是分別各自吃不同路的電流.這樣就不會違反240VA的安規.

所以,很多大瓦數的PSU,若要賣歐美國家,它的12V輸出,就得把1路,分流成2路,3路(12V1,12V2,12V3),甚至5路,分別給CPU,高階顯卡,或SLI .每路最大電流都會小於20A,通常是18A.

2014-12-23

IGP主機板插上獨立顯卡

一般來說,IGP (Integrated graphics processors) 主機板插上獨立顯卡後,內建的IGP預設都會自動關閉 (關閉後, 耗電量會少一點嗎?)。因此, 在條件相同的情況下,含IGP的主機板加裝獨立顯卡的效能表現,和一般的北橋並沒有明顯差別。

因此在 BIOS 中 Interal Graphics 的選項, 保留 default : AUTO 即可.

顯示卡記憶體容量大小差異性?

1.顯示卡上的記憶體最初的工作內容是提供營幕顯示的解析度與色彩深度, 舉個簡單的算式可以加速了解: 以24吋, 16:10 1920x1200解析度的液晶螢幕來說, 1920x1200 (縱橫解析度)x32bit(位元色彩)/8/1024/1024(換算成Mega)=8.7890625. 可得知, 顯示卡上最少需要9M以上的記憶體, 才能"顯示"出這樣的(2D)解析度與色彩深度. 如果需要顯示三維畫面(也就是3D), 相同的記憶體就要再乘以三, 也就是需要最少30M左右

2.然而在現今的3D遊戲/程式中, 光是這樣的容量仍然是不足的, 因為使用者需要相對的繪圖速度, 也就是我們常說的FPS(Frame per Second 每秒顯示畫面), 所以顯示卡上記憶體又有另外的工作效用, 簡單說明如下:

硬碟內遊戲材質--主記憶體--CPU解壓縮材質--匯流排(AGP/PCI-E)--顯示卡記憶體--顯示卡晶片運算繪圖--顯示卡輸出(類比或數位訊號)

因為多數3D材質容量龐大, 而由此工作順序可知, 顯示卡上記憶體越大, 反覆往CPU/主記憶體/匯流排要求資料次數可以減小, 可以作為顯示卡晶片運算時的高速緩衝, 進而加速3D處理速度...

PS.目前有許多顯示卡GPU或是PHY物理加速卡, 具有協同CPU運算/解壓縮材質的功能, 但仍不能取代顯示卡上高速記憶體直通GPU的功能...

3.然而目前多數遊戲使用512M的顯示記憶體已可應付的不錯, 除非使用者需要更高的解析度或是使用各種反鋸齒/高畫質功能, 但這也需要有相對的CPU/GPU速度, 並非大容量的顯示卡記憶體就可以解決, 若是在大部分使用者滿意的速度為前提下, 目前顯示卡記憶體的"速度"應比"容量"來的重要...

顯示卡的效能最主要還是控制在顯示卡晶片的效能與記憶體的"速度". 至於記憶體的"大小", 其實在一般使用下對效能的改善有限.

2014-12-20

Windows 7 行動作業中心發出警告:視訊硬體錯誤 (Video Hardware Error)

來源 Windows
摘要 視訊硬體錯誤
日期 ‎2014/‎8/‎7 下午 09:53
狀態 未報告
描述 您的視訊硬體發生問題,導致 Windows 停止正常運作。

問題簽章
問題事件名稱:    LiveKernelEvent
作業系統版本:    6.1.7601.2.1.0.256.4
地區設定識別碼:    1028

問題的額外資訊
BCCode:    117
BCP1:    FFFFFA80073AF4E0
BCP2:    FFFFF88006E46D10
BCP3:    0000000000000000
BCP4:    0000000000000000
OS Version:    6_1_7601
Service Pack:    1_0
Product:    256_1

========= BCCode 117 代表意義, 及可能解法 =====================

BCCode: 117     0x00000117
The VIDEO_TDR_TIMEOUT_DETECTED bug check has a value of 0x00000117. This indicates that the display driver failed to respond in a timely fashion.
BCCode: 117     0x00000117  <-- read this link
http://www.faultwire.com/solutions-fatal_error/The-display-driver-failed-to-respond-in-timely-fashion-0x00000117-*1276.html

1. Update the Video driver - also look for BIOS and low level chipset drivers at the System Maker's (motherboard maker's for custom systems).
2. Check for Viruses/Malware.
3. Check the hard drive for errors - run Checkdisk
4. Change the power supply

=========================================================

如何檢視行動作業中心記錄 : 行動作業中心->維護->檢視可靠性歷程記錄->檢視方式:週(W)

2014-12-19

Event ID 1530 -Avira Antivirus

In Event Viewer is the following error Event ID 1530:
Windows detected your registry file is still in use by other applications or services. The file will be unloaded now. The applications or services that hold your registry file may not function properly afterwards.
DETAIL -
1 user registry handles leaked from \Registry\User\S-1-5-   _Classes:
Process 1788 (\Device\HarddiskVolume1\Program Files (x86)\Avira\AntiVir Desktop\avguard.exe) has opened key \REGISTRY\USER\S-1-5-21-1856070677-1184215578-1670999655-1001_CLASSES\SOFTWARE\Microsoft\Windows\CurrentVersion
Source
They suggest to uninstall Sandboxie and check whether error will still happen, and it still does after Sandboxie is completely removed. Always on shutdown, always event 1530.
After playing with Avira settings, I found out that disabling option "protect files and registry entries from manipulation" stops event 1530, with or without Sandboxie installed.

2014-12-18

VIA High Definition音效晶片 VT2021 驅動解決方案 @ Windows 7 x64

部份主機版其內建音效卡是採用High Definition音效晶片。
在Windows XP 下必須安裝Microsoft 所提供的更新(SP1/SP2=KB888111,SP3=KB835221),否則只辨認出無法辨識的裝置或無法安裝驅動程式。

而且還要安裝Microsoft UAA Bus Driver for High Definition Audio, 之後再安裝音效卡驅動程式

Windows Vista / 7 已支援High Definition Audo, 並已內建 UAA Bus Driver for High Definition Audio, 所以當未安裝驅動程式下會辨認出High Definition Audo裝置,只要安裝驅動程式即可。可參考 AIDA64 所產生之報告內容.
如果希望得到最好的音效,建議到主機版官網下載最新的驅動程式。

安裝方式如下:

控制台->裝置管理員->音效視訊及遊戲控制器->High Definition Audio 裝置 (按右鍵)
-> 更新驅動程式軟體->手動尋找並安裝驅動程式軟體
i.e. : VIA audio driver (驅動程式被下載後解壓縮之目錄)-> VIAHDAud -> Present -> Drivers -> HDWin764

2014-05-24

修改 Blogger 的字型、行距、字距

要改 Blogger 的字型,首先先來認識中文字型的英文名稱

◎Linux作業系統
       文泉驛正黑    :WenQuanYi Zen Hei
       全字庫正楷體:TW-Kai
◎Mac OS作業系統
       黑體-繁  :Heiti TC
       儷黑 Pro :LiHei Pro
       標楷體   :BiauKai
◎Windows作業系統
       微軟正黑體 :Microsoft JhengHei
       新細明體  :PMingLiU
       細明體   : MingLiU
       標楷體   :DFKai-sb

了解之後,開始來改字型,到【範本】→【編輯HTML】中,按【Ctrl】鍵+【F】鍵,輸入關鍵字 px ,按【Enter】鍵,如下圖

2014-05-24_125840

就搜尋出的第一個結果的重點來解釋一下
<Variable name="body.font" description="Font" type="font"
default="normal normal 13px Arial, Tahoma, Helvetica, FreeSans, sans-serif"value="normal normal 16px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
body.font是內文字型,default是預設值,value是指定值,會優先執行value,若找不到,再執行default,所以我們若要改內文的字型為,在Linux作業系統顯示全字庫正楷體 (TW-Kai),在Mac OS作業系統顯示標楷體 (BiauKai),在Windows作業系統顯示微軟正黑體 (Microsoft JhengHei),就要改value值。
將原本的
value="normal normal 16px Arial, Tahoma, Helvetica, FreeSans, sans-serif"
改為
value="normal normal 16px Arial, TW-Kai, BiauKai, Microsoft JhengHei, sans-serif"
若只要優先顯示微軟正黑體,則只要在, sans-serif前插入, Microsoft JhengHei即可,如下
value="normal normal 16px Arial, Tahoma, Helvetica, FreeSans, Microsoft JhengHei, sans-serif"
要注意在字型前要空一格,這樣就可以了。下面還有各區塊,可依此類推改字型。
header.font
description.font
tabs.font
date.font
post.title.font
widget.title.font
widget.font
要改行距、字距。到【範本】→【自訂】→【進階】→【新增CSS】中新增以下字串
.post-body {
font-size:100%;
color:#222222;
line-height: 1.8em;
letter-spacing: 0.8px;
}
font-size:文字大小
color:文字顏色
line-height:行距
letter-spacing:字距
以上數值皆可依您需要做更改,改好後,按【套用至網誌】就完成了,如下圖

2014-05-24_130202

若只要改行距、字距,新增以下字串即可
.post-body {
line-height: 1.8em;
letter-spacing: 0.8px;
}
line-height:行距
letter-spacing:字距
以上數值皆可依您需要做更改

2014-05-22

How does a kernel mount the root partition?

非常值得參考的一份文件為 Jserv 所寫的深入理解 Linux 2.6 的 initramfs 機制 (上). 以下是對 initrd 與 initramfs 的概念性比較:

  initrd initramfs
Image 壓縮過的檔案系統 (如 ext2 + gzip) 封裝過的檔案 (cpio + gzip)
實做途徑 block device (RAM disk) tmpfs
首先執行的程式 /linuxrc /init

掛載 rootfs 方式

將欲載入的 rootfs 掛載於某個目錄,再 pivot_root 切換 rootfs 使用 switch_root

 

In ancient times, the kernel was hard coded to know the device major/minor number of the root fs and mounted that device after initializing all device drivers, which were built into the kernel. The rdev utility could be used to modify the root device number in the kernel image without having to recompile it.

Eventually boot loaders came along and could pass a command line to the kernel. If the init= argument was passed, that told the kernel where the root fs was instead of the built in value. The drivers needed to access that still had to be built into the kernel. While the argument looks like a normal device node in the /dev directory, there obviously is no /dev directory before the root fs is mounted, so the kernel can not look up a dev node there. Instead, certain well known device names are hard coded into the kernel so the string can be translated to the device number. Because of this, the kernel can recognize things like /dev/sda1, but not more exotic things like /dev/mapper/vg0-root or a volume UUID.

Later, the initrd came into the picture. Along with the kernel, the boot loader would load the initrdimage, which was some kind of compressed filesystem image ( gzipped ext2 image, gzipped romfs image, squashfs finally became dominant ). The kernel would decompress this image into a ramdisk and mount the ramdisk as the root fs. This image contained some additional drivers and boot scripts instead of a real init. These boot scripts performed various tasks to recognize hardware, activate things like raid arrays and LVM, detect UUIDs, and parse the kernel command line to find the real root, which could now be specified by UUID, volume label and other advanced things. It then mounted the real root fs in /initrd, then executed the pivot_root system call to have the kernel swap / and /initrd, then exec /sbin/init on the real root, which would then unmount /initrd and free the ramdisk.

Finally, today we have the initramfs. This is similar to the initrd, but instead of being a compressed filesystem image that is loaded into a ramdisk, it is a compressed cpio archive. A tmpfs is mounted as the root, and the archive is extracted there. Instead of using pivot_root, which was regarded as a dirty hack, the initramfs boot scripts mount the real root in /root, delete all files in the tmpfs root, then chroot into /root, and exec /sbin/init.

2014-05-15

MTD related

2014-05-15_064449

Reference :

1. Memory Technology Devices

2014-05-05

如何為嵌入式開發建立交叉編譯環境

隨著消費類電子產品的大量開發和應用和Linux操作系統的不斷健壯和強大,嵌入式系統越來越多的進入人們的生活之中,應用範圍越來越廣。

在裁減和定製Linux,運用於你的嵌入式系統之前,由於一般嵌入式開發系統存儲大小有限,通常你都要在你的強大的pc機 上建立一個用於目標機的交叉編譯環境。這是一個由編譯器、連接器和解釋器組成的綜合開發環境。交叉編譯工具主要由 binutils、gcc 和 glibc 幾個部分組成。有時出於減小 libc 庫大小的考慮,你也可以用別的 c 庫來代替 glibc,例如 uClibc、dietlibc 和 newlib。建立一個交叉編譯工具鏈是一個相當複雜的過程,如果你不想自己經歷複雜的編譯過程,網上有一些編譯好的可用的交叉編譯工具鏈可以下載。 ex : Introduction to Cross Compilation .

本文我們將以建立針對arm的交叉編譯開發環境為例來解說整個過程,其他的體系結構與這個相類似,只要作一些對應的改動。我的開發環境是,宿主機 i386-redhat-7.2,目標機 arm。

整個過程如下

1. 下載源文件、補丁和建立編譯的目錄
2. 建立內核頭文件
3. 建立二進制工具(binutils)-  GNU Binutils 的主要工具有兩個,一個是連接程序ld,另外一個是彙編程序as。其主要目的是為GNU 系統,提供彙編和連接工具。
4. 建立初始編譯器(bootstrap gcc)
5. 建立c庫(glibc)
6. 建立全套編譯器(full gcc)

2014-04-17

嵌入式系統 Boot Loader 技術內幕

1. 引言

在專用的嵌入式板子運行 GNU/Linux 系統已經變得越來越流行。一個嵌入式 Linux 系統從軟件的角度看通常可以分為四個層次:

1. 引導加載程序。包括燒錄在 firmware 中的 boot 代碼(可選),和 Boot Loader 兩大部分。

2. Linux 內核。特定於嵌入式板子的定製內核以及內核的啟動參數。

3. 文件系統。包括根文件系統和建立於 Flash 內存設備之上文件系統。通常用 ram disk 來作為 root fs。

4. 用戶應用程序。特定於用戶的應用程序。有時在用戶應用程序和內核層之間可能還會包括一個嵌入式圖形用戶界面。常用的嵌入式 GUI 有:MicroWindows 和 MiniGUI 。

2014-03-29

VirtualBox 與 Debian/Ubuntu 客端額外功能(Guest Additions)

來源 : 石頭閒語
本文的內容包括 :
  • 安裝客端額外功能(Guest Additions)
  • 滑鼠整合沒作用(Mouse pointer integration not work)
  • 螢幕解析度可調整項目變少了

必須要先安裝的套件

一、安裝 build-essential and module-assistant
安裝 build-essential ,這將用於編譯 VirtualBox 客端功能的 Linux 核心模組。
$ sudo apt-get install build-essential
$ sudo apt-get install module-assistant
$ sudo apt-get install linux-headers-$(uname -r)

 
二、安裝 dkms

若你的 Guest OS 是 Ubuntu 10.04 Lucid 或更新的散佈版本時,必須安裝 dkms。它是新的核心模組載入機制。已知 VirtualBox 的滑鼠整合功能模組依賴此機制載入。若未安裝 dkms ,則滑鼠整合功能不會發生作用。

$ sudo apt-get install dkms

如果你已經安裝了客端額外功能,才發現沒有安裝 dkms 且滑鼠整合功能沒作用,你必須安裝 dkms 之後,再重裝一次客端額外功能。更快捷的方式是在安裝 dkms 之後,直接執行指令 sudo /etc/init.d/vboxadd setup。裝好之後,須重新啟動 Guest OS.

三、下載 VirtualBox Guest Additions ISO

當你使用 VirtualBox 選單的「安裝 Guest Additions ...」之後,VirtualBox 通常會自動下載客端額外功能軟體的 CD ISO 影像檔,並且自動掛載。若你碰到未自動下載的情形時,也可自行到官方網站下載。下載後,再自行透過 CD 裝置掛載該 ISO 影像。掛載 VBoxGuestAdditions CD ISO檔後,開啟它,並以 root 的權限執行其中的 VBoxLinuxAdditions.run。

I tried to install the VirtualBox Guest Additions on a virtual Debian machine. However when I tried executing the installer script I got this error:

bash: ./VBoxLinuxAdditions.run: Permission denied
The script uses /bin/sh as shell and on Debian Wheezy /bin/sh is symlinked to /bin/dash. Dash is a more light-weight replacement for Bash, and it turns out that the VirtualBox script does not work as it should when run with “dash”. An easy workaround is to explicitly run the script with “bash” with the following command:
sudo bash ./VBoxLinuxAdditions.run
or
sudo sh ./VboxLinuxAdditions.run

滑鼠整合沒作用(Mouse pointer integration not work)


Guest OS 為 Ubuntu 10.04 及之後的版本,請參考上一節第二項關於 dkms 的內容。

正常來說,新建的 Guest OS 在安裝「客端額外功能(Guest Additions)」並重新啟動 Guest OS 之後,「滑鼠整合」就會發揮功效。但若你碰到滑鼠整合功能沒有作用的詭異情形時,你需要編輯 /etc/X11/xorg.conf (*1*1. 若此文件不存在,則 Guest OS 應該是新版的,請參考上一節 dkms 的內容),手動加入下列的設定段落。

Section "InputDevice"
        Identifier      "vboxmouse"
        Driver          "vboxmouse"
        Option          "CorePointer"
        Option          "Device"        "/dev/input/mice"
EndSection


正常來說,就算 xorg.conf 沒有上述的 InputDevice 段落,滑鼠整合功能依然會作用。

我今天新裝了一個 Ubuntu 9.04 Desktop 的 guest 系統,安裝客端額外功能後,滑鼠整合功能竟然沒有發生作用。我覺得很奇怪,已經我先前安裝過數次 Ubuntu Desktop 作為 guest 系統,但都沒發生這問題。查詢後才知道,有時候要自己手動加入上述的設定內容。我開啟先前安裝的 Ubuntu Desktop guset ,把兩邊的 xorg.conf 比對一下,結果先前安裝的 Ubuntu Desktop guest 的 xorg.conf 沒有這一段,但滑鼠整合還是可作用。真是怪哉。

螢幕解析度可調整項目變少了


首先,如果是 Ubuntu 9.04 的使用者,可以參考我先前寫的使用筆記,按照裡面的步驟修正客端額外功能的安裝程式。 Ubuntu 9.10 的使用者,請參考 Logan 寫的Ubuntu 9.10 + VirtualBox Guest Additions修正。

當我安裝額外功能並重新啟動 guest 系統後的第一次晝面,我的螢幕解析度有 1280x768 (按預設 12MB 顯示記憶體)。我啟動 Ubuntu Desktop 的「顯示」控制台,一開始顯示我可以選擇從 1280x768 到 640x480 的5種解析度。接著我將螢幕解析度下調到 1024x768。調整完畢後,我很訝異地發現,在「顯示」控制台內,我可以選擇的解析度只剩下 1024x768 到 640x480 的3種解析度了。我沒有辦法再往上調整更高的解析度了。

如果你跟我一樣碰到這種情形,我們需要編輯 /etc/X11/xorg.conf ,手動在 Screen 段落中,加入 Display 的子段落,明確地列出我們希望能調整的解析度項目。如下所示:

Section "Screen"
   Identifier   "Default Screen"
   Monitor      "Configured Monitor"
   Device      "Configured Video Device"

   DefaultDepth    24
   SubSection      "Display"
      Depth           24
      Modes           "800x600" "1440x900" "1360x768" "1280x1024" "1280x960" "1152x864" "1024x768" 
   EndSubSection

EndSection

上例設定範例,列出7種解析度,那麼在「顯示」控制台中,就會至少出現這7種解析度供我們選擇。不再愈調愈少。

登入晝面(GDM)會取 Modes 中的第一個項目作為解析度。所以我把 800x600 放在第一個。

2014-03-28

嘗試構建自己的busybox

來源 : http://www.360doc.com/content/13/0829/19/7377734_310794205.shtml

1、一個作為宿主機的Linux;本文使用的是Redhat Enterprise Linux 5.4;
2、在宿主機上提供一塊額外的硬盤作為新系統的存儲盤,為了降低複雜度,這裡添加使用一塊IDE接口的新硬盤;
3、Linux內核源碼,busybox源碼;本文使用的是目前最新版的linux-2.6.34.1和busybox-1.16.1。

說明:本文是一個step by step的實做指南;

2014-03-16

反省錄——接納自己,接納一個不成功的我

最近看了一篇文章,因此面對自己最近眾多的不順和不順的氣,有了一個重新認識。
  說實話,我覺得自己是在被社會貼上標籤後感到痛苦、焦慮和煩躁。總而言之,我活在了別人的世界裡。
  年齡愈大,學歷也不錯,別人認為你當然應該有所成就,自己也覺得應該去追求些什麼,至少每一件事不是傻乎乎,做的背後應該不是單純沒有想法的,而應該帶了某種目的,比如被領導賞識、被領導發現你的才能,展示你優秀的辦事能力。然而現實往往事與願違。這可能就是越單純的人獲得成功的幾率就愈大。相反,帶有目的的人反而被自己絆住了。因而,經常咒怨別人,埋怨現實。
  後來,看了一篇文章,我忽然有所領悟,犯的最根本的錯誤就是——沒有接納自己。
  沒有接納自己,所以任何事的風向標都是以別人為標準,被各種不順所羈絆。
  其實,芸芸眾生中,一部分人可能會很成功,達到世俗認為的——位居高職、收穫財富、有房有車等標準,而另一部分人由於個性、性格、能力以及不努力,可能就不會成功。我就是其中一個,應該告訴自己,由於我性格中的缺陷、社交能力的有限、處世的不圓滑,縱然讀得書多,資歷老了,但未必會實現世俗認為的成功。然而,又能怎樣呢?我同樣可以享受當下,享受每分每秒的快樂。超出我能力範圍之外的事情,我真的不應該憂慮。接納自己有多個方面,比如接受由於性格缺陷、能力不足而犯下的錯誤;承認自己的過失,但不要過分懊惱;丟開束縛世俗韁繩。如果你想快樂,誰也掠奪不走。是的,不成功又怎樣,我不是超人。做真實的自己。
  然而自己不成功就算了呢,不是的,我們雖然不成功,但是很有優秀的精神,我們依然要具備,耐心和毅力,其實我們每個人都有,只是因此懶惰,我們會丟掉。我們沒有必要挑戰所有的困難,但偶爾挑戰自己,讓自己更加具有耐心和毅力,卻不失為一種樂趣。如果你做得了,興許忽然發現很多事情突然變順了。
  接納自己,我不是一個成功的人,但我可以做好能力範圍內的事情就好了。
  挑戰自己,給自己每天一點驚喜,欣賞自己的成就。
  這樣的過程,我可以具備。
  接納自己,接納一個不成功的我。

反省錄

有『麻煩』就是『方法不對』, 有『困難』就是『能力不足』, 有『猶疑』就是『膽識不夠』
有『遺憾』就是『謀略不精』, 有『誤會』就是『溝通不良』, 有『怨言』就是『領導不正』
有『奢侈』就是『勤儉不力』, 有『輕浮』就是『心境不靜』, 有『抗爭』就是『執法不公』
有『大話』就是『腳踏不實』, 有『耳輕』就是『事實不查』, 有『迫害』就是『私心不輕』
有『是非』就是『口德不修』, 有『爭執』就是『己言不改』

2014-01-08

Windows 7 mklink命令詳解

mklink是Windows 7下的一個類似於linux下In的命令,其作用是在NTFS文件系統中創建文件或目錄的鏈接(類似於桌面快捷方式)。如果加以利用其發揮的作用是非常的大的,不僅可以幫助我們節省不少時間,而且可以使我們重裝系統後不再丟失用戶文件。

Mklink命令詳細介紹

Windows 7下的mklink命令通過指定參數可以建立出不同形式的文件或目錄鏈接,分為 hard link、symbolic link 和junction 三種。

1.symbolic link

  A symbolic link is like a short-cut but instead of being saved as a file it is registered to the hard drive partition. It does not use any disk space and all programs recognise both the link and the target. A symbolic link can point to any file or folder either locally on the computer or over a network using a SMB path. ( A short cut is a file that points to another file. It is an antiquated pointing system from the Windows 95 era that many programs do not recognise. Short-cuts do not only use up space on the hard drive, they also break and linger behind after the target has been deleted, renamed or moved. )

2.junction

  作用基本和 symbolic link 類似。區別在於,junction 在建立時會自動引用原文件(或目錄)的絕對路徑, 而 symbolic link 允許相對路徑的引用。A junction behaves like a hard link for directories but unlike file hard links you can create junctions that span multiple partitions. Again a directory junction and its content is stored on the hard drive partition but they do not use any additional space. Any changes to the content within either the target or the links will automatically propagate except where the target directory is deleted or renamed. In that case all hard links that point to the target will break and linger on the partition.

3.hard link

  建立一個 hard link 相當於給文件建立了一個別名,例如對1.TXT創建了名字為2.TXT的硬鏈接,若使用記事本對1.TXT進行修改,則2.TXT也同時被修改,若刪除1.TXT,則2.TXT依然存在,且內容與1.TXT一樣。 A file hard link is a little different and can not be used over multiple partitions meaning you can not have a link on drive C: pointing to a file on drive D:. A file hard link points to and duplicates a target as a mirrored copy but the copy does not use any additional space on the hard drive partition. So 2 hard links that mirrored a 1 GB file would  in total only use 1 GB on the partition rather than 3 GB. Importantly if either the hard links or the target are deleted the other links retain the data. Changes to the content of either the target or the links automatically propagate to all other items.

建立鏈接請注意:
1、建立文件或目錄鏈接限於 NTFS 文件系統,symbolic (junction) link 的建立可以跨文件系統;
2、hard link 只能用於文件,不能用於目錄,symbolic (junction) link 可以為目錄建立鏈接;
3、hard link 只能建立同一分區內的文件指向;
4、hard link 不允許對空文件建立鏈接,symbolic (junction) 可以。

Mklink的參數定義

無參數指定:建立文件的符號鏈接。無參數指定的默認情況下,建立的是文件的符號鏈接,刪除鏈接文件不會影響源文件,
/d:建立目錄的符號鏈接符號鏈接(symbolic link)
/j:建立目錄的軟鏈接(聯接)(junction)
/h:建立文件的硬鏈接(hard link)

命令格式:mklink /d(定義參數) \MyDocs(鏈接文件) \Users\User1\Documents(原文件)

最後,至於刪除建立的鏈接,跟刪除文件一樣使用」DEL」命令。

Mklink命令用途

轉移系統中的用戶設置文件

  Windows 7中將用戶設置與系統文件分離, 所有的用戶設置及用戶文件都存儲在C盤下的User目錄 (在中文版Windows 7中顯示為「用戶」目錄), 重裝系統後所有的系統設置及用戶文件都會消失。

  Windows 7安裝完成後可以將C盤下的User目錄轉移到非系統分區,如D盤,這樣,重裝系統後只要重新將C盤下的User目錄鏈接到D盤即可。我們在創建鏈接後系統在訪問C:/User目錄其實是在訪問D:/User目錄。

命令如下:

1.複製User目錄到D盤 : robocopy 「C:\Users」 「D:\Users」 /E /COPYALL /XJ
2.強制刪除User目錄 : rmdir 「C:\Users」 /S /Q
3.創建C盤下的User的軟件鏈接,鏈接到D盤User目錄:mklink /J 「C:\Users」 「D:\Users」

重裝系統後只需重覆第二條和第三條命令及可

有了這條命令就再也不怕重新系統了

2014-01-02

Task Scheduling Error : Event 100, Bonjour Service

暫時解法 :

Solution 1 : 解除安裝 Bonjour 服務.

Solution 2 : Adrian said : Apparently you can ignore this as the Bonjour service (used by iTunes) is quick to record it anytime it "thinks" it experiences an unreasonable delay. If you don't want the event in your logs, you can disable Bonjour (open Services, find Bonjour Service in the list, stop it and change the startup type to "Manual" or "Disabled").

Source: http://www.eventid.net/display-eventid-100-source-Bonjour%20Service-eventno-10659-phase-1.htm

The "Task Scheduling Error" type of problems seem to be a common issue on Windows 7 64 bit. Several users ended up stopping the service in order to avoid the logs being filled with these errors. They would only start the service when needed (iTunes needs this service in order to run properly).
From our experience, iTunes will start regardless of the status of the Bonjour service, however a warning is displayed saying that Bonjour is needed to access shared libraries. The warning will only be shown once so it won't bother you every time iTunes is started. In iTunes Preferences, the Sharing tab will display a message saying that the Bonjour service is required in order to use this feature.

 

安裝 iTunes 之後, 事件檢視器中, 持續出現類似以下的錯誤:

Task Scheduling Error: Continuously busy for more than a second
Task Scheduling Error: m->NextScheduledEvent 7004
Task Scheduling Error: m->NextScheduledSPRetry 7004

2014/01/02 : 嘗試於 AP 防火牆中 disable “Filter multicast”. (還是會發生)

2014/01/04 : AP disable “Filter multicast” 之後, 仍然會發生 Event 100 ERROR; 決定解除安裝 Bonjour, and enable “Filter multicast” again. 觀察後續 iTunes 和 iPhone 搭配使用上是否會有問題.

2014/01/09 : 解壓縮 iTunes64Setup.exe 之後, 單獨安裝 Bonjour64.msi. 再觀察看看.(還是會發生)

2014/01/11 : 改變 Windows 防火牆-進階設定-輸入規則-Bonjour 服務 設定 : 4 rules –> 2 rules. .(還是會發生)
原本 : 設定檔(公用)+程式(32 bits or 64 bits mDNSResponder.exe)+通訊協定(TCP or UDP)
新版 : 設定檔(任何)+程式(32 bits or 64 bits mDNSResponder.exe)+通訊協定(任何)

2014/01/11 19:16 : disable AP DD-WRT SPI firewall .(還是會發生)

2014/01/12 05:32 改變網路卡電源管理, 允許電腦關閉這個裝置以節省電源 : Enabled->Disabled (還是會發生)

2014/01/12 09:20 將 iPod 服務由手動改為自動, Bonjour 服務防火牆設定如下 [不是我設的, 系統自己變成這樣] : (還是會發生)

2014/01/15 04:58 關閉 Windows Firewall ( Testing … )

2014/01/17 03:34 mDNSresponder.exe 改用 x86 版.(還是會發生)

2014/01/17 06:47 改變省電時間設定 ( 10/30 –> 20/20 ) .(還是會發生)

2014-01-12_174052

備註 1 : Bonjour 服務需要 UDP port 5353
Bonjour_Firewall
備註 2 : 需要 Bonjour Service 才能和其他使用者共享音樂, 透過 AirPlay 揚聲器播放音樂, 連接 Apple TV 和使用 iPhone 和iPod touch 遙控器. (目前我似乎用不上)
備註 3 : iTunes64Setup.exe 實際上是一個壓縮檔, 可用 7z.exe 解壓縮.