<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-12154567</id><updated>2011-11-23T13:47:56.714+08:00</updated><category term='linux'/><category term='資安'/><category term='棒球'/><category term='linux snort'/><category term='英文'/><category term='網路安全'/><category term='修車'/><category term='空大'/><category term='理財'/><title type='text'>研究"生"論文</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default?start-index=101&amp;max-results=100'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>110</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-12154567.post-1004363105709181382</id><published>2011-10-01T13:56:00.002+08:00</published><updated>2011-10-01T14:58:29.730+08:00</updated><title type='text'>產業分析《第三週報告》</title><content type='html'>&lt;span class="Apple-style-span" style="background-color: white; color: #444444; font-family: 'Times New Roman', Times, FreeSerif, serif; font-size: 15px; line-height: 21px;"&gt;上課時間：2011年10月1日&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-lOfeAPlO5xw/Toa5LAOVS1I/AAAAAAAAAWE/kZuDvUPai6M/s1600/%25E7%25B9%25AA%25E5%259C%25961.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://2.bp.blogspot.com/-lOfeAPlO5xw/Toa5LAOVS1I/AAAAAAAAAWE/kZuDvUPai6M/s640/%25E7%25B9%25AA%25E5%259C%25961.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-1004363105709181382?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/1004363105709181382/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2011/10/blog-post_01.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/1004363105709181382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/1004363105709181382'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2011/10/blog-post_01.html' title='產業分析《第三週報告》'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-lOfeAPlO5xw/Toa5LAOVS1I/AAAAAAAAAWE/kZuDvUPai6M/s72-c/%25E7%25B9%25AA%25E5%259C%25961.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-2838209713813247933</id><published>2011-10-01T10:34:00.000+08:00</published><updated>2011-10-01T13:53:19.478+08:00</updated><title type='text'>專題講座《報告-講演方法與秘訣》</title><content type='html'>上課時間：2011年10月1日&lt;br /&gt;參考網址：&lt;a href="http://tx.liberal.ntu.edu.tw/Jx/ResearchSeminar/MASeminar(1)-11.htm"&gt;http://tx.liberal.ntu.edu.tw/Jx/ResearchSeminar/MASeminar(1)-11.htm&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;專題講座重點&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;國內的碩士論文&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;ul&gt;&lt;li&gt;老師將之前學長做的簡報部份做講解：&lt;b&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://tx.liberal.ntu.edu.tw/Jx/Methodology/%E5%A0%B1%E5%91%8A-%E6%9C%89%E7%89%B9%E8%89%B2%E4%B9%8B%E5%AD%B8%E7%94%9F%E5%AD%B8%E7%BF%92%E6%88%90%E6%9E%9CMa.htm"&gt;http://tx.liberal.ntu.edu.tw/Jx/Methodology/%E5%A0%B1%E5%91%8A-%E6%9C%89%E7%89%B9%E8%89%B2%E4%B9%8B%E5%AD%B8%E7%94%9F%E5%AD%B8%E7%BF%92%E6%88%90%E6%9E%9CMa.htm&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;老師另外小分享&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;用心做好準備，等待機會來臨&lt;/li&gt;&lt;li&gt;口頭報告，是對聽眾的責任，也是自已應該要做好的部份&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;b&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;如何準備研討會報告&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;/b&gt;&lt;/ul&gt;&lt;ol&gt;&lt;ol&gt;&lt;li&gt;老師將之前針對口頭跟計畫部份經驗的，在下星期會實做&lt;/li&gt;&lt;li&gt;計畫書口頭報告是每個碩士生都會經過一個階段，都常會投稿研討會&lt;/li&gt;&lt;li&gt;口頭報告部份，要事先準備好，該準備的東西可以參考老師的網址部份去參考：&lt;a href="http://tx.liberal.ntu.edu.tw/Jx/Methodology/%E5%A0%B1%E5%91%8A-%E6%96%B9%E6%B3%95%E8%88%87%E7%A7%98%E8%A8%A3.htm"&gt;http://tx.liberal.ntu.edu.tw/Jx/Methodology/%E5%A0%B1%E5%91%8A-%E6%96%B9%E6%B3%95%E8%88%87%E7%A7%98%E8%A8%A3.htm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;發表：口頭報告與書面審查內容不一樣，要注意的部份-可能要找一下錄音檔&lt;/li&gt;&lt;li&gt;國際型研討會標準時間是二十分鐘，注意研究會所規範的報告時間&lt;/li&gt;&lt;li&gt;綀習口頭報告注意事項：&lt;/li&gt;&lt;li&gt;請將自我介紹放在第二頁&lt;/li&gt;&lt;li&gt;參考文獻放在後面&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;自已提醒&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;在聽老師在講課的時候，其實這些我都有聽過，但是在做的部份並沒有實際去做，所以不知道我到底實力如何，而且老師不願其煩的重覆講解。&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;專家講座規畫&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;ol&gt;&lt;li&gt;目前學生確定不邀請人來上課&lt;/li&gt;&lt;li&gt;下星期要準備文獻研究(老師交待要交的東西-圖書 總集(編)&lt;/li&gt;&lt;li&gt;下星期要上的課程&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;10/8&amp;nbsp;&lt;a href="http://tx.liberal.ntu.edu.tw/Jx/ResearchSeminar/MASeminar(1)-11.htm"&gt;http://tx.liberal.ntu.edu.tw/Jx/ResearchSeminar/MASeminar(1)-11.htm&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;br /&gt;所以會有一天放假(要看一下錄音檔)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;畢業口試才能做完&lt;br /&gt;對聽眾的責任&lt;br /&gt;&lt;br /&gt;提早準備&lt;br /&gt;&lt;br /&gt;好幾天以前要準備&lt;br /&gt;&lt;br /&gt;演綀的機會&lt;br /&gt;&lt;br /&gt;發表：口頭與書面審查不一樣&lt;br /&gt;&lt;br /&gt;二十分鐘&lt;br /&gt;八分鐘&lt;br /&gt;&lt;br /&gt;目的方法&lt;br /&gt;研究背景盡量不要講&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 標楷體;"&gt;&lt;span class="Apple-style-span" style="font-size: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;核心文獻&lt;br /&gt;&lt;br /&gt;二十章簡報&lt;br /&gt;&lt;br /&gt;面試：&lt;br /&gt;通關密語：某某對什麼熱情&lt;br /&gt;&lt;br /&gt;補充：&lt;br /&gt;&lt;br /&gt;參考文獻放在後面&lt;br /&gt;簡報&lt;br /&gt;第二頁&lt;br /&gt;增加自我介紹&lt;br /&gt;&lt;br /&gt;國際型&lt;br /&gt;十五~二十分鐘 &amp;nbsp;或者是 十分鐘 標準演講&lt;br /&gt;&lt;br /&gt;很清楚簡報內容&lt;br /&gt;很充容&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-2838209713813247933?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/2838209713813247933/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2011/10/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/2838209713813247933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/2838209713813247933'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2011/10/blog-post.html' title='專題講座《報告-講演方法與秘訣》'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-9054429311568316577</id><published>2011-09-15T17:34:00.002+08:00</published><updated>2011-09-16T11:30:23.783+08:00</updated><title type='text'>辦公室出現鯊魚</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-54679ae2e07d9eb2" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v20.nonxt6.googlevideo.com/videoplayback?id%3D54679ae2e07d9eb2%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331535000%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D82C9AF99793D6F26873C1F59E8DF1BB584055778.727FAD2E1EDB68063637A05140A8E77CC6C4BDD1%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D54679ae2e07d9eb2%26offsetms%3D5000%26itag%3Dw160%26sigh%3DtnYgP9BhVaYAs86h8lMd1c0Ux7s&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v20.nonxt6.googlevideo.com/videoplayback?id%3D54679ae2e07d9eb2%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331535000%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D82C9AF99793D6F26873C1F59E8DF1BB584055778.727FAD2E1EDB68063637A05140A8E77CC6C4BDD1%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D54679ae2e07d9eb2%26offsetms%3D5000%26itag%3Dw160%26sigh%3DtnYgP9BhVaYAs86h8lMd1c0Ux7s&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;這次辦公室出現了鯊魚，而且是為了公司即將上市的天之痕所宣傳的，我把它照下來成影片留紀念。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-9054429311568316577?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/9054429311568316577/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2011/09/blog-post_6418.html#comment-form' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/9054429311568316577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/9054429311568316577'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2011/09/blog-post_6418.html' title='辦公室出現鯊魚'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-3456881388668628252</id><published>2010-06-15T15:11:00.001+08:00</published><updated>2011-09-15T16:34:33.475+08:00</updated><title type='text'>CTUpdate幫你離線打包</title><content type='html'>&lt;span id="fullpost"&gt;CTUpdate幫你離線打包&lt;/span&gt; &lt;br /&gt;&lt;div id="fullpost"&gt;隱藏部分的文章 &lt;/div&gt;&lt;code&gt;&lt;br /&gt;製作Windows安裝光碟有時候無法滿足所有的「重灌」需求（例如想用還原光碟重灌時）。要是你不想（或者沒辦法）自己在Windows安裝光碟裡加料，而必須在Windows灌好再自行補上更新檔時，CTUpdate會是個很好的工具。&lt;br /&gt;&lt;br /&gt;小檔案：CTUpdate目前版本：5.0授權方式：免費軟體官方網站：http://www.vulnerabilityassessment.co.uk/ctupdate.htm&lt;br /&gt;&lt;br /&gt;&lt;&lt;/code&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;CTUpdate的官方網站，可以在這個網頁找到使用說明和下載連結。&lt;br /&gt;用一句話來解釋CTUpdate：「製作Windows更新檔離線安裝程式的軟體」。CTUpdate本質跟Windows Updates Downloader很像，只是後者把更新檔下載完之後，就什麼都不管了，而CTUpdate在抓完更新檔之後，還順便打包成一個可以離線更新Windows的安裝程式，而且還是個「.iso」檔。你只要把CTUpdate產生的ISO檔用燒錄軟體燒成光碟片，就可以拿著這片光碟，在任何一台安裝Windows的電腦上進行離線更新。&lt;br /&gt;&lt;br /&gt;在Windows各版本之間的支援程度方面，相較於nLite和vLite各只支援Windows XP和Vista，CTUpdate支援的Windows版本比較多。nLite和vLite不支援Windows 2000、Server 2003和Server 2008，但CTUpdate都可以支援。另外CTUpdate也支援各版本及各語言的Office套裝軟體的更新。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CTUpdate的主畫面，支援的Windows版本相當多，也支援Office系列軟體。&lt;br /&gt;利用CTUpdate離線安裝&lt;br /&gt;&lt;br /&gt;CTUpdate可到 http://www.vulnerabilityassessment.co.uk/ctupdate.htm （或 http://0rz.tw/f65f9 ）下載，它並沒有安裝程式，將下載回來的ZIP檔解壓縮就好了。解壓縮之後，執行「UpdateGenerator.exe」，這是CTUpdate主要的執行檔，用途在於引導使用者製作出一個離線自動更新程式。&lt;br /&gt;&lt;br /&gt;1.解壓縮、免安裝&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;將壓縮檔解開之後就是這些檔案了，執行「UpdateGenerator.exe」吧！&lt;br /&gt;&lt;br /&gt;畫面當中可以看到許多打勾的地方，讓你選擇要下載更新檔的作業系統版本和語系（繁體中文要選「Taiwanese」），另外，Windows Vista和Server 2008的更新檔已經沒有語系之分了（一檔多語通用），因此只需要按照自己的需求，選擇非x64或x64的版本即可。&lt;br /&gt;&lt;br /&gt;2.決定製作選項&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;除了選擇語言和Windows版本以外，CTUpdate還有其他選項可供選擇。&lt;br /&gt;&lt;br /&gt;至於附圖下方那幾個選項，「Exclude Service Packs」勾選後，下載時會跳過所有的Services Pack（服務套件），只下載修正用途的更新。「Clean up download directories」一旦勾選了，CTUpdate製作完ISO檔會一口氣將所有下載回來的更新檔刪除，下次要再製作ISO檔時會重新下載。&lt;br /&gt;&lt;br /&gt;3.節省下載時間&lt;br /&gt;&lt;br /&gt;網路頻寬不夠大，或硬碟空間還充足的話，不妨把更新檔留下來，下次再跑CTUpdate時，就只會自動抓這次沒抓到的更新檔（例如幾個月後又有新的更新檔了）。&lt;br /&gt;&lt;br /&gt;「Include .NET Framework 3.5 SP1」顧名思義則是將.NET Framework 3.5 SP1包進來囉，「Verify downloads」則是自動檢查下載回來的檔案是否有損壞。&lt;br /&gt;&lt;br /&gt;最後的兩個選項則是決定建立ISO檔時，要依各版本和各語言建立，還是依各語言建立就好。大部份的情況下都只會下載XP繁體中文版或Vista的修正檔，因此選哪個都沒差。但你打算同時製作支援多個版本或多個語言的.iso檔時，就得留意一下這裡的選項。非x64和x64的版本會比照不同語言的方式來處理。&lt;br /&gt;&lt;br /&gt;4.做好燒出來&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;產生出來的.iso檔會在iso資料夾裡，可以用燒錄軟體將它燒成光碟。&lt;br /&gt;&lt;br /&gt;製作好的ISO檔，可用燒錄軟體燒錄成光碟，Windows自動播放功能沒被關掉的話會出現提示更新的畫面（沒有的話，執行光碟裡的updateinstaller.exe吧！）。&lt;br /&gt;&lt;br /&gt;畫面當中有6個選項，「Backup existing system files」是更新時一併備份系統裡原有檔案（通常是不需要啦），「Install Internet Explorer 7」和「Install .NET Framework 3.5 SP1」顧名思義就是勾選是否安裝這兩個東西。&lt;br /&gt;&lt;br /&gt;「Update Office products」則是更新Office套裝軟體（如果系統有安裝，製作.iso檔時也有下載更新檔的話），「Automatic reboot and recall」則是更新過程當中，要是需要重開機時則自動重開機並繼續更新。如果不勾選，重開機時會提示你等會要再執行一次安裝程式。最後一個「Show log file」則是更新完畢後，開啟記錄檔讓你看。&lt;br /&gt;&lt;br /&gt;利用CTUpdate更新Windows&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;將CTUpdate的ISO檔燒成光碟，該光碟的Autorun畫面，按「Start」即開始更新。&lt;br /&gt;&lt;br /&gt;安裝到一半出現這個訊息時，請手動重開機，開機完畢後再執行一次更新程式。&lt;br /&gt;&lt;br /&gt;所有更新檔都安裝好之後一樣需要手動重開機，不過出現的訊息不一樣。&lt;br /&gt;結論&lt;br /&gt;&lt;br /&gt;「Windows更新檔」這玩意在某方面來講，可以說是商業軟體造成的包袱之一，因為直接出新版本牽涉的層面太廣，只好一直出更新檔。「Windows Update」雖然足以應付個人電腦用戶的需求，但畢竟對於進階玩家或特殊環境來講並不是那麼方便。希望這篇介紹的工具軟體能簡化你平日更新Windows的流程，進而節省時間和提升效率。&lt;br /&gt;&lt;br /&gt;【PChomeAdvance電腦王】&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-3456881388668628252?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://mag.udn.com/mag/digital/storypage.jsp?f_ART_ID=180882' title='CTUpdate幫你離線打包'/><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/3456881388668628252/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2010/06/ctupdate.html#comment-form' title='9 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/3456881388668628252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/3456881388668628252'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2010/06/ctupdate.html' title='CTUpdate幫你離線打包'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-7497116651922769962</id><published>2010-01-05T20:28:00.005+08:00</published><updated>2010-06-09T02:22:08.042+08:00</updated><title type='text'>英日語免費網路學習資源</title><content type='html'>英國《經濟學人》   &lt;a href="http://www.economist.com/" target="_blank"&gt;http://www.economist.com&lt;/a&gt;&lt;br /&gt;紐約時報           &lt;a href="http://www.nytimes.com/" target="_blank"&gt;http://www.nytimes.com&lt;/a&gt;&lt;br /&gt;&lt;a href="mailto:Knowledge@Wharton" target="_blank"&gt;Knowledge@Wharton&lt;/a&gt;  &lt;a href="http://knowledge.wharton.upenn.edu/" target="_blank"&gt;http://knowledge.wharton.upenn.edu/&lt;/a&gt;&lt;br /&gt;美國商周           &lt;a href="http://www.businessweek.com/" target="_blank"&gt;http://www.businessweek.com&lt;/a&gt;&lt;br /&gt;◎以上四個網站都有免費的文章可以看，很適合商管的人們練習，尤其是紐約時報包羅萬象常會有很多有趣的新聞，而&lt;a href="mailto:Knowledge@Wharton" target="_blank"&gt;Knowledge@Wharton&lt;/a&gt;更有Audio檔可以下載，也是練習聽力的好幫手，喜歡科技的朋友可以看商周，常會有意想不到的收穫！&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;英國BBC             &lt;a href="http://news.bbc.co.uk/" target="_blank"&gt;http://news.bbc.co.uk&lt;/a&gt;&lt;br /&gt;普利茲新聞獲獎作品 &lt;a href="http://www.pulitzer.org/" target="_blank"&gt;http://www.pulitzer.org&lt;/a&gt;&lt;br /&gt;美國全國廣播公司   &lt;a href="http://www.msnbc.com/news" target="_blank"&gt;http://www.msnbc.com/news&lt;/a&gt;&lt;br /&gt;華爾街日報評論     &lt;a href="http://www.opinionjournal.com/" target="_blank"&gt;http://www.opinionjournal.com&lt;/a&gt;&lt;br /&gt;Wikipedia Online   &lt;a href="http://www.wikipedia.org/" target="_blank"&gt;http://www.wikipedia.org&lt;/a&gt;&lt;br /&gt;Wikipedia Quote    &lt;a href="http://www.wikiquote.org/" target="_blank"&gt;http://www.wikiquote.org&lt;/a&gt;&lt;br /&gt;◎以上特別推薦wikipedia  英文的免費線上百科，幾乎啥都查的到，另外 wikiquote可查格言！&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #990000;"&gt;文法：&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;a href="http://webster.commnet.edu/grammar/" target="_blank"&gt;http://webster.commnet.edu/grammar/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ccc.commnet.edu/grammar/index2.htm" target="_blank"&gt;http://ccc.commnet.edu/grammar/index2.htm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cybertranslator.idv.tw/grammar/grammar.htm" target="_blank"&gt;http://www.cybertranslator.idv.tw/grammar/grammar.htm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.englishfree.com.cn/gb/dictionary/" target="_blank"&gt;http://www.englishfree.com.cn/gb/dictionary/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.collins.co.uk/Corpus/CorpusSearch.aspx" target="_blank"&gt;http://www.collins.co.uk/Corpus/CorpusSearch.aspx&lt;/a&gt;&lt;br /&gt;美國普渡大學  Online Writing&lt;br /&gt;&lt;a href="http://owl.english.purdue.edu/" target="_blank"&gt;http://owl.english.purdue.edu/&lt;/a&gt;                                                                         &lt;br /&gt;&lt;span style="color: #990000;"&gt;&lt;strong&gt;英英字典：&lt;/strong&gt;&lt;/span&gt;                                                                              &lt;br /&gt;劍橋字典   &lt;a href="http://dictionary.cambridge.org/" target="_blank"&gt;http://dictionary.cambridge.org/&lt;/a&gt;&lt;br /&gt;朗文字典   &lt;a href="http://www.longmanwebdict.com/"&gt;http://www.longmanwebdict.com/&lt;/a&gt;&lt;br /&gt;韋氏字典    &lt;a href="http://www.m-w.com/" target="_blank"&gt;http://www.m-w.com/&lt;/a&gt;&lt;br /&gt;Tiger字典   &lt;a href="http://www.wordsmyth.net/" target="_blank"&gt;http://www.wordsmyth.net/&lt;/a&gt;&lt;br /&gt;綜合字典   &lt;a href="http://www.hyperdictionary.com/"&gt;http://www.hyperdictionary.com/&lt;/a&gt;&lt;br /&gt;俚語字典    &lt;a href="http://www.peevish.co.uk/slang/search.htm" target="_blank"&gt;http://www.peevish.co.uk/slang/search.htm&lt;/a&gt;&lt;br /&gt;線上英語學習網站 「n詞酷」&lt;a href="http://www.nciku.com.tw/Yahoo" target="_blank"&gt;http://www.nciku.com.tw/&lt;/a&gt;英英字典 含有發音、圖解、說明語源及歷史&lt;br /&gt;&lt;a href="http://education.yahoo.com/reference/dictionary/" target="_blank"&gt;http://education.yahoo.com/reference/dictionary/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: #990000;"&gt;英語學習論壇：&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;English Forum   &lt;a href="http://www.englishforums.com/" target="_blank"&gt;http://www.englishforums.com/&lt;/a&gt;&lt;br /&gt;瘋狂英語俱樂部  &lt;a href="http://www.crazyenglish.org/" target="_blank"&gt;http://www.crazyenglish.org/&lt;/a&gt;&lt;br /&gt;噹噹噹          &lt;a href="http://www.downdowndown.net/" target="_blank"&gt;http://www.downdowndown.net&lt;/a&gt;&lt;br /&gt;時尚英語        &lt;a href="http://www.oh100.com/huayuan/english/" target="_blank"&gt;http://www.oh100.com/huayuan/english/&lt;/a&gt;&lt;br /&gt;英語麥當勞      &lt;a href="http://english23.6to23.com/" target="_blank"&gt;http://english23.6to23.com/&lt;/a&gt;&lt;br /&gt;在線練習聽力    &lt;a href="http://www.icanlisten.com/" target="_blank"&gt;http://www.icanlisten.com&lt;/a&gt;&lt;br /&gt;全真英語        &lt;a href="http://www.icansay.com/" target="_blank"&gt;http://www.icansay.com&lt;/a&gt;&lt;br /&gt;旺旺英語        &lt;a href="http://www.wwenglish.org/" target="_blank"&gt;http://www.wwenglish.org&lt;/a&gt;&lt;br /&gt;Englishtown     &lt;a href="http://www.englishtown.com/" target="_blank"&gt;http://www.englishtown.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-7497116651922769962?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/7497116651922769962/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2010/01/blog-post.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/7497116651922769962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/7497116651922769962'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2010/01/blog-post.html' title='英日語免費網路學習資源'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-7563161123164951605</id><published>2007-10-17T21:43:00.002+08:00</published><updated>2011-02-20T22:43:41.116+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='英文'/><title type='text'>【學習】實用英文網站</title><content type='html'>&lt;u&gt;&lt;span style="color: #3366ff;"&gt;★&lt;strong&gt;英文文法&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/u&gt;1、Grammar Guide：&lt;br /&gt;&lt;a href="http://www.grammarstation.com/grammarguide/Gguide.html"&gt;http://www.grammarstation.com/grammarguide/Gguide.html&lt;/a&gt;&lt;br /&gt;你不確定你寫的句子文法對不對嗎？Grammar Guide可以幫你改喔！ &lt;br /&gt;2、Grammar Quizzes：&lt;br /&gt;&lt;a href="http://www.hkhs.kh.edu.tw/course/english/grammar_test/grammar_test.html"&gt;http://www.hkhs.kh.edu.tw/course/english/grammar_test/grammar_test.html&lt;/a&gt;#&lt;br /&gt;由小港高中葉博士所設計的英文文法測驗，可針對自己較不足的部分加強訓練。&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;3.、Grammar Help：&lt;br /&gt;&lt;a href="http://www.ruthvilmi.net/hut/help/grammar_help/"&gt;http://www.ruthvilmi.net/hut/help/grammar_help/&lt;/a&gt;&lt;br /&gt;裡面提供英文各種詞性的用法及規則，還有各種題目可供練習。&lt;br /&gt;4、Grammar Bytes：&lt;br /&gt;&lt;a href="http://www.chompchomp.com/"&gt;http://www.chompchomp.com/&lt;/a&gt;&lt;br /&gt;提供了許多handouts給學生及老師使用，但有規定不可以拿來作商業營利用途。&lt;br /&gt;5、Grammar Lady：&lt;br /&gt;&lt;a href="http://www.grammarlady.com/"&gt;http://www.grammarlady.com/&lt;/a&gt;&lt;br /&gt;裡面有詳細的文法，還有Q&amp;amp;A可供同學解決個人的問題。&lt;br /&gt;6、Pop-Up Grammar：&lt;br /&gt;&lt;a href="http://englishplus.com/grammar/"&gt;http://englishplus.com/grammar/&lt;/a&gt;&lt;br /&gt;這個網站包羅萬象，包括教授教導如何寫書信及標點符號的用法，非常實用。&lt;br /&gt;7、Grammar Now：&lt;br /&gt;&lt;a href="http://www.grammarnow.com/"&gt;http://www.grammarnow.com/&lt;/a&gt;&lt;br /&gt;有許多文法上的技巧，還有專門回答疑問的空間和對特殊字詞的定義及解釋，對讀者助益良多。&lt;br /&gt;8、Daily Grammar：&lt;br /&gt;&lt;a href="http://www.dailygrammar.com/"&gt;http://www.dailygrammar.com/&lt;/a&gt;&lt;br /&gt;提供了很多的基本詞性及文法的句子供你去參考，讓你學習如何辨別及組合句子，對&lt;br /&gt;英文寫作很有幫助。&lt;br /&gt;9、English-Zone：&lt;br /&gt;&lt;a href="http://www.english-zone.com/grammar/"&gt;http://www.english-zone.com/grammar/&lt;/a&gt;&lt;br /&gt;有各式各樣的題目供你去練習，還有程度的區分，讓你循序漸進，不過有的需要註冊。&lt;br /&gt;10、English Grammar：&lt;br /&gt;&lt;a href="http://grammar.englishclub.com/"&gt;http://grammar.englishclub.com/&lt;/a&gt;&lt;br /&gt;對許多的詞性、有哪些字、用法，都以表格解釋整理的相當的清楚，尤其句子詞性對&lt;br /&gt;照的方式，一目了然，讓我們能輕易的學會文法。&lt;br /&gt;11、Grammar Slammer：&lt;br /&gt;&lt;a href="http://englishplus.com/grammar/"&gt;http://englishplus.com/grammar/&lt;/a&gt;&lt;br /&gt;提供了書信的寫法、句子結構、符號、及大小寫的用法，是其它網站比較少的，值得&lt;br /&gt;我們去深入學習。&lt;br /&gt;12、Guide to Grammar and Style：&lt;br /&gt;&lt;a href="http://newark.rutgers.edu/~jlynch/Writing/"&gt;http://newark.rutgers.edu/~jlynch/Writing/&lt;/a&gt;&lt;br /&gt;編者Jack Lynch把他分成若干個系列，不但有介紹從基礎文法開始介紹，也有較高階&lt;br /&gt;的文法。我們亦可以直接連接到屬於自己國家的網站。&lt;br /&gt;13、Grammar Help：&lt;br /&gt;&lt;a href="http://www.ruthvilmi.net/hut/help/grammar_help/"&gt;http://www.ruthvilmi.net/hut/help/grammar_help/&lt;/a&gt;&lt;br /&gt;這一個網站是專門為了文法而設的，將我們日常生活上的動詞、名詞…等加以統整。&lt;br /&gt;14、The Blue Book of Grammar and Punctuation：&lt;br /&gt;&lt;a href="http://www.grammarbook.com/"&gt;http://www.grammarbook.com/&lt;/a&gt;&lt;br /&gt;提供許多相關文法的測驗，有SUBJECTS AND VERBS, PRONOUNS, ADJECTIVES AND&lt;br /&gt;ADVERBS等。&lt;br /&gt;15、Fundamentals of English Grammar: Description and Use：&lt;br /&gt;&lt;a href="http://www.engl.niu.edu/dhardy/grammarbook/title.html"&gt;http://www.engl.niu.edu/dhardy/grammarbook/title.html&lt;/a&gt;&lt;br /&gt;以下拉式的選單，讓讀者快速地search想要的資訊，也提供了非常詳盡的文法介紹。&lt;br /&gt;16、Self-study Grammar Quizzes：&lt;br /&gt;&lt;a href="http://a4esl.org/q/h/grammar.html"&gt;http://a4esl.org/q/h/grammar.html&lt;/a&gt;&lt;br /&gt;已分好難易程度，一進入便可找到自己適合的分類，進去做題目後可以馬上知道結果。&lt;br /&gt;17、the Internet Grammar of English：&lt;br /&gt;&lt;a href="http://www.ucl.ac.uk/internet-grammar/home.htm"&gt;http://www.ucl.ac.uk/internet-grammar/home.htm&lt;/a&gt;&lt;br /&gt;包含解釋、測驗，測驗可以選擇自己想測試的項目；資訊提供的主要對象為大學生。&lt;br /&gt;18、Guide to Grammar and Writing：&lt;br /&gt;&lt;a href="http://www.ccc.commnet.edu/grammar/textonly.htm"&gt;http://www.ccc.commnet.edu/grammar/textonly.htm&lt;/a&gt;&lt;br /&gt;以活潑的畫面提供文法及寫作技巧，是個不錯的網站。&lt;br /&gt;19、ESL Quiz Center：&lt;br /&gt;&lt;a href="http://www.pacificnet.net/~sperling/quiz/"&gt;http://www.pacificnet.net/~sperling/quiz/&lt;/a&gt;&lt;br /&gt;提供英文學習的問題測驗，包含文法的。&lt;br /&gt;20、英文動畫文法：&lt;br /&gt;&lt;a href="http://www.grammarfree.com.tw/tw/"&gt;http://www.grammarfree.com.tw/tw/&lt;/a&gt;&lt;br /&gt;中文的介面，用動畫的方式介紹文法。&lt;br /&gt;21、Better English：&lt;br /&gt;&lt;a href="http://www.better-english.com/"&gt;http://www.better-english.com/&lt;/a&gt;&lt;br /&gt;包含許多測驗當場寫當場改很有挑戰性。&lt;br /&gt;22、Mind your grammar：&lt;br /&gt;&lt;a href="http://www.edict.com.hk/vlc/grammarcourse/grammarcontent.htm"&gt;http://www.edict.com.hk/vlc/grammarcourse/grammarcontent.htm&lt;/a&gt;&lt;br /&gt;由edict語言學習網站所提供的文法學習和測驗，測驗時按下所選的答案馬上可知對或錯。&lt;br /&gt;23、Language sites on the Internet：&lt;br /&gt;&lt;a href="http://pw1.netcom.com/~rlederer/rllink.htm"&gt;http://pw1.netcom.com/~rlederer/rllink.htm&lt;/a&gt;&lt;br /&gt;各種類別的網站都可在這找到。&lt;br /&gt;24、Guide to Grammar and Writing：&lt;br /&gt;&lt;a href="http://webster.commnet.edu/grammar/index.htm"&gt;http://webster.commnet.edu/grammar/index.htm&lt;/a&gt;&lt;br /&gt;畫面活潑提供文法、寫作、論文等資源，還有題目可以練習。&lt;br /&gt;25、Grammar Check：&lt;br /&gt;&lt;a href="http://www.grammarcheck.com/thanks.htm"&gt;http://www.grammarcheck.com/thanks.htm&lt;/a&gt;&lt;br /&gt;把自己的email輸入系統會提供文法幫助。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3366ff;"&gt;&lt;br /&gt;&lt;u&gt;★&lt;/u&gt;&lt;strong&gt;&lt;u&gt;聽力與口說能力&lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;1. American English Pronunciation Practice:  &lt;a href="http://www.manythings.org/pp/"&gt;http://www.manythings.org/pp/&lt;/a&gt;&lt;br /&gt;想要知道相似英文單字發音的差別嗎？那就來這裡聽看看吧。聽完有練習可以做，看你學到多少。&lt;br /&gt;2. Audio Bible :&lt;br /&gt;&lt;a href="http://www.audio-bible.com/bible/bible.html"&gt;http://www.audio-bible.com/bible/bible.html&lt;/a&gt;&lt;br /&gt;這是一個包含聖經所有內容的網站，讀者每選擇任一個章節，就可以在螢幕上看到所&lt;br /&gt;選章節的內容，配合RealPlayer撥放全部內容。&lt;br /&gt;3. Bond and Pond quiz:&lt;br /&gt;&lt;a href="http://www.wordskills.com/general/bond_game.html"&gt;http://www.wordskills.com/general/bond_game.html&lt;/a&gt;&lt;br /&gt;有點饒舌的聽力測驗，還蠻不錯的。&lt;br /&gt;4. Book-Pop:&lt;br /&gt;&lt;a href="http://www.web-pop.com/flashindex.html"&gt;http://www.web-pop.com/flashindex.html&lt;/a&gt;&lt;br /&gt;這裡提供童話故事，點任何一篇進入後有故事內容，也有插圖，右上方點listen就可以了。&lt;br /&gt;5. California Distance Learning Project:&lt;br /&gt;&lt;a href="http://www.cdlponline.org/news.html"&gt;http://www.cdlponline.org/news.html&lt;/a&gt;&lt;br /&gt;點選一個主題後，可以看到一個目錄，中間有news story，進去之後即看到整篇文章，&lt;br /&gt;按右上方喇叭圖案收聽。回到前一頁可以做練習題，有字彙，選擇題，排列組合題等。難度中等。&lt;br /&gt;6. CNN Stories:&lt;br /&gt;&lt;a href="http://www.literacynet.org/cnnsf/archives.html"&gt;http://www.literacynet.org/cnnsf/archives.html&lt;/a&gt;&lt;br /&gt;線上新聞閱讀及收聽、收看的網站，由CNN San Francisco bureau所提供，左方有練&lt;br /&gt;習題，整體難度頗高。有文章讓聽者對照，聽起來沒那麼吃力。&lt;br /&gt;7. Easy way memorizing Essential English Expressions in Virtual Spaces:&lt;br /&gt;&lt;a href="http://aids.hallym.ac.kr/d/shin/vrt/efield.html"&gt;http://aids.hallym.ac.kr/d/shin/vrt/efield.html&lt;/a&gt;&lt;br /&gt;一個適合初學者的網站，這裡都是簡單的英文句子，沒有中文。&lt;br /&gt;8. English as Second Lauguage:&lt;br /&gt;&lt;a href="http://esl.about.com/cs/listening/"&gt;http://esl.about.com/cs/listening/&lt;/a&gt;&lt;br /&gt;有初級、中級、進階程度。在"beginner level learning" 點一下，會進入另一個頁&lt;br /&gt;面，再點選想要聽的主題。有測驗，答案在方框裡。左方有一個Quizzes and Tests，&lt;br /&gt;可以找到Listening Quizzes。&lt;br /&gt;9. English Campus Weekly Highlights-Improving Your Listening Skills&lt;br /&gt;&lt;a href="http://www.hkedcity.net/article/weekly-highlights/listening-skills/"&gt;http://www.hkedcity.net/article/weekly-highlights/listening-skills/&lt;/a&gt;&lt;br /&gt;一些不錯的短文，使用Audio來訓練聽力，還有一些Video來增加對學英文的印象。有&lt;br /&gt;一些小測驗可供練習。&lt;br /&gt;10. English Conversation:&lt;br /&gt;&lt;a href="http://vlc.polyu.edu.hk/conversation/"&gt;http://vlc.polyu.edu.hk/conversation/&lt;/a&gt;&lt;br /&gt;左方有六個不同的話題，如directions, greetings or weather，難度不高。&lt;br /&gt;11. English Listening (Ohio ESL)&lt;br /&gt;&lt;a href="http://www.ohiou.edu/esl/english/listening.html"&gt;http://www.ohiou.edu/esl/english/listening.html&lt;/a&gt;&lt;br /&gt;有Audio和Video的設備來幫助增加英文的聽力，這個網站還針對學習者的程度來對內&lt;br /&gt;容做不同的分級。還提供了其他聽力練習的網站連結。&lt;br /&gt;12. English Listening Lonuge:&lt;br /&gt;&lt;a href="http://www.englishlistening.com/"&gt;http://www.englishlistening.com/&lt;/a&gt;&lt;br /&gt;分為會員與非會員。講的速度稍慢，適合對英語字彙有基本認識的初學者或中等程度。&lt;br /&gt;提供scripts對照，也有答與問。&lt;br /&gt;13. English Listening Room&lt;br /&gt;&lt;a href="http://www.manythings.org/el/"&gt;http://www.manythings.org/el/&lt;/a&gt;&lt;br /&gt;這個網站裡面有提供一些英文歌，用RealPlayer撥放，每聽一首歌，就有一個歌詞填&lt;br /&gt;空的練習，可練習聽力， 適合在閒暇時候瀏覽。&lt;br /&gt;14. The English Professor:&lt;br /&gt;&lt;a href="http://www.theenglishprofessor.com/"&gt;http://www.theenglishprofessor.com/&lt;/a&gt;&lt;br /&gt;是一個初學者的網站。如果自認基礎沒打好，就來逛逛吧。有字母發音練習、數字練&lt;br /&gt;習、還有你基本認字及動詞，每種聲音可以反覆收聽。&lt;br /&gt;15. Everyday English:&lt;br /&gt;&lt;a href="http://www.everydayenglish.com/"&gt;http://www.everydayenglish.com/&lt;/a&gt;&lt;br /&gt;這個網站提供的資源不多，不過它將聽力影像化，適合英語初學者，聲音檔案可以下載。&lt;br /&gt;16. Everyday English in Conversation:&lt;br /&gt;&lt;a href="http://www.focusenglish.com/dialogues/conversation.html"&gt;http://www.focusenglish.com/dialogues/conversation.html&lt;/a&gt;&lt;br /&gt;難度中等，左方目錄有eating, emotions, fashion, friendship等等，可以挑選自&lt;br /&gt;己感興趣的，有些練習採填空方式進行，可以選擇聽一句或整個對話。&lt;br /&gt;17. Exercises in Using English for Academic Purposes:&lt;br /&gt;&lt;a href="http://www.uefap.co.uk/listen/listfram.htm"&gt;http://www.uefap.co.uk/listen/listfram.htm&lt;/a&gt;&lt;br /&gt;因為提供的是屬於較學術方面的資源，難度頗高，聽力測驗是採聽完一段把整段的字寫下來。&lt;br /&gt;18. Global English:&lt;br /&gt;&lt;a href="http://www.globalenglish.com/"&gt;http://www.globalenglish.com/&lt;/a&gt;&lt;br /&gt;可加入會員，不過它有免費的資源。在Skills Center裡面，有字彙、聽力、文法、&lt;br /&gt;說四項練習，聽力方面它是以兩人對話及圖片呈現。&lt;br /&gt;19. History Channel Speeches:&lt;br /&gt;&lt;a href="http://historychannel.com/speeches/index.html"&gt;http://historychannel.com/speeches/index.html&lt;/a&gt;&lt;br /&gt;這個網站有很多歷史性的演講，左方有目錄供點選，是有關政府或娛樂的演講(有一小段文字&lt;br /&gt;可以閱讀)，唯一的缺點是下載的速度有點慢。&lt;br /&gt;20. Interactive Listening Comprehension Practice:&lt;br /&gt;&lt;a href="http://www.iei.uiuc.edu/current/lcra/index.html"&gt;http://www.iei.uiuc.edu/current/lcra/index.html&lt;/a&gt;&lt;br /&gt;四個聽力練習，困難度有點高，有練習題，如果不知道哪裡答錯了可以按它的show time, &lt;br /&gt;可以知道每題的答案大概在那個時刻出現了。&lt;br /&gt;21. Intermediate English Course:&lt;br /&gt;&lt;a href="http://www.englishbos.com/IIsa/interm_listening.php"&gt;http://www.englishbos.com/IIsa/interm_listening.php&lt;/a&gt;&lt;br /&gt;簡單的英文句子，適合初學者學習。&lt;br /&gt;22. Kid's Corner:&lt;br /&gt;&lt;a href="http://wiredforbooks.org/kids.htm"&gt;http://wiredforbooks.org/kids.htm&lt;/a&gt;&lt;br /&gt;這裡提供了幾篇童話故事，有愛麗絲夢遊仙境等，網頁上方可點故事，下面則是收聽&lt;br /&gt;。有幾篇故事還有日文、法文、德語。&lt;br /&gt;23. Learning Oral English Online:&lt;br /&gt;&lt;a href="http://www.rong-chang.com/book/"&gt;http://www.rong-chang.com/book/&lt;/a&gt;&lt;br /&gt;只有10個簡短的實用對話，可以選擇收聽全部或者是點選你想聽的句子，它的字全部在螢幕上。&lt;br /&gt;24. Lost and Found Sounds:&lt;br /&gt;&lt;a href="http://www.npr.org/programs/lnfsound/stories/index.html"&gt;http://www.npr.org/programs/lnfsound/stories/index.html&lt;/a&gt;&lt;br /&gt;有點奇特的一個網站，這裡你會聽到一些很少聽到的東西，並有其他線上收聽節目。&lt;br /&gt;供休閒娛樂用。&lt;br /&gt;25. Monthly Idioms:&lt;br /&gt;&lt;a href="http://www.comenius.com/idioms/"&gt;http://www.comenius.com/idioms/&lt;/a&gt;&lt;br /&gt;每月更新的idioms, 提供釋義和一小段情境對話，可以在上面的框框點選之前的 idioms.&lt;br /&gt;26. The Moonlit Road:&lt;br /&gt;&lt;a href="http://www.themoonlitroad.com/"&gt;http://www.themoonlitroad.com/&lt;/a&gt;&lt;br /&gt;喜歡鬼故事或folktales嗎？那你就不要錯過這個網站。有每月更新的鬼故事、如果&lt;br /&gt;你不想聽一個storyteller講故事，那就點選 read the story吧。&lt;br /&gt;27. OM Audio:&lt;br /&gt;&lt;a href="http://www.ompersonal.com.ar/omaudio/contenidotematico.htm"&gt;http://www.ompersonal.com.ar/omaudio/contenidotematico.htm&lt;/a&gt;&lt;br /&gt;約十幾個日常生活對話，不難懂，有scripts。&lt;br /&gt;28. Pulse of the Planet:&lt;br /&gt;&lt;a href="http://pulseplanet.nationalgeographic.com/ax/todays_index.html"&gt;http://pulseplanet.nationalgeographic.com/ax/todays_index.html&lt;/a&gt;&lt;br /&gt;提供與生態環境相關的文章，線上全文閱讀(每日更新)。&lt;br /&gt;29. Randall's English Listening Lab:&lt;br /&gt;&lt;a href="http://www.esl-lab.com/"&gt;http://www.esl-lab.com/&lt;/a&gt;&lt;br /&gt;進站就有個清單，可選擇簡易、中等或困難程度。每一個聽力練習還有小測驗(選擇題)，&lt;br /&gt;會自動計算分數。這裡值得推薦的是script的單字會加底線，底下有單字的意思及例句、&lt;br /&gt;還有聽力填空及解釋每一題的答案。&lt;br /&gt;30. RealOne Guide&lt;br /&gt;&lt;a href="http://home.real.com/"&gt;http://home.real.com/&lt;/a&gt;&lt;br /&gt;這是個不錯的網站，包括新聞、娛樂、電影、音樂等內容。除了聽之外，還有影訊畫面。&lt;br /&gt;31. Specialized English:&lt;br /&gt;&lt;a href="http://www.spotlightradio.org/visitors/scraudio.asp"&gt;http://www.spotlightradio.org/visitors/scraudio.asp&lt;/a&gt;&lt;br /&gt;進入左方的Listen &amp;amp; Read後，有幾則文章，篇幅蠻長的，沒有練習題，不過可以聽 聽單字的發音。&lt;br /&gt;32. Working in English:&lt;br /&gt;&lt;a href="http://www.grand.k12.ut.us/esl/home.html"&gt;http://www.grand.k12.ut.us/esl/home.html&lt;/a&gt;&lt;br /&gt;適合給工作需要用到英文的人收聽，用的單字容易，對話也很短。&lt;br /&gt;33. Voice of America:&lt;br /&gt;&lt;a href="http://www.voanews.com/index.cfm"&gt;http://www.voanews.com/index.cfm&lt;/a&gt;&lt;br /&gt;線上新聞閱讀及收聽的網站，沒有練習題，新聞會每日更新，難度中上。&lt;br /&gt;34. 線上英語教室:&lt;br /&gt;&lt;a href="http://www.linguist.com.tw/ENGClass/default.htm"&gt;http://www.linguist.com.tw/ENGClass/default.htm&lt;/a&gt;&lt;br /&gt;採會員制，非會員只能試聽每個單元的第一個章節，會費是一年3000元整，不限次數&lt;br /&gt;上網。內容有實用對話、實用句庫，進階課程等。&lt;br /&gt;35. 鮑佳欣英語教室&lt;br /&gt;&lt;a href="http://www.justtalk.com.tw/default.asp"&gt;http://www.justtalk.com.tw/default.asp&lt;/a&gt;&lt;br /&gt;包括聽力、閱讀、文法與情境對話等單元，如果國中kk音標沒學好，這裡有外籍教師發音&lt;br /&gt;的kk音標練習。還有英文小技巧，說明一些經常會混淆的發音或說法。 &lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3366ff;"&gt;&lt;u&gt;&lt;br /&gt;★&lt;/u&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="color: #3366ff;"&gt;閱讀能力養成&lt;/span&gt;&lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;1. Aesop's Fables&lt;br /&gt;&lt;a href="http://www.pacificnet.net/~johnr/aesop/aesopsel.html"&gt;http://www.pacificnet.net/~johnr/aesop/aesopsel.html&lt;/a&gt;&lt;br /&gt;伊索寓言集錦，簡短故事中，告知讀者寓意。&lt;br /&gt;2. Antimoon.com&lt;br /&gt;&lt;a href="http://www.antimoon.com/"&gt;http://www.antimoon.com/&lt;/a&gt;&lt;br /&gt;有別人的經驗教我們如何學英文，網站上有類似討論區的地方，以英文呈現，能回應和發表文章。&lt;br /&gt;3. CDLP News Stories&lt;br /&gt;&lt;a href="http://www.cdlponline.org/news.html"&gt;http://www.cdlponline.org/news.html&lt;/a&gt;&lt;br /&gt;豐富的新聞故事，聞張簡短，並有摘要；測驗題目多樣化，是一個學習的地方。&lt;br /&gt;4. ELC Study Zone&lt;br /&gt;&lt;a href="http://web2.uvcs.uvic.ca/elc/studyzone/index.htm"&gt;http://web2.uvcs.uvic.ca/elc/studyzone/index.htm&lt;/a&gt;&lt;br /&gt;將測驗分等級的網站，有文法、閱讀理解等，有些部分有附測驗題目，讀的都是小故事，簡單易懂&lt;br /&gt;5. English Club English Reading&lt;br /&gt;&lt;a href="http://reading.englishclub.com/"&gt;http://reading.englishclub.com/&lt;/a&gt;&lt;br /&gt;短篇故事閱讀、經典故事閱讀(分成三個等級，由簡到難)、新聞文章閱讀和測驗。不&lt;br /&gt;過不知道的單字需要自己去查。&lt;br /&gt;6. The English Server Fiction Collection:&lt;br /&gt;&lt;a href="http://eserver.org/fiction/"&gt;http://eserver.org/fiction/&lt;/a&gt;&lt;br /&gt;這裡有從世界各地蒐集來的短篇小說，其中有小說、雜誌、評論、戲劇、詩集、獎項(&lt;br /&gt;普立茲諾貝爾文學獎)，從這裡可得知並學習各領域的知識。&lt;br /&gt;7. English Works! Reading Exercises:&lt;br /&gt;&lt;a href="http://depts.gallaudet.edu/englishworks/exercises/main/reading.html"&gt;http://depts.gallaudet.edu/englishworks/exercises/main/reading.html&lt;/a&gt;&lt;br /&gt;這裡是幾個故事閱讀，有填空練習。&lt;br /&gt;8. JonhsESL&lt;br /&gt;&lt;a href="http://www.johnsesl.com/templates/reading/"&gt;http://www.johnsesl.com/templates/reading/&lt;/a&gt;&lt;br /&gt;網頁右方有幾個故事，閱讀全文後讀者可以點選最下方 take the quiz接受測驗。&lt;br /&gt;9. LPSS English Language Website&lt;br /&gt;&lt;a href="http://lp.hkcampus.net/~lp-eng0/"&gt;http://lp.hkcampus.net/~lp-eng0/&lt;/a&gt;&lt;br /&gt;這是一個學習網站，包含各種學習資源：閱讀和寫作以及文法等等，還有"fun"提供遊戲&lt;br /&gt;(Ma及笑話和線上字典。&lt;br /&gt;10. My Own Resources&lt;br /&gt;&lt;a href="http://www.miguelmllop.com/index.php"&gt;http://www.miguelmllop.com/index.php&lt;/a&gt;&lt;br /&gt;網頁左方區塊下會看到intermediate和 advanced，點選後可以看到reading comprehension texts，&lt;br /&gt;進入後就會看到許多短篇閱讀故事，故事會提供問題讓讀者思考。&lt;br /&gt;11. On-line Lessons - Reading Skills&lt;br /&gt;&lt;a href="http://eslus.com/LESSONS/READING/READ.HTM"&gt;http://eslus.com/LESSONS/READING/READ.HTM&lt;/a&gt;&lt;br /&gt;幾則有趣故事的閱讀測驗，有不同題形的題目，可以練習做做看。&lt;br /&gt;12. Phrasal Verbs Demon&lt;br /&gt;&lt;a href="http://takeoff.to/phrasalverbs"&gt;http://takeoff.to/phrasalverbs&lt;/a&gt;&lt;br /&gt;這是一個針對動詞片語學習的網站，在每一篇章(新聞故事或歌曲)都會有詳細的解釋&lt;br /&gt;和例子，還有Practice和Games可以練習並加深其印象。&lt;br /&gt;13. Short Stories Contents&lt;br /&gt;&lt;a href="http://www.missthistlebritches.com/short_stories_contents.htm"&gt;http://www.missthistlebritches.com/short_stories_contents.htm&lt;/a&gt;&lt;br /&gt;提供許多短篇故事全文閱讀的連結，讀者有興趣可以再自行找尋相關資料。&lt;br /&gt;14. Soon Online Magazine&lt;br /&gt;&lt;a href="http://www.soon.org.uk/page24.htm"&gt;http://www.soon.org.uk/page24.htm&lt;/a&gt;&lt;br /&gt;介紹許多方法如何去改進你的英文，其中在閱讀部分(Read It)，有許多短篇故事及詩選。&lt;br /&gt;這一些篇章非常有趣，可以喚起讀者在這一方面的興趣。&lt;br /&gt;15. World Wide School Library&lt;br /&gt;&lt;a href="http://www.worldwideschool.org/library/catalogs/bysubject-top.html"&gt;http://www.worldwideschool.org/library/catalogs/bysubject-top.html&lt;/a&gt;&lt;br /&gt;收集很多作品的線上圖書館，有文學、哲學、宗教等方面的作品，讓讀者線上閱讀全文。&lt;br /&gt;16. 線上英語教室&lt;br /&gt;&lt;a href="http://www.linguist.com.tw/ENGClass/main.htm"&gt;http://www.linguist.com.tw/ENGClass/main.htm&lt;/a&gt;&lt;br /&gt;此網站提供的是閱讀與會話，在閱讀的方面由基本的動詞和形容詞等等開始介紹起，&lt;br /&gt;再將幾個大句型說明清楚。並提供小文章給站友閱讀，最棒的就是每一個比較重要的&lt;br /&gt;單字都會加以註解還有整理相關聯的字彙。&lt;br /&gt;17. 網路英語教室&lt;br /&gt;&lt;a href="http://www.englishfree.com.tw/tw/teaching"&gt;http://www.englishfree.com.tw/tw/teaching&lt;/a&gt;&lt;br /&gt;提供國中到高中的英語課程閱讀，還可以按朗讀課文練習聽力，另有線上辭典、動畫學英語等。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3366ff;"&gt;&lt;br /&gt;&lt;u&gt;★&lt;strong&gt;英文寫作訓練&lt;/strong&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. A Guide for Writing Research Papers &lt;a href="http://webster.commnet.edu/apa/apa_index.htm"&gt;http://webster.commnet.edu/apa/apa_index.htm&lt;/a&gt; &lt;br /&gt;這個網站主要是在教我們如何寫研究性論文，列出同學常見的問題（如：如何引用文章等）並回答。&lt;br /&gt;&lt;br /&gt;2. Guide to Grammar and Writing&lt;br /&gt;&lt;a href="http://www.ccc.commnet.edu/grammar/"&gt;http://www.ccc.commnet.edu/grammar/&lt;/a&gt;&lt;br /&gt;指出寫作常犯的錯誤或是不當的用字，並有文法教學和寫作指導。網站還有其他相關部分，內容實用。&lt;br /&gt;3. Guide to Writing and Research&lt;br /&gt;&lt;a href="http://www.umuc.edu/prog/ugp/ewp_writingcenter/writinggde/welcome.shtml"&gt;http://www.umuc.edu/prog/ugp/ewp_writingcenter/writinggde/welcome.shtml&lt;/a&gt;&lt;br /&gt;一本專門指導寫作的電子書，網頁上分有數個章節教導大學寫作，共分為八章從寫作的程序到指定文章的撰寫都有詳細的指導與說明。有興趣的人還可以自行列印。&lt;br /&gt;4. Hamilton College - Writing Center&lt;br /&gt;&lt;a href="http://www.hamilton.edu/academics/resource/wc/index.html"&gt;http://www.hamilton.edu/academics/resource/wc/index.html&lt;/a&gt;&lt;br /&gt;提供線上講義的網站，講義的內容大多是以條列式的呈現。&lt;br /&gt;5. Online Technical Writing&lt;br /&gt;&lt;a href="http://www.io.com/~hcexres/tcm1603/acchtml/acctoc.html"&gt;http://www.io.com/~hcexres/tcm1603/acchtml/acctoc.html&lt;/a&gt;&lt;br /&gt;介紹科技寫作，這個網頁呈現的是線上教科書，有科技寫作的方法和指引。&lt;br /&gt;6. OWL Online Writing Lab&lt;br /&gt;&lt;a href="http://owl.english.purdue.edu/handouts/index.html"&gt;http://owl.english.purdue.edu/handouts/index.html&lt;/a&gt;&lt;br /&gt;實用的寫作網站，提供講義自行列印，內容有教授文法、標點、拼字及一些常犯錯誤測驗。&lt;br /&gt;7. Paradigm Online Writing Assistant&lt;br /&gt;&lt;a href="http://www.powa.org/"&gt;http://www.powa.org/&lt;/a&gt;&lt;br /&gt;內容詳盡，一步步帶領你邁向寫作之路。主要是要幫助讀者的文章結構更完整，不同目的的文章有不同的結構。&lt;br /&gt;8. Strunk, William. The Elements of Style&lt;br /&gt;&lt;a href="http://www.bartleby.com/141/index.html"&gt;http://www.bartleby.com/141/index.html&lt;/a&gt;&lt;br /&gt;針對寫作需注意的事項加以說明，並有例子輔助，讓讀者學到什麼東西該寫，什麼不該寫。&lt;br /&gt;&lt;br /&gt;9. Student Home&lt;br /&gt;&lt;a href="http://www.rpi.edu/dept/llc/writecenter/web/wc_web/school/index.htm"&gt;http://www.rpi.edu/dept/llc/writecenter/web/wc_web/school/index.htm&lt;/a&gt;&lt;br /&gt;網站中介紹寫作過程和技巧(如文法)，申請工作所必須填寫的履歷表有什麼要注意的地方等，準備一個口頭報告等。&lt;br /&gt;10. The Writing Seminar&lt;br /&gt;&lt;a href="http://webware.princeton.edu/sites/writing/Writing_Center/WCWritingRes.htm"&gt;http://webware.princeton.edu/sites/writing/Writing_Center/WCWritingRes.htm&lt;/a&gt;&lt;br /&gt;同樣地，一步步地指導寫作方向，從開始著手去寫、發展論點、避免常犯錯誤、引言、平行句法等都有詳細說明。&lt;br /&gt;11.University of Richmond Writer's Web&lt;br /&gt;&lt;a href="http://writing.richmond.edu/writing/wweb.html#structure"&gt;http://writing.richmond.edu/writing/wweb.html#structure&lt;/a&gt;&lt;br /&gt;也是一個教大家寫作的網站，並提醒同儕之間互相比較學習需注意的地方。&lt;br /&gt;12. English Club English Writing for ESL Learners&lt;br /&gt;&lt;a href="http://writing.englishclub.com/"&gt;http://writing.englishclub.com/&lt;/a&gt;&lt;br /&gt;一些拼音的規則和標點符號使用的解說，在右方的essay &amp;amp; resume center可以找到很多資源。履歷表還有好幾個不同工作需要的履歷表範本。&lt;br /&gt;13. Writing machine - Academic Writing&lt;br /&gt;&lt;a href="http://ec.hku.hk/writingmachine/"&gt;http://ec.hku.hk/writingmachine/&lt;/a&gt;&lt;br /&gt;介紹學術寫作，比較特別的是他有一些部分提供的範文當你把滑鼠游標移過去時，會出現一句的摘要。&lt;br /&gt;14. The Nut and Bolts of College Writing&lt;br /&gt;&lt;a href="http://www.nutsandboltsguide.com/nb-home.html"&gt;http://www.nutsandboltsguide.com/nb-home.html&lt;/a&gt;&lt;br /&gt;分為幾個主要部分像寫作如何幫助思考，如何把段落變成一篇essay，寫作最常犯的十個錯誤等。&lt;br /&gt;15. 中國茶電子文學雜誌&lt;br /&gt;&lt;a href="http://www.mychinesetea.net/enghome.htm"&gt;http://www.mychinesetea.net/enghome.htm&lt;/a&gt;&lt;br /&gt;一個中文介面的網站，分為寫作前的準備、撰寫段落的要點、寫文章的要點、標點符號的運用四大類，針對自己的弱點按部就班的學習。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3366ff;"&gt;&lt;u&gt;&lt;br /&gt;★&lt;strong&gt;單字片語及厘語&lt;/strong&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Alice英文天地：&lt;br /&gt;&lt;a href="http://www.geocities.com/Athens/Thebes/4302/"&gt;http://www.geocities.com/Athens/Thebes/4302/&lt;/a&gt;&lt;br /&gt;提供日常用語、生活美語、等一些實用的東西，附有中文解說。&lt;br /&gt;2. Building a Better Vocabulary:&lt;br /&gt;&lt;a href="http://cctc2.commnet.edu/grammar/vocabulary.htm"&gt;http://cctc2.commnet.edu/grammar/vocabulary.htm&lt;/a&gt;&lt;br /&gt;教導如何學習字彙的網站，介紹一些字首字根並提供一些好站連結，還有文法及寫作的相關介紹。&lt;br /&gt;3. Business English Vocabulary Online:&lt;br /&gt;&lt;a href="http://uk.cambridge.org/elt/nibe/vocabulary/"&gt;http://uk.cambridge.org/elt/nibe/vocabulary/&lt;/a&gt;&lt;br /&gt;介紹商業英語字彙，有15個units，將單字標示詞性及英英解釋。&lt;br /&gt;4. Common Errors in English:&lt;br /&gt;&lt;a href="http://www.wsu.edu/~brians/errors/"&gt;http://www.wsu.edu/~brians/errors/&lt;/a&gt;&lt;br /&gt;首頁編者做了一個簡單的介紹什麼是錯誤？瀏覽完可連結至他所列出來的英語單字常&lt;br /&gt;犯錯誤和會拼錯的字，很實用的一個網站。&lt;br /&gt;5. Common Expressions:&lt;br /&gt;&lt;a href="http://abcasiapacific.com/englishbites/idiom/!a.htm"&gt;http://abcasiapacific.com/englishbites/idiom/!a.htm&lt;/a&gt;&lt;br /&gt;諺語及片語學習，英英解釋和例句。內容豐富值得一看。&lt;br /&gt;6. English Idioms:&lt;br /&gt;&lt;a href="http://home.t-online.de/home/toni.goeller/idiom_wm/"&gt;http://home.t-online.de/home/toni.goeller/idiom_wm/&lt;/a&gt;&lt;br /&gt;諺語內容很豐富的網站，按照字母順序編排，查片語有解釋和例句，值得一看。&lt;br /&gt;7. English Language Cyber Center:&lt;br /&gt;&lt;a href="http://humanities.byu.edu/elc/student/idioms/idiomsmain.html"&gt;http://humanities.byu.edu/elc/student/idioms/idiomsmain.html&lt;/a&gt;&lt;br /&gt;一些實用諺語，解釋詳盡，提供例句還有可愛的插圖。&lt;br /&gt;8. English Online:&lt;br /&gt;&lt;a href="http://www.englishonline.net/word.html"&gt;http://www.englishonline.net/word.html&lt;/a&gt;&lt;br /&gt;每日提供一個單字和諺語，有解釋和例句。&lt;br /&gt;9. Englishpage.com Vocabulary Exercises:&lt;br /&gt;&lt;a href="http://www.englishpage.com/vocabulary/vocabulary.html"&gt;http://www.englishpage.com/vocabulary/vocabulary.html&lt;/a&gt;&lt;br /&gt;頁面有一個目錄可以選擇，介紹生活美語常用字彙，提供對話填空練習。&lt;br /&gt;10. English Vocabulary:&lt;br /&gt;&lt;a href="http://vocabulary.englishclub.com/"&gt;http://vocabulary.englishclub.com/&lt;/a&gt;&lt;br /&gt;提供一些生活上常用的字彙，如顏色、電腦等等。網頁下方另有其他東西如測驗、遊戲等。&lt;br /&gt;11. English Zone:&lt;br /&gt;&lt;a href="http://www.english-zone.com/idioms/idioms.php"&gt;http://www.english-zone.com/idioms/idioms.php&lt;/a&gt;&lt;br /&gt;12. ESL Idiom Page:&lt;br /&gt;&lt;a href="http://www.eslcafe.com/idioms/id-mngs.html"&gt;http://www.eslcafe.com/idioms/id-mngs.html&lt;/a&gt;&lt;br /&gt;一些諺語，照字母順序排列並標明重要性，越常用的註明星號越多。&lt;br /&gt;13. GoEnglish.com Idiom Dictionary:&lt;br /&gt;&lt;a href="http://www.goenglish.com/Index.asp"&gt;http://www.goenglish.com/Index.asp&lt;/a&gt;&lt;br /&gt;這個網站其實是在推薦一本諺語的書，不過有把一些實用諺語列出來並加上例句。&lt;br /&gt;14. The Idiom Connection :&lt;br /&gt;&lt;a href="http://www.geocities.com/Athens/Aegean/6720/"&gt;http://www.geocities.com/Athens/Aegean/6720/&lt;/a&gt;&lt;br /&gt;從A到Z、顏色、衣服、數字等的實用片語，有例句來使意思更明嘹。&lt;br /&gt;15. Learning English! BBC World Service:&lt;br /&gt;&lt;a href="http://www.bbc.co.uk/worldservice/learningenglish/news/index.shtml"&gt;http://www.bbc.co.uk/worldservice/learningenglish/news/index.shtml&lt;/a&gt;&lt;br /&gt;這裡可以點選每月故事，線上收聽、閱讀、學單字。主題分為新聞、工作、音樂、運&lt;br /&gt;動。還查的到1999年的故事。故事裡單字會加粗，下面有英英解釋。&lt;br /&gt;16. MyWordaDay:&lt;br /&gt;&lt;a href="http://www.mywordaday.com/"&gt;http://www.mywordaday.com/&lt;/a&gt;&lt;br /&gt;每日一字，介紹單字不同的意思，還有單字的來源，最後會有一個實際的例子。&lt;br /&gt;17. Psycho Proverb Zone:&lt;br /&gt;&lt;a href="http://proverb.taiwanonline.org/"&gt;http://proverb.taiwanonline.org/&lt;/a&gt;&lt;br /&gt;照字母順序的諺語，有些還有標明是那位名人說過。&lt;br /&gt;18. Self-study Idiom Quizzes:&lt;br /&gt;&lt;a href="http://a4esl.org/q/h/idioms.html"&gt;http://a4esl.org/q/h/idioms.html&lt;/a&gt;&lt;br /&gt;一個提供很多線上測驗的地方，考考你對諺語的意思了解多少。測驗下方的框框即附上答案。&lt;br /&gt;19. Stanley's Proverbs:&lt;br /&gt;&lt;a href="http://home.kimo.com.tw/7320853/"&gt;http://home.kimo.com.tw/7320853/&lt;/a&gt;&lt;br /&gt;這個網站收集了很多諺語，像一些中國的諺語，在這裡可以找到類似的英文，值得一看。&lt;br /&gt;20. TOEFL Vocabulary Workshop:&lt;br /&gt;&lt;a href="http://www.southampton.liunet.edu/academic/pau/course/webroot.htm#act"&gt;http://www.southampton.liunet.edu/academic/pau/course/webroot.htm#act&lt;/a&gt;&lt;br /&gt;從a-z挑出一些單字介紹字首字根，網頁中可以查詢到其他字首和字根的來源及解釋。&lt;br /&gt;21. VLC Pictorial Idioms Corner:&lt;br /&gt;&lt;a href="http://www.edict.com.hk/vlc/idioms/default.htm"&gt;http://www.edict.com.hk/vlc/idioms/default.htm&lt;/a&gt;&lt;br /&gt;網站內容有圖片諺語、諺語測驗、諺語遊戲，點選idioms directory可以看全部諺語。&lt;br /&gt;22. Vocabulary:&lt;br /&gt;&lt;a href="http://www.vocabulary.com/"&gt;http://www.vocabulary.com/&lt;/a&gt;&lt;br /&gt;網站圖文並茂，有一些別出心裁的主題，在這裡學的到比較難的單字，可惜資源不夠豐富。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3366ff;"&gt;&lt;br /&gt;&lt;u&gt;★&lt;strong&gt;線上字典及參考資源&lt;/strong&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;英漢//英英&lt;br /&gt;1. 翻譯小精靈即時線上翻譯系統&lt;br /&gt;&lt;a href="http://diction.amasoft.com.tw/"&gt;http://diction.amasoft.com.tw/&lt;/a&gt;&lt;br /&gt;由一家翻譯軟體研發公司承隆科技所提供的線上服務，可進行英漢漢英雙向查詢、整&lt;br /&gt;句翻譯、及中文名字音譯的查詢，單字只有英英註解，沒有例句。&lt;br /&gt;2. 精萃詞庫&lt;br /&gt;&lt;a href="http://www.pristine.com.tw/resources/lexicon.php"&gt;http://www.pristine.com.tw/resources/lexicon.php&lt;/a&gt;&lt;br /&gt;以中文、英文或拼音查詢辭彙。本網站由精粹有限公司提供，非會員最多檢索五次，&lt;br /&gt;五次以後，系統會請你註冊，註冊是免費的。&lt;br /&gt;3. 顏氏美語&lt;br /&gt;&lt;a href="http://www.onlinedict.com/"&gt;http://www.onlinedict.com/&lt;/a&gt;&lt;br /&gt;查詢英文單字，提供英文例句、中文解釋跟片語，是個不錯的網站，編者顏元叔教授曾任教於台大。&lt;br /&gt;4. AllWords.com&lt;br /&gt;&lt;a href="http://www.allwords.com/"&gt;http://www.allwords.com/&lt;/a&gt;&lt;br /&gt;查單字可以找以什麼開頭或結尾，有發音，找一個動詞就會連它的名詞宇形容詞一起&lt;br /&gt;出來，很實用喔。也附英英解釋。&lt;br /&gt;5. Cambridge線上字典&lt;br /&gt;&lt;a href="http://dictionary.cambridge.org/"&gt;http://dictionary.cambridge.org/&lt;/a&gt;&lt;br /&gt;只能查英文單字，不過有非常詳盡的英英解釋及英文例句，單字有不同意思時，也有&lt;br /&gt;一樣的功能。強力推薦！&lt;br /&gt;6. Wordsmyth&lt;br /&gt;&lt;a href="http://www.wordsmyth.net/"&gt;http://www.wordsmyth.net/&lt;/a&gt;&lt;br /&gt;查詢單字後，會出現單字發音、簡短的意思及同義字，雖然沒有例句，同義字也幫助&lt;br /&gt;不少，動詞提供過去式、現在式，及進行式。&lt;br /&gt;7. Bartleby&lt;br /&gt;&lt;a href="http://www.bartleby.com/61/"&gt;http://www.bartleby.com/61/&lt;/a&gt;&lt;br /&gt;單字可以聽發音，較多的英英解釋、動詞提供過去式、現在式，及進行式。&lt;br /&gt;8. Merriam Webster&lt;br /&gt;&lt;a href="http://www.m-w.com/"&gt;http://www.m-w.com/&lt;/a&gt;&lt;br /&gt;單字為英英解釋，提供單字發音。&lt;br /&gt;9. Rhyme Zone&lt;br /&gt;&lt;a href="http://www.rhymezone.com/"&gt;http://www.rhymezone.com/&lt;/a&gt;&lt;br /&gt;查單字還可以找到押韻、相似的單字，英英注釋。&lt;br /&gt;10. 線上電子字典&lt;br /&gt;&lt;a href="http://www.ee.tku.edu.tw/~rexchen/cdict/cdict.html"&gt;http://www.ee.tku.edu.tw/~rexchen/cdict/cdict.html&lt;/a&gt;&lt;br /&gt;由淡江大學電機系所提供之資源，附英漢、漢英之功能。查詢單字只有中文意思。&lt;br /&gt;11. Oxford Dictionary&lt;br /&gt;&lt;a href="http://www.askoxford.com/"&gt;http://www.askoxford.com/&lt;/a&gt;&lt;br /&gt;在左上方輸入欲查詢單字，出來的是簡短的英英釋意，無例句。&lt;br /&gt;12. 同義字字典&lt;br /&gt;&lt;a href="http://thesaurus.reference.com/"&gt;http://thesaurus.reference.com/&lt;/a&gt;&lt;br /&gt;key in單字後可選擇查詢單字意思或同義字查詢，是個實用的網站。 &lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3366ff;"&gt;&lt;u&gt;★★&lt;strong&gt;其他&lt;/strong&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;13. High-tech Dictionary&lt;br /&gt;&lt;a href="http://www.computeruser.com/resources/dictionary/index.html"&gt;http://www.computeruser.com/resources/dictionary/index.html&lt;/a&gt;&lt;br /&gt;查詢電腦專業用字的網站，很實用。&lt;br /&gt;14. FOLDOC&lt;br /&gt;&lt;a href="http://foldoc.doc.ic.ac.uk/foldoc/index.html"&gt;http://foldoc.doc.ic.ac.uk/foldoc/index.html&lt;/a&gt;&lt;br /&gt;可查詢電腦用字，有簡短的例句。&lt;br /&gt;15. Webopedia&lt;br /&gt;&lt;a href="http://www.pcwebopaedia.com/"&gt;http://www.pcwebopaedia.com/&lt;/a&gt;&lt;br /&gt;找電腦用字，有詳細的英英解釋。&lt;br /&gt;16. Picture Dictionary&lt;br /&gt;&lt;a href="http://www.pdictionary.com/"&gt;http://www.pdictionary.com/&lt;/a&gt;&lt;br /&gt;看圖片學習英文單字，另有其他四國語言。&lt;br /&gt;17. Edupass&lt;br /&gt;&lt;a href="http://www.edupass.org/english/dictionary.phtml"&gt;http://www.edupass.org/english/dictionary.phtml&lt;/a&gt;&lt;br /&gt;美國和英國英文單字之間的不同還有文化差異。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3366ff;"&gt;&lt;br /&gt;&lt;u&gt;★&lt;strong&gt;英文報紙與雜誌&lt;/strong&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Newspaper&amp;amp;Maganizes 英文報紙與雜誌&lt;br /&gt;1.  網路英語教室&lt;br /&gt;&lt;a href="http://www.englishfree.com.cn/tw/"&gt;http://www.englishfree.com.cn/tw/&lt;/a&gt;&lt;br /&gt;用簡單的動畫學英文非常有趣學英文沒壓力。&lt;br /&gt;2.  線上英語教室&lt;br /&gt;&lt;a href="http://www.linguist.com.tw/ENGClass/default.htm"&gt;http://www.linguist.com.tw/ENGClass/default.htm&lt;/a&gt;&lt;br /&gt;對話、句庫、閱讀等課程分門別類很有系統的英文學習方法。&lt;br /&gt;3.  學習加油站&lt;br /&gt;&lt;a href="http://content.edu.tw/senior/english/tp_tt/main.htm"&gt;http://content.edu.tw/senior/english/tp_tt/main.htm&lt;/a&gt;&lt;br /&gt;透過趣味英文、字迷設計等有趣的方法，在簡單的方法中無形學英文。&lt;br /&gt;4.  EZ Talk&lt;br /&gt;&lt;a href="http://www.eztalk.to/"&gt;http://www.eztalk.to/&lt;/a&gt;&lt;br /&gt;結合當下時事和英文學習是個很有實用的網站。&lt;br /&gt;5.  大家說英語&lt;br /&gt;&lt;a href="http://www.letstalk.com.tw/"&gt;http://www.letstalk.com.tw/&lt;/a&gt;&lt;br /&gt;當期的雜誌內容都可以看到，文章左邊有難字的說明，文章難易度適合英文程度中等&lt;br /&gt;的同學，另外還有當日的廣播及電視內容可以線上收聽或觀賞。&lt;br /&gt;6.  空中英語教室&lt;br /&gt;&lt;a href="http://www.studioclassroom.com.tw/"&gt;http://www.studioclassroom.com.tw/&lt;/a&gt;&lt;br /&gt;在網路上可以線上收聽廣播。首頁會有當月主題可以點選，有一兩個主題會提供文章&lt;br /&gt;內容，其他就只有討論題目，生字的顏色會不同，滑鼠移過去就有解釋，還有例句。&lt;br /&gt;7.  長春藤解析英語&lt;br /&gt;&lt;a href="http://www.ivy.com.tw/"&gt;http://www.ivy.com.tw/&lt;/a&gt;&lt;br /&gt;以系統化的方式提供同學學習著重在文章結構分析一進去會看到每日一句，點選下方的more…&lt;br /&gt;會看到閱讀測驗，會看到一篇文章，有練習題。如果加入會員後就可以有線上聽廣播服務。&lt;br /&gt;8.  雙語學生郵報&lt;br /&gt;&lt;a href="http://www.studentpost.com.tw/"&gt;http://www.studentpost.com.tw/&lt;/a&gt;&lt;br /&gt;網站上有很多資源如每週評論、新聞話題、電影看板等。線上文章雙語閱讀(但只限於&lt;br /&gt;開頭部份)及收聽，在右方的資料庫可以找到過去曾出版過的文章。&lt;br /&gt;在這加入免費註冊行列就可以閱讀裡面的內容了喔&lt;br /&gt;9.  讀者文摘&lt;br /&gt;&lt;a href="http://www.readersdigest.com/"&gt;http://www.readersdigest.com/&lt;/a&gt;&lt;br /&gt;各種不同類型如理財、家庭、健康等方面的文章都可在這裡看到左邊的Tools and Quizzes&lt;br /&gt;有許多東西等著你去發掘。&lt;br /&gt;10.  CHINA POST&lt;br /&gt;&lt;a href="http://www.chinapost.com.tw/"&gt;http://www.chinapost.com.tw/&lt;/a&gt;&lt;br /&gt;左邊有分類可以針對個別興趣去找娛樂、商業、健康等新聞不用買英文報紙就可以看&lt;br /&gt;到免費的台灣及全球英文新聞。&lt;br /&gt;11.  TAIPEI TIMES&lt;br /&gt;&lt;a href="http://www.taipeitimes.com/"&gt;http://www.taipeitimes.com/&lt;/a&gt;&lt;br /&gt;不用買英文報紙就可以看到免費的台灣及全球的英文新聞。&lt;br /&gt;12.  TIME&lt;br /&gt;&lt;a href="http://www.time.com/time/"&gt;http://www.time.com/time/&lt;/a&gt;&lt;br /&gt;提供雜誌最新一期的消息，有商業、科技、娛樂、科學、運動、健康等。在這裡可以&lt;br /&gt;得知很多訊息，文章很生活化。&lt;br /&gt;13.  Discovery&lt;br /&gt;&lt;a href="http://www.discovery.com/"&gt;http://www.discovery.com/&lt;/a&gt;&lt;br /&gt;看Discovery頻道嗎？那你一定也會愛上這個網站!&lt;br /&gt;14.  國家地理雜誌&lt;br /&gt;&lt;a href="http://www.nationgeoagraphic.com/"&gt;http://www.nationgeoagraphic.com/&lt;/a&gt;&lt;br /&gt;介紹國家地理雜誌和國家地理頻道的內容，即使沒有買雜誌或是看電視都可以知道這&lt;br /&gt;一期所介紹的內容是什麼。可依自己的需求點取不同的連結做更進一步的了解。它也&lt;br /&gt;提供了照片讓我們除了文字之外還可以透過圖片來更加了解。&lt;br /&gt;15.  財政經總和周刊&lt;br /&gt;&lt;a href="http://www.etaiwannews.com/"&gt;http://www.etaiwannews.com/&lt;/a&gt;&lt;br /&gt;以財政經新聞為主，還可在Study Zone中學習最口語的英文喔。&lt;br /&gt;16.  光華雜誌 Sino Magazine&lt;br /&gt;&lt;a href="http://www.sinorama.com.tw/ch/"&gt;http://www.sinorama.com.tw/ch/&lt;/a&gt;&lt;br /&gt;這個網站有四種語言，提供很多資料像法政議題、大眾傳播、華人世界等文章，篇幅&lt;br /&gt;都不會太長，有幾個較難獲不常見的生字需要對照中文。&lt;br /&gt;17.  華盛頓郵報Washingtonpost&lt;br /&gt;&lt;a href="http://www.washingtonpost.com/"&gt;http://www.washingtonpost.com/&lt;/a&gt;&lt;br /&gt;這個網站依不同的性質將新聞分門別類，可以依照自己的需要選取。除了閱讀新聞外&lt;br /&gt;我們還可以聽線上的新聞，並提供相關新聞的照片作為參考。&lt;br /&gt;18.  The New York Times&lt;br /&gt;&lt;a href="http://www.nytimes.com/"&gt;http://www.nytimes.com/&lt;/a&gt;&lt;br /&gt;各類的新聞如旅遊、藝術、生活、等和即時的股市行情。可以瀏覽當期雜誌內容，也&lt;br /&gt;有讀者或是網友們的意見交流、社論。線上收聽新聞的話要先註冊。在這裡可以搜尋&lt;br /&gt;到從1996~2003發生過的新聞。&lt;br /&gt;19.  People&lt;br /&gt;&lt;a href="http://people.aol.com/people/index.html"&gt;http://people.aol.com/people/index.html&lt;/a&gt;&lt;br /&gt;每日的藝文活動、明星動態，都可以在這裡看到。&lt;br /&gt;20.  Search Here&lt;br /&gt;&lt;a href="http://www.searchhere.com/"&gt;http://www.searchhere.com/&lt;/a&gt;&lt;br /&gt;各類的文章都可以在這個網站上找到，甚至可以看到書的部分內容，提供多元化的資訊。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3366ff;"&gt;&lt;br /&gt;&lt;u&gt;★&lt;strong&gt;語言測驗&lt;/strong&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;TESTS&lt;br /&gt;1.  美國英語能力分級檢定協會定網站&lt;br /&gt;&lt;a href="http://aelca.24cc.com/"&gt;http://aelca.24cc.com/&lt;/a&gt;&lt;br /&gt;提供各種兒童暨青少年英語檢定的方法及方式等訊息可以測驗一下自己的實力。&lt;br /&gt;2.  全民英語能力分級檢定測驗&lt;br /&gt;&lt;a href="http://www.gept.com.tw/"&gt;http://www.gept.com.tw/&lt;/a&gt;&lt;br /&gt;分為五種等級作訓練可以階段式挑戰自己。&lt;br /&gt;3.  語言訓練測驗中心&lt;br /&gt;&lt;a href="http://www.lttc.ntu.edu.tw/"&gt;http://www.lttc.ntu.edu.tw/&lt;/a&gt;&lt;br /&gt;各種考試(如托福等)的相關詳細資訊可以在此找到。&lt;br /&gt;4.  大同高中英語學習網&lt;br /&gt;&lt;a href="http://203.72.57.1/amcenglishtest/dock/"&gt;http://203.72.57.1/amcenglishtest/dock/&lt;/a&gt;&lt;br /&gt;針對全民英檢的各種測驗但要先加入會員才能使用。&lt;br /&gt;5.  Aardvark's English Forum:&lt;br /&gt;&lt;a href="http://www.englishforum.com/00/interactive/"&gt;http://www.englishforum.com/00/interactive/&lt;/a&gt;&lt;br /&gt;有不同程度的測驗測驗玩後馬上會給分數以及詳解，網站資源提供給ESL/EFL的師生參&lt;br /&gt;考，測驗部份分為文法、字彙。&lt;br /&gt;6.  Activities for ESL Students:&lt;br /&gt;&lt;a href="http://a4esl.org/a/v.html"&gt;http://a4esl.org/a/v.html&lt;/a&gt;&lt;br /&gt;這是一個有很多字彙測驗的網站，分為易、中、難三種程度。可以好好地訓練自己。&lt;br /&gt;7.  Comenius English Language Center: Idioms:&lt;br /&gt;&lt;a href="http://www.comenius.com/index.tpl"&gt;http://www.comenius.com/index.tpl&lt;/a&gt;&lt;br /&gt;依照字母順序排列的一些諺語，有釋意、簡短對話；還有幾則寓言故事學習字彙，線&lt;br /&gt;上可做練習題例如是非題和配合題。&lt;br /&gt;8.  English as Second Language:&lt;br /&gt;&lt;a href="http://esl.about.com/library/quiz/blvocabularyquiz.htm"&gt;http://esl.about.com/library/quiz/blvocabularyquiz.htm&lt;/a&gt;&lt;br /&gt;內有托福考試的試題、單字及其他測驗的考題喔!&lt;br /&gt;9.  English Exercises Online:&lt;br /&gt;&lt;a href="http://wwwedu.ge.ch/cptic/prospective/projets/anglais/exercises/welcome.html"&gt;http://wwwedu.ge.ch/cptic/prospective/projets/anglais/exercises/welcome.html&lt;/a&gt;&lt;br /&gt;這裡所有的測驗分為五個等級，每個等級有各式各樣不同的題目，有心的同學可以挑戰看看。&lt;br /&gt;10.  ESL BLUES:&lt;br /&gt;&lt;a href="http://www.collegeem.qc.ca/cemdept/anglais/trouindx.htm#adj.htm"&gt;http://www.collegeem.qc.ca/cemdept/anglais/trouindx.htm#adj.htm&lt;/a&gt;&lt;br /&gt;依照難易程度分為三級，有動畫的文法教學、文法測驗等很實用。&lt;br /&gt;11.  ESL Independent Study Lab:&lt;br /&gt;&lt;a href="http://www.lclark.edu/~krauss/toppicks/vocabulary.html"&gt;http://www.lclark.edu/~krauss/toppicks/vocabulary.html&lt;/a&gt;&lt;br /&gt;一個很棒的連結網站，可以連到不同網站提供的各式各樣字彙練習或測驗，還有諺語。&lt;br /&gt;建議可以仔細地瀏覽過各個網站。&lt;br /&gt;12.  ESL Vocabulary Quizzes:&lt;br /&gt;&lt;a href="http://quizzes.englishclub.com/vocabulary.htm"&gt;http://quizzes.englishclub.com/vocabulary.htm&lt;/a&gt;&lt;br /&gt;字彙的測驗，分成三級，由簡單到困難，內容有關工作、錢、數字、顏色等。&lt;br /&gt;有些測驗題會附有圖片。&lt;br /&gt;13.  Interactive ESL Practice:&lt;br /&gt;&lt;a href="http://www.geocities.com/pccprep/qz.htm#links"&gt;http://www.geocities.com/pccprep/qz.htm#links&lt;/a&gt;&lt;br /&gt;簡易的字彙及文法測驗，字彙有圖片幫助記憶，文法提供練習題目。&lt;br /&gt;14.  Interesting Things for ESL Students:&lt;br /&gt;&lt;a href="http://www.manythings.org/"&gt;http://www.manythings.org/&lt;/a&gt;&lt;br /&gt;有單字、文法和閱讀測驗的網站，每個項目點選進去就可以看到練習題目。&lt;br /&gt;15.  Isabel's ESL Site:&lt;br /&gt;&lt;a href="http://www.isabelperez.com/grammar.htm#pron[/url"&gt;http://www.isabelperez.com/grammar.htm#pron[/url&lt;/a&gt;]&lt;br /&gt;提供豐富的字彙、文法及文化的練習題，每一個小測驗前面有標示簡單或非常簡單，&lt;br /&gt;可依照自己的程度點選。&lt;br /&gt;16.  Karin's ESL Party land:&lt;br /&gt;&lt;a href="http://www.eslpartyland.com/quiz%20center/quiz.htm"&gt;http://www.eslpartyland.com/quiz%20center/quiz.htm&lt;/a&gt;&lt;br /&gt;在Quiz Center裡提供很多方面的測驗，有字彙、文法、俚語等，做錯了還會講解喔。&lt;br /&gt;17.  TCM English Learning：&lt;br /&gt;&lt;a href="http://english.itcmedu.com/drills/exercises_4.html"&gt;http://english.itcmedu.com/drills/exercises_4.html&lt;/a&gt;&lt;br /&gt;可在這看到續多資源右下角的測驗區是免錢的。&lt;br /&gt;18.  Self-study Grammar Quizzes about places&lt;br /&gt;&lt;a href="http://a4esl.org/q/h/grammarp.html"&gt;http://a4esl.org/q/h/grammarp.html&lt;/a&gt;&lt;br /&gt;題目內容大多是關於各地的風俗以這些題目出文法問題供練習&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-7563161123164951605?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/7563161123164951605/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/10/blog-post_17.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/7563161123164951605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/7563161123164951605'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/10/blog-post_17.html' title='【學習】實用英文網站'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-8804679562586848669</id><published>2007-10-16T13:51:00.003+08:00</published><updated>2011-09-15T15:58:41.570+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>RHCE环境创建、简单架设dhcpd、tftp，客户端实现网络启动</title><content type='html'>&lt;div class="textbox-title"&gt;&lt;h4&gt;&lt;div class="textbox-label"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/h4&gt;&lt;/div&gt;&lt;div class="textbox-content"&gt;RHCE环境创建、简单架设dhcpd、tftp，客户端实现网络启动&lt;br /&gt;1:架设dhcpd服务&lt;br /&gt;安装略&lt;br /&gt;查看/etc/dhcpd.conf配置文件内容&lt;br /&gt;&lt;div class="quote"&gt;&lt;div class="quote-title"&gt;引用&lt;/div&gt;&lt;div class="quote-content"&gt;&lt;br /&gt;ddns-update-style interim;&lt;br /&gt;ignore client-updates;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;br /&gt;allow booting;&lt;br /&gt;filename "pxelinux.0";&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;# --- default gateway&lt;br /&gt;option routers                  192.168.0.254;&lt;br /&gt;option subnet-mask              255.255.255.0;&lt;br /&gt;&lt;br /&gt;option nis-domain               "domain.org";&lt;br /&gt;option domain-name              "domain.org";&lt;br /&gt;option domain-name-servers      192.168.1.1;&lt;br /&gt;&lt;br /&gt;option time-offset              -18000; # Eastern Standard Time&lt;br /&gt;#       option ntp-servers              192.168.1.1;&lt;br /&gt;#       option netbios-name-servers     192.168.1.1;&lt;br /&gt;# --- Selects point-to-point node (default is hybrid). Don't change this unless&lt;br /&gt;# -- you understand Netbios very well&lt;br /&gt;#       option netbios-node-type 2;&lt;br /&gt;&lt;br /&gt;#       range dynamic-bootp 192.168.0.128 192.168.0.254;&lt;br /&gt;default-lease-time 21600;&lt;br /&gt;max-lease-time 43200;&lt;br /&gt;&lt;br /&gt;# we want the nameserver to appear at a fixed address&lt;br /&gt;host ns {&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;br /&gt;next-server 192.168.0.254;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;hardware ethernet 12:34:56:78:AB:CD;&lt;br /&gt;fixed-address 192.168.0.100;&lt;br /&gt;}&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;2:tftp服务配置&lt;br /&gt;安装略&lt;br /&gt;修改配置文件&lt;br /&gt;&lt;div class="quote"&gt;&lt;div class="quote-title"&gt;引用&lt;/div&gt;&lt;div class="quote-content"&gt;&lt;br /&gt;[root@rhce ~]# cat /etc/xinetd.d/tftp&lt;br /&gt;# default: off&lt;br /&gt;# description: The tftp server serves files using the trivial file transfer &lt;br /&gt;#       protocol.  The tftp protocol is often used to boot diskless &lt;br /&gt;#       workstations, download configuration files to network-aware printers, &lt;br /&gt;#       and to start the installation process for some operating systems.&lt;br /&gt;service tftp&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: red;"&gt;       disable            = no&lt;/span&gt;&lt;br /&gt;socket_type             = dgram&lt;br /&gt;protocol                = udp&lt;br /&gt;wait                    = yes&lt;br /&gt;user                    = root&lt;br /&gt;server                  = /usr/sbin/in.tftpd&lt;br /&gt;server_args             = -s /tftpboot&lt;br /&gt;per_source              = 11&lt;br /&gt;cps                     = 100 2&lt;br /&gt;flags                   = IPv4&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;配置目录/tftpboot目录下的文件解析，pxelinux.0来源自syslinux,在tftpboot下面的默认位置目录文件&lt;br /&gt;pxelinux.cfg/default,文件来自光盘CD中的isolinux目录。default来自isolinux.cfg。&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;[root@rhce tftpboot]# locate pxelinux.0&lt;br /&gt;/usr/lib/syslinux/pxelinux.0&lt;br /&gt;[root@rhce tftpboot]# cp /usr/lib/syslinux/pxelinux.0  /tftpboot/&lt;br /&gt;[root@rhce tftpboot]# cp  /misc/cd/isolinux/* /tftpboot/&lt;br /&gt;[root@rhce tftpboot]# mkdir pxelinux.cfg&lt;br /&gt;[root@rhce tftpboot]# cp isolinux.cfg pxelinux.cfg/default&lt;br /&gt;[root@rhce ~]# tree -C /tftpboot/&lt;br /&gt;/tftpboot/&lt;br /&gt;|-- TRANS.TBL&lt;br /&gt;|-- boot.cat&lt;br /&gt;|-- boot.msg&lt;br /&gt;|-- general.msg&lt;br /&gt;|-- initrd.img&lt;br /&gt;|-- isolinux.bin&lt;br /&gt;|-- isolinux.cfg&lt;br /&gt;|-- memtest&lt;br /&gt;|-- options.msg&lt;br /&gt;|-- param.msg&lt;br /&gt;|-- pxelinux.0&lt;br /&gt;|-- pxelinux.cfg&lt;br /&gt;|   `-- default&lt;br /&gt;|-- rescue.msg&lt;br /&gt;|-- splash.lss&lt;br /&gt;`-- vmlinuz&lt;br /&gt;&lt;br /&gt;1 directory, 15 files&lt;br /&gt;[root@rhce tftpboot]# cat pxelinux.cfg/default&lt;br /&gt;default linux&lt;br /&gt;prompt 1&lt;br /&gt;timeout 600&lt;br /&gt;display boot.msg&lt;br /&gt;F1 boot.msg&lt;br /&gt;F2 options.msg&lt;br /&gt;F3 general.msg&lt;br /&gt;F4 param.msg&lt;br /&gt;F5 rescue.msg&lt;br /&gt;label linux&lt;br /&gt;kernel vmlinuz&lt;br /&gt;append initrd=initrd.img&lt;br /&gt;label text&lt;br /&gt;kernel vmlinuz&lt;br /&gt;append initrd=initrd.img text&lt;br /&gt;label ks&lt;br /&gt;kernel vmlinuz&lt;br /&gt;append ks initrd=initrd.img&lt;br /&gt;label local&lt;br /&gt;localboot 1&lt;br /&gt;label memtest86&lt;br /&gt;kernel memtest&lt;br /&gt;append -&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;三：iptables的部分设置&lt;br /&gt;从netstat获取xinetd的端口，或者/etc/services里面获取的&lt;br /&gt;开放xinetd的端口69访问&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;[root@rhce ~]# netstat -nap | grep xinetd&lt;br /&gt;udp        0      0 0.0.0.0:69                  0.0.0.0:*                               1682/xinetd&lt;br /&gt;unix  2      [ ]         DGRAM                    4524   1682/xinetd&lt;br /&gt;[root@rhce ~]# cat /etc/services | grep tftp&lt;br /&gt;tftp            69/tcp&lt;br /&gt;tftp            69/udp&lt;br /&gt;tftp-mcast      1758/tcp&lt;br /&gt;tftp-mcast      1758/udp&lt;br /&gt;mtftp           1759/udp&lt;br /&gt;subntbcst_tftp  247/tcp                         # SUBNTBCST_TFTP&lt;br /&gt;subntbcst_tftp  247/udp                         # SUBNTBCST_TFTP&lt;br /&gt;etftp           1818/tcp                        # Enhanced Trivial File Transfer Protocol&lt;br /&gt;etftp           1818/udp                        # Enhanced Trivial File Transfer Protocol&lt;br /&gt;tftps           3713/tcp                        # TFTP over TLS&lt;br /&gt;tftps           3713/udp                        # TFTP over TLS&lt;br /&gt;[root@rhce ~]# cat /etc/sysconfig/iptables&lt;br /&gt;# Firewall configuration written by system-config-securitylevel&lt;br /&gt;# Manual customization of this file is not recommended.&lt;br /&gt;*filter&lt;br /&gt;:INPUT ACCEPT [0:0]&lt;br /&gt;:FORWARD ACCEPT [0:0]&lt;br /&gt;:OUTPUT ACCEPT [0:0]&lt;br /&gt;:RH-Firewall-1-INPUT - [0:0]&lt;br /&gt;-A INPUT -j RH-Firewall-1-INPUT&lt;br /&gt;-A FORWARD -j RH-Firewall-1-INPUT&lt;br /&gt;-A RH-Firewall-1-INPUT -i lo -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -p 50 -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -p 51 -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 69 -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT&lt;br /&gt;-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited&lt;br /&gt;COMMIT&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;四:重启服务、添加服务,开机自启动。&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;[root@rhce ~]# /etc/init.d/dhcpd restart&lt;br /&gt;关闭 dhcpd：                                               [确定]&lt;br /&gt;启动 dhcpd：                                               [确定]&lt;br /&gt;[root@rhce ~]# /etc/init.d/xinetd restart&lt;br /&gt;停止 xinetd：                                              [确定]&lt;br /&gt;启动 xinetd：                                              [确定]&lt;br /&gt;[root@rhce ~]# /etc/init.d/iptables restart&lt;br /&gt;清除防火墙规则：                                           [确定]&lt;br /&gt;把 chains 设置为 ACCEPT 策略：filter                       [确定]&lt;br /&gt;正在卸载 Iiptables 模块：                                  [确定]&lt;br /&gt;应用 iptables 防火墙规则：                                 [确定]&lt;br /&gt;载入额外 iptables 模块：ip_conntrack_netbios_ns ip_conntrac[确定]&lt;br /&gt;[root@rhce ~]# chkconfig dhcpd on&lt;br /&gt;[root@rhce ~]# chkconfig xinetd on&lt;br /&gt;[root@rhce ~]# chkconfig iptables on&lt;br /&gt;[root@rhce ~]# chkconfig tftp on&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-8804679562586848669?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/8804679562586848669/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/10/rhcedhcpdtftp.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/8804679562586848669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/8804679562586848669'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/10/rhcedhcpdtftp.html' title='RHCE环境创建、简单架设dhcpd、tftp，客户端实现网络启动'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-4232552189960107867</id><published>2007-10-16T13:50:00.004+08:00</published><updated>2011-02-21T01:37:52.480+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>U盘grub引导isolinux的方法</title><content type='html'>U盘安装grub的方法，可以参考我的另外一篇日志:&lt;br /&gt;http://www.52zhe.cn/read.php?22&lt;br /&gt;当时情况是这样的，本来应用U盘的grub可以引导到isolinux里面的内核和镜像，进行系统的安装，但是当我想引导到，像是CD1启动时的菜单，包括恢复模式的时候，我意识到，不可以简单的引导内核和镜像。最近研究了一下这个引导安装的问题。才知道到还有syslinux和isolinux的这个东西。这种都是loop的结构。不能分区，这就让我犯难了。怎么办?最后想到解决方法。&lt;br /&gt;&lt;br /&gt;做法说明：&lt;br /&gt;为这个diskboot.img在U盘内单独划分一个大小合适的分区，然后用dd命令将这个镜像完整写入那个分区。再用grub的的加载引导其他的启动器方式加载这个分区。&lt;br /&gt;&lt;br /&gt;以下以RHEL5为例，首先查看安装好后的U盘情况，主要是grub引导的写法，其实与引导win是一样的。分区步骤略&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[root@kook ~]# mount rhel5.iso /mnt -o loop&lt;br /&gt;[root@kook ~]# tree /mnt/images&lt;br /&gt;/mnt/images&lt;br /&gt;|-- README&lt;br /&gt;|-- TRANS.TBL&lt;br /&gt;|-- boot.iso          可刻录成光盘，进行光盘引导。&lt;br /&gt;|-- diskboot.img      本次应用这个,可进行网络安装，亦可网络调用，进入恢复模式。但是无法单独通过此盘进入恢复模式，需调用minstg2.img，尚未解决。&lt;br /&gt;|-- minstg2.img       见上。&lt;br /&gt;|-- pxeboot&lt;br /&gt;|   |-- README&lt;br /&gt;|   |-- TRANS.TBL&lt;br /&gt;|   |-- initrd.img&lt;br /&gt;|   `-- vmlinuz&lt;br /&gt;|-- stage2.img        不知道什么情况下被调用。注意下面用file命令查看这四个文件的格式、结构。&lt;br /&gt;`-- xen&lt;br /&gt;|-- TRANS.TBL&lt;br /&gt;|-- initrd.img&lt;br /&gt;`-- vmlinuz&lt;br /&gt;&lt;br /&gt;2 directories, 13 files&lt;br /&gt;[root@kook ~]# cd /mnt/images&lt;br /&gt;[root@kook images]# file boot.iso  diskboot.img  minstg2.img  stage2.img&lt;br /&gt;boot.iso:     ISO 9660 CD-ROM filesystem data 'Red Hat Enterprise Linux Server' (bootable)&lt;br /&gt;diskboot.img: x86 boot sector, code offset 0x58, OEM-ID " mkdosfs", sectors/cluster 4, root entries 512, sectors 24576 (volumes &amp;lt;=32 MB) , Media descriptor 0xf8, sectors/FAT 24, heads 64, serial number 0x45cb9539, label: "           ", FAT (16 bit)&lt;br /&gt;minstg2.img:  data&lt;br /&gt;stage2.img:   data&lt;br /&gt;[root@kook images]# dd if=diskboot.img of=/dev/sda3&lt;br /&gt;[root@kook images]# fdisk -l /dev/sda&lt;br /&gt;Disk /dev/sda: 1010 MB, 1010826752 bytes&lt;br /&gt;32 heads, 61 sectors/track, 1011 cylinders&lt;br /&gt;Units = cylinders of 1952 * 512 = 999424 bytes&lt;br /&gt;&lt;br /&gt;Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;/dev/sda1               1         951      928145+   6  FAT16          win下使用 900M&lt;br /&gt;/dev/sda2             952         981       29280   83  Linux          grub的boot分区  80M&lt;br /&gt;/dev/sda3   *         982        1011       29280   83  Linux          diskboot.img的分区  20M&lt;br /&gt;[root@kook grub]# cat grub.conf&lt;br /&gt;color light-gray/blue&lt;br /&gt;timeout         20&lt;br /&gt;default         0&lt;br /&gt;&lt;br /&gt;title           Windows 95/98/NT/2000&lt;br /&gt;map             (hd0) (hd1)&lt;br /&gt;map             (hd1) (hd0)&lt;br /&gt;rootnoverify    (hd1,0)&lt;br /&gt;makeactive&lt;br /&gt;chainloader     +1&lt;br /&gt;&lt;br /&gt;title           RHEL 5 ISOLINUX BOOT&lt;br /&gt;rootnoverify    (hd0,2)&lt;br /&gt;makeactive&lt;br /&gt;chainloader     +1&lt;br /&gt;&lt;br /&gt;title           RHEL 5  Net Install&lt;br /&gt;root            (hd0,1)&lt;br /&gt;kernel          /rhel5/vmlinuz root=/dev/hda2 ro single&lt;br /&gt;initrd          /rhel5/initrd.img&lt;br /&gt;boot&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-4232552189960107867?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/4232552189960107867/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/10/ugrubisolinux.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/4232552189960107867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/4232552189960107867'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/10/ugrubisolinux.html' title='U盘grub引导isolinux的方法'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-2129463015997578222</id><published>2007-10-16T13:50:00.001+08:00</published><updated>2007-10-16T13:50:25.202+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>grub安装问题，主要解决还原卡的问题。文件系统ID号码表、编码表，从cfdisk中提取的。</title><content type='html'>&lt;div class="content" id="content"&gt;&lt;div id="innerContent"&gt;&lt;div class="announce" style="DISPLAY: none"&gt;&lt;div class="announce-content"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="article-top" style="DISPLAY: none"&gt;&lt;div class="pages"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="article-top"&gt;&lt;div class="prev-article"&gt;&lt;a title="上一篇 grub安装问题，主要解决还原卡的问题。" href="http://www.52zhe.cn/read.php?21"&gt;&lt;img src="http://www.52zhe.cn/template/jinnstylepro/images/toolbar_previous.gif" border="0" /&gt;&lt;font color="#000000"&gt;grub安装问题，主要解决还原卡的问题。&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="next-article"&gt;&lt;a title="下一篇 文件系统ID号码表、编码表，从cfdisk中提取的。" href="http://www.52zhe.cn/read.php?23"&gt;&lt;font color="#000000"&gt;&lt;img src="http://www.52zhe.cn/template/jinnstylepro/images/toolbar_next.gif" border="0" /&gt;文件系统ID号码表、编码表，从cfdisk中提取的。&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="textbox"&gt;&lt;div class="textbox-title"&gt;&lt;h4&gt;&lt;a href="http://www.52zhe.cn/read.php?22"&gt;&lt;font color="#000000"&gt;做个grub的U盘的启动盘，就是安装个grub，在U盘上。&lt;/font&gt;&lt;/a&gt; &lt;/h4&gt;&lt;div class="textbox-label"&gt;&lt;font color="#999999" size="2"&gt;[&lt;span id="starid22"&gt;&lt;img title="未加星标" src="http://www.52zhe.cn/template/jinnstylepro/images/others/unstarred.gif" border="0" /&gt;&lt;/span&gt;| &lt;img title="不指定" alt="不指定" src="http://www.52zhe.cn/images/weather/blank.gif" /&gt; 2007/05/24 13:24] &lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="textbox-content" id="zoomtext"&gt;&lt;div class="textbox-fontsize"&gt;&lt;font color="#999999" size="2"&gt;&lt;img title="字体大小" src="http://www.52zhe.cn/template/jinnstylepro/images/toolbar_fontsize.gif" border="0" /&gt;&lt;/font&gt; &lt;a href="javascript:%20doZoom(16);"&gt;&lt;font color="#4a9ae9"&gt;大&lt;/font&gt;&lt;/a&gt; | &lt;a href="javascript:%20doZoom(14);"&gt;&lt;font color="#4a9ae9"&gt;中&lt;/font&gt;&lt;/a&gt; | &lt;a href="javascript:%20doZoom(12);"&gt;&lt;font color="#4a9ae9"&gt;小&lt;/font&gt;&lt;/a&gt; &lt;a href="http://www.52zhe.cn/feed.php?go=entry_22"&gt;&lt;img title="订阅本文" src="http://www.52zhe.cn/template/jinnstylepro/images/toolbar_rss.gif" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.52zhe.cn/read.php?save_22"&gt;&lt;img title="保存本文为文本文档" src="http://www.52zhe.cn/template/jinnstylepro/images/toolbar_save.gif" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;span style="COLOR: #ff0000"&gt;注意：&lt;br /&gt;1：成功的关键是MBR的内容。总是提示我失败。用dd if=/dev/sda of=/tmp/mbr.bak bs=446 count=1提取 出来检查一下内容。&lt;br /&gt;2：目前我看，必须要重写MBR里面的内容。而且grub必须安装在MBR里面才有效。单独安装在一个分区里面总是不成功。这个不知道是否和USB是否支持启动有关系，未确定。&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;有时候MBR会有问题。用这个命令清零吧。&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;dd if=/dev/zero of=/dev/sda bs=446 count=1&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;发现这个问题关键在于安装时，是否为你启动时的同一的设备盘符。&lt;br /&gt;所以这个问题livecd处理的很牛啊。&lt;br /&gt;&lt;br /&gt;以上列为思考题吧。晕死，最近在启动这里浪费了很多脑细胞。&lt;br /&gt;&lt;br /&gt;先去cfdisk讲U盘，创建个boot分区吧。(cfdisk很好用，推荐用来分区。)&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;0：mkfs.ext2 /dev/sda1&lt;br /&gt;1：mount /dev/sda1 /tmp/boot&lt;br /&gt;2：grub-install --root-directory=/tmp/boot --no-floppy  /dev/sda（*注意*）&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;未确定是否需要修改device.map文件。(已经确定，没有任何关系，制作环境和应用环境无需建立对应关系。)&lt;br /&gt;文件内容：(hd0) /dev/sda&lt;br /&gt;&lt;br /&gt;自己修改一下menu.lst文件吧。这个简单。&lt;br /&gt;&lt;span style="COLOR: #ff0000"&gt;&lt;br /&gt;****************************************************************************&lt;br /&gt;以上全部推翻重写。需要懂得理论上的知识，才能做出正确的结果。&lt;br /&gt;&lt;br /&gt;****************************************************************************&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;首先理解引导中U盘引导部分的过程。&lt;br /&gt;1：当BISO通电引导到磁盘时，会检查MBR区域（MBR:446+DPT:64+ENDFLAG:2=512）&lt;br /&gt;MBR里面必须存在引导程序，通常会是我们熟悉grub,dos，95dos引导等。否则无法引导。&lt;br /&gt;这里做个简要说明：平常我们将系统安装硬盘上，通常安装都是安装windows,再安装linux，而通常当安装linux时，会提示你是否安装到MBR里面，或者安装到你的某个磁盘分区里面，通常是你的/boot的所在分区。&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;安装在MBR，或者某个磁盘分区。这2者之间存在差别。&lt;br /&gt;a：当安装到MBR时，会将已经存在的Win自己在MBR的引导程序替代，变成GRUB引导。&lt;br /&gt;b：当安装到某个分区时，会由存在的Win的引导程序，引导到那个分区的Grub，再有Grub引导到各个操作系统。&lt;br /&gt;这就是2者的差别。win没有为其他系统考虑过，到了自己的磁盘分区之后，对于引导其它系统，没有提供可以直接引导的命令，只能进入后修改它的boot.ini文件。而grub提供命令命令菜单，可以进行手工引导。&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;2：grub的制作&lt;br /&gt;笔者发现win只能自动识别出U盘的第一个分区，而对于第二个分区无动于衷。所以做了这样的分区方案。不至于在使用过程中，自己创建的grub的boot分区，被别人勿删除，或者格式化。&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;/dev/sda1  950M   fat32                                                      用于平时的数据存储&lt;br /&gt;/dev/sda2  60M     ext2   (boot标识，可以引导启动，用cfdisk时，很容易修改。) 用于关键时刻的引导使用。&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;执行命令&lt;br /&gt;mount /dev/sda5 /tmp/boot&lt;br /&gt;grub-install --root-directory=/tmp/boot --no-floppy  /dev/sda&lt;br /&gt;此处脚下留神，必须讲grub安装到/dev/sda,否则目前对于U盘的MBR来讲，没有可以用的引导程序。&lt;br /&gt;此命令执行后，会在/tmp/boot/目录，也就是/dev/sda5,下面产生目录/boot/grub.里面有*stage*等文件。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;综合上面的，忘记了，差menu.lst文件。添加以下内容。&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;title KOOK PRO USB&lt;br /&gt;&lt;br /&gt;title windows xp&lt;br /&gt;map (hd0) (hd1)&lt;br /&gt;map (hd1) (hd0)&lt;br /&gt;rootnoverify (hd1,0)&lt;br /&gt;makeactive&lt;br /&gt;chainloader +1&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;讲一下，如果你用U盘引导后，会自己讲识别为hd0,而当你引导，已经安装在硬盘上的win操作系统是，就会造成盘符错位，用map可以让这个虚拟磁盘互换。我也不知道该怎么样描述。用的时候，大家视自己的情况，进行修改吧。通常都是安装到第一个磁盘的第一个分区里面吧。&lt;br /&gt;&lt;br /&gt;就是这样了！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: #ff0000"&gt;&lt;br /&gt;****************************************************************************&lt;br /&gt;随着我的使用的愈加频繁，menu.lst上面的内容多了起来。&lt;br /&gt;&lt;br /&gt;****************************************************************************&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;下面分享一下，里面的内容。首先是目录结构。&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;root@kook:~# fdisk -l /dev/sdb&lt;br /&gt;&lt;br /&gt;Disk /dev/sdb: 1010 MB, 1010826752 bytes&lt;br /&gt;32 heads, 61 sectors/track, 1011 cylinders&lt;br /&gt;Units = cylinders of 1952 * 512 = 999424 bytes&lt;br /&gt;&lt;br /&gt;  Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;/dev/sdb1               1         951      928145+   6  FAT16&lt;br /&gt;/dev/sdb2   *         952        1011       58560   83  Linux&lt;br /&gt;root@kook:~# mount /dev/sdb2 /tmp/boot/&lt;br /&gt;root@kook:~# tree -d /tmp/boot&lt;br /&gt;/tmp/boot&lt;br /&gt;|-- boot&lt;br /&gt;|   `-- grub&lt;br /&gt;|-- centos4.4&lt;br /&gt;|-- centos4.4-64&lt;br /&gt;|-- lost+found&lt;br /&gt;`-- ubuntu704&lt;br /&gt;&lt;br /&gt;6 directories&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;下面是menu.lst的内容。&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;root@kook:~# cat /tmp/boot/boot/grub/menu.lst&lt;br /&gt;color light-gray/blue&lt;br /&gt;timeout         20&lt;br /&gt;default         0&lt;br /&gt;&lt;br /&gt;title           Windows 95/98/NT/2000&lt;br /&gt;map             (hd0) (hd1)&lt;br /&gt;map             (hd1) (hd0)&lt;br /&gt;rootnoverify    (hd1,0)&lt;br /&gt;makeactive&lt;br /&gt;chainloader     +1&lt;br /&gt;&lt;br /&gt;title           CentOS 4.4 x86_64 Net Install&lt;br /&gt;root            (hd0,1)&lt;br /&gt;kernel          /centos4.4-64/vmlinuz root=/dev/hda2 ro single&lt;br /&gt;initrd          /centos4.4-64/initrd.img&lt;br /&gt;boot&lt;br /&gt;&lt;br /&gt;title           CentOS 4.4 i386 Net Install&lt;br /&gt;root            (hd0,1)&lt;br /&gt;kernel          /centos4.4/vmlinuz root=/dev/hda2 ro single&lt;br /&gt;initrd          /centos4.4/initrd.img&lt;br /&gt;boot&lt;br /&gt;&lt;br /&gt;title           Ubuntu 7.04 AMD 64 Net Install&lt;br /&gt;root            (hd0,1)&lt;br /&gt;kernel          /ubuntu704/linux root=/dev/hda2 ro single&lt;br /&gt;initrd          /ubuntu704/initrd.gz&lt;br /&gt;boot&lt;br /&gt;&lt;/div&gt;&lt;div class="tags" style="DISPLAY: none"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="textbox-bottom"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="comment-wrapper" id="commentWrapper"&gt;&lt;a name="topreply"&gt;&lt;/a&gt;&lt;div id="addnew"&gt;&lt;/div&gt;&lt;div class="comment-pages"&gt;&lt;/div&gt;&lt;/div&gt;&lt;a name="reply"&gt;&lt;/a&gt;&lt;div id="commentForm"&gt;&lt;form id="visitorinput" name="visitorinput" action="javascript: ajax_submit('addreply');" method="post"&gt;&lt;br /&gt;&lt;/form&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="panel"&gt;&lt;h5 onclick="function anonymous()&lt;br /&gt;{&lt;br /&gt;showhidediv("&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/h5&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-2129463015997578222?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/2129463015997578222/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/10/grubidcfdisk.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/2129463015997578222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/2129463015997578222'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/10/grubidcfdisk.html' title='grub安装问题，主要解决还原卡的问题。文件系统ID号码表、编码表，从cfdisk中提取的。'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-939660485376189246</id><published>2007-10-16T13:48:00.002+08:00</published><updated>2007-10-16T13:49:38.968+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>CentOS的DVD光盘和RHEL5的DVD光盘、构建Yum库的对比。(二)</title><content type='html'>&lt;div class="textbox-content"&gt;再此之前写了一篇，关于CentOS5和RHEL5用DVD光盘直接构建yum库的问题。发现自己对于这个认识不是很深，今天又尝试重新的做了一下，发现不是那个样子。其实RHEL5和CentOS5的光盘，一样简单。用自动挂载后，做个软链接，都可以搞定。做软链接的部分如下：&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;[root@rhce local]# mkdir  RHEL5&lt;br /&gt;[root@rhce local]# cd RHEL5/&lt;br /&gt;[root@rhce RHEL5]# ln -s /misc/iso/* ./&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;RHEL5的DVD，yum库本地创建,配置文件/etc/yum.repos.d/RHEL5-Test.repo&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;[root@rhce yum.repos.d]# cat RHEL5-Test.repo&lt;br /&gt;[rhel5-Server]&lt;br /&gt;name=RHEL5-Server&lt;br /&gt;baseurl=file:///var/local/RHEL5/Server&lt;br /&gt;gpgcheck=1&lt;br /&gt;enabled=1&lt;br /&gt;gpgkey=file:///var/local/RHEL5/RPM-GPG-KEY-redhat-release&lt;br /&gt;&lt;br /&gt;[rhel5-VT]&lt;br /&gt;name=RHEL5-VT&lt;br /&gt;baseurl=file:///var/local/RHEL5/VT&lt;br /&gt;gpgcheck=1&lt;br /&gt;enabled=1&lt;br /&gt;gpgkey=file:///var/local/RHEL5/RPM-GPG-KEY-redhat-release&lt;br /&gt;&lt;br /&gt;[rhel5-Cluster]&lt;br /&gt;name=RHEL5-Cluster&lt;br /&gt;baseurl=file:///var/local/RHEL5/Cluster&lt;br /&gt;gpgcheck=1&lt;br /&gt;enabled=1&lt;br /&gt;gpgkey=file:///var/local/RHEL5/RPM-GPG-KEY-redhat-release&lt;br /&gt;&lt;br /&gt;[rhel5-ClusterStorage]&lt;br /&gt;name=RHEL5-Server&lt;br /&gt;baseurl=file:///var/local/RHEL5/ClusterStorage&lt;br /&gt;gpgcheck=1&lt;br /&gt;enabled=1&lt;br /&gt;gpgkey=file:///var/local/RHEL5/RPM-GPG-KEY-redhat-release&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;2007/10/15添加一个ftp的写法&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;[root@server yum.repos.d]# cat rhel5-dvd.repo&lt;br /&gt;[rhel5-Server]&lt;br /&gt;name=RHEL5-Server&lt;br /&gt;baseurl=ftp://redhat:redhat@192.168.101.250/rhel5/Server&lt;br /&gt;gpgcheck=1&lt;br /&gt;enabled=1&lt;br /&gt;gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release&lt;br /&gt;&lt;br /&gt;[rhel5-VT]&lt;br /&gt;name=RHEL5-VT&lt;br /&gt;baseurl=ftp://redhat:redhat@192.168.101.250/rhel5/VT&lt;br /&gt;gpgcheck=1&lt;br /&gt;enabled=1&lt;br /&gt;gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release&lt;br /&gt;&lt;br /&gt;[rhel5-Cluster]&lt;br /&gt;name=RHEL5-Cluster&lt;br /&gt;baseurl=ftp://redhat:redhat@192.168.101.250/rhel5/Cluster&lt;br /&gt;gpgcheck=1&lt;br /&gt;enabled=1&lt;br /&gt;gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release&lt;br /&gt;&lt;br /&gt;[rhel5-ClusterStorage]&lt;br /&gt;name=RHEL5-Server&lt;br /&gt;baseurl=ftp://redhat:redhat@192.168.101.250/rhel5/ClusterStorage&lt;br /&gt;gpgcheck=1&lt;br /&gt;enabled=1&lt;br /&gt;gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;更新一下库，查看一下，用命令yum check-update&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;[root@rhce yum.repos.d]# yum check-update&lt;br /&gt;Loading &amp;quot;installonlyn&amp;quot; plugin&lt;br /&gt;Setting up repositories&lt;br /&gt;rhel5-Server              100% |=========================| 1.3 kB    00:00&lt;br /&gt;rhel5-Cluster             100% |=========================| 1.3 kB    00:00&lt;br /&gt;rhel5-ClusterStorage      100% |=========================| 1.3 kB    00:00&lt;br /&gt;rhel5-VT                  100% |=========================| 1.3 kB    00:00&lt;br /&gt;Reading repository metadata in from local files&lt;br /&gt;primary.xml.gz            100% |=========================| 663 kB    00:00&lt;br /&gt;rhel5-Serv: ################################################## 2113/2113&lt;br /&gt;Added 2113 new packages, deleted 0 old in 13.69 seconds&lt;br /&gt;primary.xml.gz            100% |=========================| 6.4 kB    00:00&lt;br /&gt;rhel5-Clus: ################################################## 32/32&lt;br /&gt;Added 32 new packages, deleted 0 old in 0.18 seconds&lt;br /&gt;primary.xml.gz            100% |=========================| 4.2 kB    00:00&lt;br /&gt;rhel5-Clus: ################################################## 32/32&lt;br /&gt;Added 32 new packages, deleted 0 old in 0.15 seconds&lt;br /&gt;primary.xml.gz            100% |=========================| 6.0 kB    00:00&lt;br /&gt;rhel5-VT  : ################################################## 31/31&lt;br /&gt;Added 31 new packages, deleted 0 old in 0.23 seconds&lt;br /&gt;&lt;br /&gt;gnome-desktop.i386                       2.16.0-1.fc6           rhel5-Server&lt;br /&gt;redhat-artwork.i386                      5.0.9-1.el5            rhel5-Server&lt;br /&gt;redhat-logos.noarch                      4.9.16-1               rhel5-Server&lt;br /&gt;rhgb.i386                                0.16.4-8.el5           rhel5-Server&lt;br /&gt;[root@rhce yum.repos.d]# yum grouplist&lt;br /&gt;Loading &amp;quot;installonlyn&amp;quot; plugin&lt;br /&gt;Setting up Group Process&lt;br /&gt;Setting up repositories&lt;br /&gt;comps-rhel5-server-core.x 100% |=========================| 907 kB    00:00&lt;br /&gt;comps-rhel5-cluster.xml   100% |=========================|  92 kB    00:00&lt;br /&gt;comps-rhel5-cluster-st.xm 100% |=========================|  99 kB    00:00&lt;br /&gt;comps-rhel5-vt.xml        100% |=========================|  94 kB    00:00&lt;br /&gt;Installed Groups:&lt;br /&gt;  Office/Productivity&lt;br /&gt;  MySQL Database&lt;br /&gt;  Editors&lt;br /&gt;  System Tools&lt;br /&gt;  Text-based Internet&lt;br /&gt;  Legacy Network Server&lt;br /&gt;  DNS Name Server&lt;br /&gt;  GNOME Desktop Environment&lt;br /&gt;  FTP Server&lt;br /&gt;  Network Servers&lt;br /&gt;  Games and Entertainment&lt;br /&gt;  Windows File Server&lt;br /&gt;  X Window System&lt;br /&gt;  Graphics&lt;br /&gt;  Web Server&lt;br /&gt;  Printing Support&lt;br /&gt;  Mail Server&lt;br /&gt;  Server Configuration Tools&lt;br /&gt;  Sound and Video&lt;br /&gt;  Administration Tools&lt;br /&gt;  News Server&lt;br /&gt;  Graphical Internet&lt;br /&gt;Available Groups:&lt;br /&gt;  Cluster Storage&lt;br /&gt;  Engineering and Scientific&lt;br /&gt;  Development Libraries&lt;br /&gt;  GNOME Software Development&lt;br /&gt;  X Software Development&lt;br /&gt;  Virtualization&lt;br /&gt;  Authoring and Publishing&lt;br /&gt;  Legacy Software Development&lt;br /&gt;  Clustering&lt;br /&gt;  Java Development&lt;br /&gt;  KDE Software Development&lt;br /&gt;  KDE (K Desktop Environment)&lt;br /&gt;  PostgreSQL Database&lt;br /&gt;  Development Tools&lt;br /&gt;Done&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;挂载镜像的部分略.CentOS5的DVD，yum库本地创建,配置文件/etc/yum.repos.d/CentOS5-DVD.repo,先处理掉刚才的库记录。用yum clean all.&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;[root@rhce local]# mkdir CentOS5&lt;br /&gt;[root@rhce local]# ls&lt;br /&gt;CentOS5  RHEL5&lt;br /&gt;[root@rhce local]# yum clean all&lt;br /&gt;Loading &amp;quot;installonlyn&amp;quot; plugin&lt;br /&gt;Cleaning up Everything&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;产看配置文件，并更新库。&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;[root@rhce local]# mkdir CentOS5&lt;br /&gt;[root@rhce local]# cd CentOS5/&lt;br /&gt;[root@rhce CentOS5]# ln -s /misc/iso/* ./&lt;br /&gt;[root@rhce CentOS5]# cat /etc/yum.repos.d/CentOS-DVD.repo&lt;br /&gt;[CentOS5-DVD]&lt;br /&gt;name=CentOS5-DVD&lt;br /&gt;baseurl=file:///var/local/CentOS5&lt;br /&gt;gpgcheck=1&lt;br /&gt;enabled=1&lt;br /&gt;gpgkey=file:///var/local/CentOS5/RPM-GPG-KEY-CentOS-5&lt;br /&gt;[root@rhce CentOS5]# yum check-update&lt;br /&gt;Loading &amp;quot;installonlyn&amp;quot; plugin&lt;br /&gt;Setting up repositories&lt;br /&gt;CentOS5-DVD               100% |=========================| 1.1 kB    00:00&lt;br /&gt;Reading repository metadata in from local files&lt;br /&gt;primary.xml.gz            100% |=========================| 798 kB    00:00&lt;br /&gt;CentOS5-DV: ################################################## 2334/2334&lt;br /&gt;Added 2334 new packages, deleted 0 old in 14.07 seconds&lt;br /&gt;[root@rhce CentOS5]# yum grouplist&lt;br /&gt;Loading &amp;quot;installonlyn&amp;quot; plugin&lt;br /&gt;Setting up Group Process&lt;br /&gt;Setting up repositories&lt;br /&gt;comps.xml                 100% |=========================| 912 kB    00:00&lt;br /&gt;Installed Groups:&lt;br /&gt;  Office/Productivity&lt;br /&gt;  MySQL Database&lt;br /&gt;  Editors&lt;br /&gt;  System Tools&lt;br /&gt;  Text-based Internet&lt;br /&gt;  Legacy Network Server&lt;br /&gt;  DNS Name Server&lt;br /&gt;  GNOME Desktop Environment&lt;br /&gt;  Dialup Networking Support&lt;br /&gt;  FTP Server&lt;br /&gt;  Network Servers&lt;br /&gt;  Games and Entertainment&lt;br /&gt;  Java&lt;br /&gt;  X Window System&lt;br /&gt;  Graphics&lt;br /&gt;  Web Server&lt;br /&gt;  Windows File Server&lt;br /&gt;  Printing Support&lt;br /&gt;  Mail Server&lt;br /&gt;  Server Configuration Tools&lt;br /&gt;  Sound and Video&lt;br /&gt;  Administration Tools&lt;br /&gt;  News Server&lt;br /&gt;  Graphical Internet&lt;br /&gt;Available Groups:&lt;br /&gt;  Engineering and Scientific&lt;br /&gt;  Development Libraries&lt;br /&gt;  GNOME Software Development&lt;br /&gt;  X Software Development&lt;br /&gt;  Virtualization&lt;br /&gt;  Authoring and Publishing&lt;br /&gt;  Legacy Software Development&lt;br /&gt;  Java Development&lt;br /&gt;  Emacs&lt;br /&gt;  Legacy Software Support&lt;br /&gt;  Ruby&lt;br /&gt;  KDE Software Development&lt;br /&gt;  KDE (K Desktop Environment)&lt;br /&gt;  PostgreSQL Database&lt;br /&gt;  Development Tools&lt;br /&gt;Done&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-939660485376189246?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/939660485376189246/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/10/centosdvdrhel5dvdyum.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/939660485376189246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/939660485376189246'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/10/centosdvdrhel5dvdyum.html' title='CentOS的DVD光盘和RHEL5的DVD光盘、构建Yum库的对比。(二)'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-5036301558903039605</id><published>2007-10-16T13:48:00.001+08:00</published><updated>2007-10-16T13:48:52.576+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>RHCE5下LVM的创建</title><content type='html'>&lt;h4&gt;&lt;div class="textbox-content"&gt;大家平时主要应用的操作都是在partition分区的基础上创建filesystem文件系统，但是因为一些扩展和安全的需要，产生了RAID和LVM这种结构，用于在分区和文件系统中间的管理。如下表，简单描述一下构成。这只是在RHEL上的结构。在其它Unix，如AIX上PV只能是独立的一块硬盘。不可以是一个分区。&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;-----------------LVM的结构-------------------&lt;br /&gt;&lt;br /&gt;-------------------------------------------------&lt;br /&gt;partition------PV----VG-----LV-------filesystem&lt;br /&gt;&lt;br /&gt;分区-------物理卷---卷组--逻辑卷-----文件系统&lt;br /&gt;-------------------------------------------------&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;做了个简单的关于LVM的命令列表，请参考上面的创建过程，进行使用。&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;---------  Create  -------  Remove  --------    Display    -------  Resize  --------&lt;br /&gt;PV------- pvcreate ------- pvremove -------- pvs pvdisplay -------   N/A    --------&lt;br /&gt;VG------- vgcreate ------- vgremove -------- vgs vgdisplay -------   N/A    --------&lt;br /&gt;LV------- lvcreate ------- lvremove -------- lvs lvdisplay -------  + lvextend -----&lt;br /&gt;------------------------------------------------------------------  - lvreduce -----&lt;br /&gt;------------------------------------------------------------------  resizefs -------&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;模拟实验：&lt;br /&gt;1：创建2个200M的分区，创建为2个PV&lt;br /&gt;2：将2个PV加为卷组datavg&lt;br /&gt;3：将datavg分为2个LV，分别为50M的lvora和100M的lvbea&lt;br /&gt;4: 将2个LV格式化为ext3文件系统。&lt;br /&gt;5：将50M的lvora扩展为120M&lt;br /&gt;6: 添加到自动挂载fstab&lt;br /&gt;&lt;br /&gt;操作如下：&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;[root@rhce /]# fdisk /dev/hda&lt;br /&gt;&lt;br /&gt;Command (m for help): n&lt;br /&gt;First cylinder (715-1019, default 715):&lt;br /&gt;Using default value 715&lt;br /&gt;Last cylinder or +size or +sizeM or +sizeK (715-1019, default 1019): +200M&lt;br /&gt;&lt;br /&gt;Command (m for help): n&lt;br /&gt;First cylinder (740-1019, default 740):&lt;br /&gt;Using default value 740&lt;br /&gt;Last cylinder or +size or +sizeM or +sizeK (740-1019, default 1019): +200M&lt;br /&gt;&lt;br /&gt;Command (m for help): p&lt;br /&gt;&lt;br /&gt;Disk /dev/hda: 8388 MB, 8388608000 bytes&lt;br /&gt;255 heads, 63 sectors/track, 1019 cylinders&lt;br /&gt;Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;&lt;br /&gt;  Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;/dev/hda1   *           1          13      104391   83  Linux&lt;br /&gt;/dev/hda2              14         535     4192965   83  Linux&lt;br /&gt;/dev/hda3             536         600      522112+  82  Linux swap / Solaris&lt;br /&gt;/dev/hda4             601        1019     3365617+   5  Extended&lt;br /&gt;/dev/hda5             601         638      305203+  fd  Linux raid autodetect&lt;br /&gt;/dev/hda6             639         676      305203+  fd  Linux raid autodetect&lt;br /&gt;/dev/hda7             677         714      305203+  fd  Linux raid autodetect&lt;br /&gt;/dev/hda8             715         739      200781   83  Linux&lt;br /&gt;/dev/hda9             740         764      200781   83  Linux&lt;br /&gt;&lt;br /&gt;Command (m for help): t&lt;br /&gt;Partition number (1-9): 8&lt;br /&gt;Hex code (type L to list codes): L&lt;br /&gt;&lt;br /&gt;0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot&lt;br /&gt;1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris&lt;br /&gt;2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-&lt;br /&gt;3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-&lt;br /&gt;4  FAT16 &amp;lt;32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-&lt;br /&gt;5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx&lt;br /&gt;6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data&lt;br /&gt;7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .&lt;br /&gt;8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility&lt;br /&gt;9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt&lt;br /&gt;a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access&lt;br /&gt;b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O&lt;br /&gt;c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor&lt;br /&gt;e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs&lt;br /&gt;f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT&lt;br /&gt;10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/&lt;br /&gt;11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b&lt;br /&gt;12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor&lt;br /&gt;14  Hidden FAT16 &amp;lt;3 61  SpeedStor       a9  NetBSD          f4  SpeedStor&lt;br /&gt;16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary&lt;br /&gt;17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto&lt;br /&gt;18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep&lt;br /&gt;1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT&lt;br /&gt;1c  Hidden W95 FAT3 75  PC/IX&lt;br /&gt;Hex code (type L to list codes): 8e&lt;br /&gt;Changed system type of partition 8 to 8e (Linux LVM)&lt;br /&gt;&lt;br /&gt;Command (m for help): t&lt;br /&gt;Partition number (1-9): 9&lt;br /&gt;Hex code (type L to list codes): 8e&lt;br /&gt;Changed system type of partition 9 to 8e (Linux LVM)&lt;br /&gt;&lt;br /&gt;Command (m for help): w&lt;br /&gt;The partition table has been altered!&lt;br /&gt;&lt;br /&gt;Calling ioctl() to re-read partition table.&lt;br /&gt;&lt;br /&gt;WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.&lt;br /&gt;The kernel still uses the old table.&lt;br /&gt;The new table will be used at the next reboot.&lt;br /&gt;Syncing disks.&lt;br /&gt;[root@rhce /]# partprobe&lt;br /&gt;[root@rhce /]# fdisk -l&lt;br /&gt;&lt;br /&gt;Disk /dev/hda: 8388 MB, 8388608000 bytes&lt;br /&gt;255 heads, 63 sectors/track, 1019 cylinders&lt;br /&gt;Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;&lt;br /&gt;  Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;/dev/hda1   *           1          13      104391   83  Linux&lt;br /&gt;/dev/hda2              14         535     4192965   83  Linux&lt;br /&gt;/dev/hda3             536         600      522112+  82  Linux swap / Solaris&lt;br /&gt;/dev/hda4             601        1019     3365617+   5  Extended&lt;br /&gt;/dev/hda5             601         638      305203+  fd  Linux raid autodetect&lt;br /&gt;/dev/hda6             639         676      305203+  fd  Linux raid autodetect&lt;br /&gt;/dev/hda7             677         714      305203+  fd  Linux raid autodetect&lt;br /&gt;/dev/hda8             715         739      200781   8e  Linux LVM&lt;br /&gt;/dev/hda9             740         764      200781   8e  Linux LVM&lt;br /&gt;&lt;br /&gt;Disk /dev/md0: 936 MB, 936640512 bytes&lt;br /&gt;2 heads, 4 sectors/track, 228672 cylinders&lt;br /&gt;Units = cylinders of 8 * 512 = 4096 bytes&lt;br /&gt;&lt;br /&gt;Disk /dev/md0 doesn't contain a valid partition table&lt;br /&gt;[root@rhce /]# pvcreate /dev/hda8 /dev/hda9&lt;br /&gt; Physical volume &amp;quot;/dev/hda8&amp;quot; successfully created&lt;br /&gt; Physical volume &amp;quot;/dev/hda9&amp;quot; successfully created&lt;br /&gt;[root@rhce /]# vgcreate datavg /dev/hda8 /dev/hda9&lt;br /&gt; Volume group &amp;quot;datavg&amp;quot; successfully created&lt;br /&gt;[root@rhce /]# lvcreate -L 50M -n lvora datavg&lt;br /&gt; Rounding up size to full physical extent 52.00 MB&lt;br /&gt; Logical volume &amp;quot;lvora&amp;quot; created&lt;br /&gt;[root@rhce /]# lvcreate -L 150M -n lvbea datavg&lt;br /&gt; Rounding up size to full physical extent 152.00 MB&lt;br /&gt; Logical volume &amp;quot;lvbea&amp;quot; created&lt;br /&gt;[root@rhce /]# pvs&lt;br /&gt; PV         VG     Fmt  Attr PSize   PFree&lt;br /&gt; /dev/hda8  datavg lvm2 a-   192.00M 140.00M&lt;br /&gt; /dev/hda9  datavg lvm2 a-   192.00M  40.00M&lt;br /&gt;[root@rhce /]# vgs&lt;br /&gt; VG     #PV #LV #SN Attr   VSize   VFree&lt;br /&gt; datavg   2   2   0 wz--n- 384.00M 180.00M&lt;br /&gt;[root@rhce /]# lvs&lt;br /&gt; LV    VG     Attr   LSize   Origin Snap%  Move Log Copy%&lt;br /&gt; lvbea datavg -wi-a- 152.00M&lt;br /&gt; lvora datavg -wi-a-  52.00M&lt;br /&gt;[root@rhce /]# pvdisplay&lt;br /&gt; --- Physical volume ---&lt;br /&gt; PV Name               /dev/hda8&lt;br /&gt; VG Name               datavg&lt;br /&gt; PV Size               196.08 MB / not usable 4.08 MB&lt;br /&gt; Allocatable           yes&lt;br /&gt; PE Size (KByte)       4096&lt;br /&gt; Total PE              48&lt;br /&gt; Free PE               35&lt;br /&gt; Allocated PE          13&lt;br /&gt; PV UUID               it2HA0-2p5g-mvOM-cTQn-KBgy-pOGB-hOGse7&lt;br /&gt;&lt;br /&gt; --- Physical volume ---&lt;br /&gt; PV Name               /dev/hda9&lt;br /&gt; VG Name               datavg&lt;br /&gt; PV Size               196.08 MB / not usable 4.08 MB&lt;br /&gt; Allocatable           yes&lt;br /&gt; PE Size (KByte)       4096&lt;br /&gt; Total PE              48&lt;br /&gt; Free PE               10&lt;br /&gt; Allocated PE          38&lt;br /&gt; PV UUID               48hVLq-tqcs-26Qz-7VHr-tO1n-ypTA-DnBw2d&lt;br /&gt;&lt;br /&gt;[root@rhce /]# vgdisplay&lt;br /&gt; --- Volume group ---&lt;br /&gt; VG Name               datavg&lt;br /&gt; System ID&lt;br /&gt; Format                lvm2&lt;br /&gt; Metadata Areas        2&lt;br /&gt; Metadata Sequence No  3&lt;br /&gt; VG Access             read/write&lt;br /&gt; VG Status             resizable&lt;br /&gt; MAX LV                0&lt;br /&gt; Cur LV                2&lt;br /&gt; Open LV               0&lt;br /&gt; Max PV                0&lt;br /&gt; Cur PV                2&lt;br /&gt; Act PV                2&lt;br /&gt; VG Size               384.00 MB&lt;br /&gt; PE Size               4.00 MB&lt;br /&gt; Total PE              96&lt;br /&gt; Alloc PE / Size       51 / 204.00 MB&lt;br /&gt; Free  PE / Size       45 / 180.00 MB&lt;br /&gt; VG UUID               ZlqHYB-JADr-rIZ3-uwd8-igDd-me9y-HmAUln&lt;br /&gt;&lt;br /&gt;[root@rhce /]# lvdisplay&lt;br /&gt; --- Logical volume ---&lt;br /&gt; LV Name                /dev/datavg/lvora&lt;br /&gt; VG Name                datavg&lt;br /&gt; LV UUID                xapG30-oJll-IKF9-Gevj-ZRzD-JPaf-rFkItN&lt;br /&gt; LV Write Access        read/write&lt;br /&gt; LV Status              available&lt;br /&gt; # open                 0&lt;br /&gt; LV Size                52.00 MB&lt;br /&gt; Current LE             13&lt;br /&gt; Segments               1&lt;br /&gt; Allocation             inherit&lt;br /&gt; Read ahead sectors     0&lt;br /&gt; Block device           253:0&lt;br /&gt;&lt;br /&gt; --- Logical volume ---&lt;br /&gt; LV Name                /dev/datavg/lvbea&lt;br /&gt; VG Name                datavg&lt;br /&gt; LV UUID                fegQZT-B1jn-vN0j-BEYe-3Zgm-d02v-GIUhhs&lt;br /&gt; LV Write Access        read/write&lt;br /&gt; LV Status              available&lt;br /&gt; # open                 0&lt;br /&gt; LV Size                152.00 MB&lt;br /&gt; Current LE             38&lt;br /&gt; Segments               1&lt;br /&gt; Allocation             inherit&lt;br /&gt; Read ahead sectors     0&lt;br /&gt; Block device           253:1&lt;br /&gt;[root@rhce /]# mkfs.ext3 /dev/datavg/lvora&lt;br /&gt;[root@rhce /]# mkfs.ext3 /dev/datavg/lvbea&lt;br /&gt;[root@rhce ~]# mount /dev/datavg/lvora  /data/&lt;br /&gt;[root@rhce /]# lvextend -L +70M /dev/datavg/lvora&lt;br /&gt; Rounding up size to full physical extent 72.00 MB&lt;br /&gt; Extending logical volume lvora to 124.00 MB&lt;br /&gt; Logical volume lvora successfully resized&lt;br /&gt;[root@rhce ~]# resize2fs /dev/datavg/lvora&lt;br /&gt;resize2fs 1.39 (29-May-2006)&lt;br /&gt;Filesystem at /dev/datavg/lvora is mounted on /data; on-line resizing required&lt;br /&gt;Performing an on-line resize of /dev/datavg/lvora to 106496 (1k) blocks.&lt;br /&gt;The filesystem on /dev/datavg/lvora is now 106496 blocks long.&lt;br /&gt;&lt;br /&gt;注意：&lt;br /&gt;当扩大LV的时候，无需umount，直接就可以在线进行扩展。&lt;br /&gt;但是我在缩减的时候，无论是否是mount，还是Umount，都是失败。也许是虚拟机的缘故。&lt;br /&gt;回公司再进行测试吧。&lt;/div&gt;&lt;/div&gt;&lt;/h4&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-5036301558903039605?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/5036301558903039605/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/10/rhce5lvm.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5036301558903039605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5036301558903039605'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/10/rhce5lvm.html' title='RHCE5下LVM的创建'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-5989402151588650318</id><published>2007-10-16T13:47:00.002+08:00</published><updated>2007-10-16T13:48:15.933+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>RHCE5下应用mdadm创建RAID的使用方法</title><content type='html'>&lt;div class="textbox-content"&gt;简单说明：&lt;br /&gt;大家平时主要应用的操作都是在partition分区的基础上创建filesystem文件系统，但是因为一些扩展和安全的需要，产生了RAID和LVM这种结构，用于在分区和文件系统中间的管理。如下表，简单描述一下构成。这只是在RHEL上的结构。在其它Unix，如AIX上PV只能是独立的一块硬盘。不可以是一个分区。&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;-----------------LVM的结构-------------------&lt;br /&gt;&lt;br /&gt;-------------------------------------------------&lt;br /&gt;partition------PV----VG-----LV-------filesystem&lt;br /&gt;&lt;br /&gt;分区-------物理卷---卷组--逻辑卷-----文件系统&lt;br /&gt;-------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-----------------RAID的结构-------------------&lt;br /&gt;&lt;br /&gt;-------------------------------------------------&lt;br /&gt;partition-----------RAID-------------filesystem&lt;br /&gt;分区-------------磁盘阵列-------------文件系统&lt;br /&gt;-------------------------------------------------&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;以实验的形式来学习一下mdadm的使用吧。&lt;br /&gt;1：创建4个100M的分区，其中3个用于定制RAID5，1个用于备援。&lt;br /&gt;2：保证重新开机后，仍可以使用。&lt;br /&gt;&lt;br /&gt;基本步骤如下：&lt;br /&gt;1:分区--2:创建RAID设备--3:格式化产生文件系统--4:创建配置文件mdadm.conf--5:添加自动挂载fstab&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;[root@rhce ~]# fdisk /dev/hda&lt;br /&gt;&lt;br /&gt;Command (m for help): n&lt;br /&gt;First cylinder (715-1019, default 715):&lt;br /&gt;Using default value 715&lt;br /&gt;Last cylinder or +size or +sizeM or +sizeK (715-1019, default 1019): +100M&lt;br /&gt;&lt;br /&gt;Command (m for help): n&lt;br /&gt;First cylinder (728-1019, default 728):&lt;br /&gt;Using default value 728&lt;br /&gt;Last cylinder or +size or +sizeM or +sizeK (728-1019, default 1019): +100M&lt;br /&gt;&lt;br /&gt;Command (m for help): n&lt;br /&gt;First cylinder (741-1019, default 741):&lt;br /&gt;Using default value 741&lt;br /&gt;Last cylinder or +size or +sizeM or +sizeK (741-1019, default 1019): +100M&lt;br /&gt;&lt;br /&gt;Command (m for help): n&lt;br /&gt;First cylinder (754-1019, default 754):&lt;br /&gt;Using default value 754&lt;br /&gt;Last cylinder or +size or +sizeM or +sizeK (754-1019, default 1019): +100M&lt;br /&gt;&lt;br /&gt;Command (m for help): p&lt;br /&gt;&lt;br /&gt;Disk /dev/hda: 8388 MB, 8388608000 bytes&lt;br /&gt;255 heads, 63 sectors/track, 1019 cylinders&lt;br /&gt;Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;&lt;br /&gt;  Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;/dev/hda1   *           1          13      104391   83  Linux&lt;br /&gt;/dev/hda2              14         535     4192965   83  Linux&lt;br /&gt;/dev/hda3             536         600      522112+  82  Linux swap / Solaris&lt;br /&gt;/dev/hda4             601        1019     3365617+   5  Extended&lt;br /&gt;/dev/hda5             601         638      305203+  fd  Linux raid autodetect&lt;br /&gt;/dev/hda6             639         676      305203+  fd  Linux raid autodetect&lt;br /&gt;/dev/hda7             677         714      305203+  fd  Linux raid autodetect&lt;br /&gt;/dev/hda8             715         727      104391   83  Linux&lt;br /&gt;/dev/hda9             728         740      104391   83  Linux&lt;br /&gt;/dev/hda10            741         753      104391   83  Linux&lt;br /&gt;/dev/hda11            754         766      104391   83  Linux&lt;br /&gt;&lt;br /&gt;Command (m for help): t&lt;br /&gt;Partition number (1-11): 8&lt;br /&gt;Hex code (type L to list codes): fd&lt;br /&gt;Changed system type of partition 8 to fd (Linux raid autodetect)&lt;br /&gt;&lt;br /&gt;Command (m for help): t&lt;br /&gt;Partition number (1-11): 9&lt;br /&gt;Hex code (type L to list codes): fd&lt;br /&gt;Changed system type of partition 9 to fd (Linux raid autodetect)&lt;br /&gt;&lt;br /&gt;Command (m for help): t&lt;br /&gt;Partition number (1-11): 10&lt;br /&gt;Hex code (type L to list codes): fd&lt;br /&gt;Changed system type of partition 10 to fd (Linux raid autodetect)&lt;br /&gt;&lt;br /&gt;Command (m for help): t&lt;br /&gt;Partition number (1-11): 11&lt;br /&gt;Hex code (type L to list codes): fd&lt;br /&gt;Changed system type of partition 11 to fd (Linux raid autodetect)&lt;br /&gt;Command (m for help): w&lt;br /&gt;The partition table has been altered!&lt;br /&gt;&lt;br /&gt;Calling ioctl() to re-read partition table.&lt;br /&gt;&lt;br /&gt;WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.&lt;br /&gt;The kernel still uses the old table.&lt;br /&gt;The new table will be used at the next reboot.&lt;br /&gt;Syncing disks.&lt;br /&gt;[root@rhce ~]# partprobe&lt;br /&gt;[root@rhce ~]# mknod  /dev/md1 b 9 1&lt;br /&gt;[root@rhce ~]# mdadm -C /dev/md1 -l5 -n3 /dev/hda8 /dev/hda9 /dev/hda10 -x1 /dev/hda11&lt;br /&gt;[root@rhce ~]# mdadm -D /dev/md1&lt;br /&gt;/dev/md1:&lt;br /&gt;       Version : 00.90.03&lt;br /&gt; Creation Time : Sun Oct 14 03:30:19 2007&lt;br /&gt;    Raid Level : raid5&lt;br /&gt;    Array Size : 208640 (203.78 MiB 213.65 MB)&lt;br /&gt;   Device Size : 104320 (101.89 MiB 106.82 MB)&lt;br /&gt;  Raid Devices : 3&lt;br /&gt; Total Devices : 4&lt;br /&gt;Preferred Minor : 1&lt;br /&gt;   Persistence : Superblock is persistent&lt;br /&gt;&lt;br /&gt;   Update Time : Sun Oct 14 03:30:28 2007&lt;br /&gt;         State : clean&lt;br /&gt;Active Devices : 3&lt;br /&gt;Working Devices : 4&lt;br /&gt;Failed Devices : 0&lt;br /&gt; Spare Devices : 1&lt;br /&gt;&lt;br /&gt;        Layout : left-symmetric&lt;br /&gt;    Chunk Size : 64K&lt;br /&gt;&lt;br /&gt;          UUID : be60fc3f:89875d9a:390ef1c0:ed53cea2&lt;br /&gt;        Events : 0.2&lt;br /&gt;&lt;br /&gt;   Number   Major   Minor   RaidDevice State&lt;br /&gt;      0       3        8        0      active sync   /dev/hda8&lt;br /&gt;      1       3        9        1      active sync   /dev/hda9&lt;br /&gt;      2       3       10        2      active sync   /dev/hda10&lt;br /&gt;&lt;br /&gt;      3       3       11        -      spare   /dev/hda11&lt;br /&gt;[root@rhce ~]# mkfs.ext3 /dev/md1&lt;br /&gt;mke2fs 1.39 (29-May-2006)&lt;br /&gt;Filesystem label=&lt;br /&gt;OS type: Linux&lt;br /&gt;Block size=1024 (log=0)&lt;br /&gt;Fragment size=1024 (log=0)&lt;br /&gt;52208 inodes, 208640 blocks&lt;br /&gt;10432 blocks (5.00%) reserved for the super user&lt;br /&gt;First data block=1&lt;br /&gt;Maximum filesystem blocks=67371008&lt;br /&gt;26 block groups&lt;br /&gt;8192 blocks per group, 8192 fragments per group&lt;br /&gt;2008 inodes per group&lt;br /&gt;Superblock backups stored on blocks:&lt;br /&gt;       8193, 24577, 40961, 57345, 73729, 204801&lt;br /&gt;&lt;br /&gt;Writing inode tables: done&lt;br /&gt;Creating journal (4096 blocks): done&lt;br /&gt;Writing superblocks and filesystem accounting information: done&lt;br /&gt;&lt;br /&gt;This filesystem will be automatically checked every 20 mounts or&lt;br /&gt;180 days, whichever comes first.  Use tune2fs -c or -i to override.&lt;br /&gt;[root@rhce ~]# cat /etc/mdadm.conf&lt;br /&gt;&lt;br /&gt;# mdadm.conf written out by anaconda&lt;br /&gt;DEVICE partitions&lt;br /&gt;MAILADDR root&lt;br /&gt;ARRAY /dev/md0 level=raid0 num-devices=3 uuid=c12aefb0:278bff6c:a923ac8d:b4c6c4c4&lt;br /&gt;ARRAY /dev/md1 level=raid5 num-devices=3 spares=1 UUID=be60fc3f:89875d9a:390ef1c0:ed53cea2&lt;br /&gt;[root@rhce ~]# cat /etc/fstab&lt;br /&gt;LABEL=/                 /                       ext3    defaults        1 1&lt;br /&gt;LABEL=/boot             /boot                   ext3    defaults        1 2&lt;br /&gt;devpts                  /dev/pts                devpts  gid=5,mode=620  0 0&lt;br /&gt;tmpfs                   /dev/shm                tmpfs   defaults        0 0&lt;br /&gt;/dev/md0                /home                   ext3    defaults        1 2&lt;br /&gt;proc                    /proc                   proc    defaults        0 0&lt;br /&gt;sysfs                   /sys                    sysfs   defaults        0 0&lt;br /&gt;LABEL=SWAP-hda3         swap                    swap    defaults        0 0&lt;br /&gt;/dev/md1                /data                   ext3    defaults        1 2&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;如上：创建一个RAID的过程就结束了。但是由于我的实验环境中，已经存在了一个raid,就是设备/dev/md0，是我安装系统时创建的。所以注意一下。我手工创建的是/dev/md1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;补充一下：如果当时忘记了mdadm -D -s这个执行命令追加到/etc/mdadm.conf,请按照如下方式操作,补充一些其它命令。&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;[root@rhce data]# mdadm -A /dev/md1 /dev/hda[8-11]&lt;br /&gt;[root@rhce data]# mdadm -D -s &amp;gt;&amp;gt; /etc/mdadm.conf&lt;br /&gt;[root@rhce data]# cat /proc/mdstat&lt;br /&gt;Personalities : [raid6] [raid5] [raid4] [raid0]&lt;br /&gt;md1 : active raid5 hda11[3](S) hda10[2] hda9[1] hda8[0]&lt;br /&gt;     208640 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]&lt;br /&gt;&lt;br /&gt;md0 : active raid0 hda7[2] hda6[1] hda5[0]&lt;br /&gt;     914688 blocks 256k chunks&lt;br /&gt;&lt;br /&gt;unused devices: &lt;none /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;实验：&lt;br /&gt;假设/dev/hda9损害，模拟过程。替换/dev/hda9.实际应用中应用单独的硬盘进行生产应用。&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;[root@rhce data]# mdadm /dev/md1 -f /dev/hda9&lt;br /&gt;mdadm: set /dev/hda9 faulty in /dev/md1&lt;br /&gt;[root@rhce data]# mdadm -D /dev/md1&lt;br /&gt;/dev/md1:&lt;br /&gt;       Version : 00.90.03&lt;br /&gt; Creation Time : Sun Oct 14 03:30:19 2007&lt;br /&gt;    Raid Level : raid5&lt;br /&gt;    Array Size : 208640 (203.78 MiB 213.65 MB)&lt;br /&gt;   Device Size : 104320 (101.89 MiB 106.82 MB)&lt;br /&gt;  Raid Devices : 3&lt;br /&gt; Total Devices : 4&lt;br /&gt;Preferred Minor : 1&lt;br /&gt;   Persistence : Superblock is persistent&lt;br /&gt;&lt;br /&gt;   Update Time : Sun Oct 14 03:54:37 2007&lt;br /&gt;         State : clean&lt;br /&gt;Active Devices : 3&lt;br /&gt;Working Devices : 3&lt;br /&gt;Failed Devices : 1&lt;br /&gt; Spare Devices : 0&lt;br /&gt;&lt;br /&gt;        Layout : left-symmetric&lt;br /&gt;    Chunk Size : 64K&lt;br /&gt;&lt;br /&gt;          UUID : be60fc3f:89875d9a:390ef1c0:ed53cea2&lt;br /&gt;        Events : 0.6&lt;br /&gt;&lt;br /&gt;   Number   Major   Minor   RaidDevice State&lt;br /&gt;      0       3        8        0      active sync   /dev/hda8&lt;br /&gt;      1       3       11        1      active sync   /dev/hda11&lt;br /&gt;      2       3       10        2      active sync   /dev/hda10&lt;br /&gt;&lt;br /&gt;      3       3        9        -      faulty spare   /dev/hda9&lt;br /&gt;[root@rhce data]# mdadm /dev/md1 -r /dev/hda9&lt;br /&gt;mdadm: hot removed /dev/hda9&lt;br /&gt;[root@rhce data]# mdadm -D /dev/md1&lt;br /&gt;/dev/md1:&lt;br /&gt;       Version : 00.90.03&lt;br /&gt; Creation Time : Sun Oct 14 03:30:19 2007&lt;br /&gt;    Raid Level : raid5&lt;br /&gt;    Array Size : 208640 (203.78 MiB 213.65 MB)&lt;br /&gt;   Device Size : 104320 (101.89 MiB 106.82 MB)&lt;br /&gt;  Raid Devices : 3&lt;br /&gt; Total Devices : 3&lt;br /&gt;Preferred Minor : 1&lt;br /&gt;   Persistence : Superblock is persistent&lt;br /&gt;&lt;br /&gt;   Update Time : Sun Oct 14 03:55:57 2007&lt;br /&gt;         State : clean&lt;br /&gt;Active Devices : 3&lt;br /&gt;Working Devices : 3&lt;br /&gt;Failed Devices : 0&lt;br /&gt; Spare Devices : 0&lt;br /&gt;&lt;br /&gt;        Layout : left-symmetric&lt;br /&gt;    Chunk Size : 64K&lt;br /&gt;&lt;br /&gt;          UUID : be60fc3f:89875d9a:390ef1c0:ed53cea2&lt;br /&gt;        Events : 0.8&lt;br /&gt;&lt;br /&gt;   Number   Major   Minor   RaidDevice State&lt;br /&gt;      0       3        8        0      active sync   /dev/hda8&lt;br /&gt;      1       3       11        1      active sync   /dev/hda11&lt;br /&gt;      2       3       10        2      active sync   /dev/hda10&lt;br /&gt;+++++++++++++++++++++此时关机，更换/dev/hda9，然后开机。++++++++++++++++++++++++++++++&lt;br /&gt;[root@rhce ~]# mdadm -D /dev/md1&lt;br /&gt;/dev/md1:&lt;br /&gt;       Version : 00.90.03&lt;br /&gt; Creation Time : Sun Oct 14 03:30:19 2007&lt;br /&gt;    Raid Level : raid5&lt;br /&gt;    Array Size : 208640 (203.78 MiB 213.65 MB)&lt;br /&gt;   Device Size : 104320 (101.89 MiB 106.82 MB)&lt;br /&gt;  Raid Devices : 3&lt;br /&gt; Total Devices : 2&lt;br /&gt;Preferred Minor : 1&lt;br /&gt;   Persistence : Superblock is persistent&lt;br /&gt;&lt;br /&gt;   Update Time : Sun Oct 14 04:08:26 2007&lt;br /&gt;         State : clean, degraded&lt;br /&gt;Active Devices : 2&lt;br /&gt;Working Devices : 2&lt;br /&gt;Failed Devices : 0&lt;br /&gt; Spare Devices : 0&lt;br /&gt;&lt;br /&gt;        Layout : left-symmetric&lt;br /&gt;    Chunk Size : 64K&lt;br /&gt;&lt;br /&gt;          UUID : be60fc3f:89875d9a:390ef1c0:ed53cea2&lt;br /&gt;        Events : 0.10&lt;br /&gt;&lt;br /&gt;   Number   Major   Minor   RaidDevice State&lt;br /&gt;      0       3        8        0      active sync   /dev/hda8&lt;br /&gt;      1       0        0        1      removed&lt;br /&gt;      2       3       10        2      active sync   /dev/hda10&lt;br /&gt;[root@rhce ~]# mdadm /dev/md1 -a /dev/hda9 /dev/hda11&lt;br /&gt;mdadm: re-added /dev/hda9 /dev/hda11&lt;br /&gt;[root@rhce ~]# mdadm -D /dev/md1&lt;br /&gt;/dev/md1:&lt;br /&gt;       Version : 00.90.03&lt;br /&gt; Creation Time : Sun Oct 14 03:30:19 2007&lt;br /&gt;    Raid Level : raid5&lt;br /&gt;    Array Size : 208640 (203.78 MiB 213.65 MB)&lt;br /&gt;   Device Size : 104320 (101.89 MiB 106.82 MB)&lt;br /&gt;  Raid Devices : 3&lt;br /&gt; Total Devices : 4&lt;br /&gt;Preferred Minor : 1&lt;br /&gt;   Persistence : Superblock is persistent&lt;br /&gt;&lt;br /&gt;   Update Time : Sun Oct 14 04:13:06 2007&lt;br /&gt;         State : clean&lt;br /&gt;Active Devices : 3&lt;br /&gt;Working Devices : 4&lt;br /&gt;Failed Devices : 0&lt;br /&gt; Spare Devices : 1&lt;br /&gt;&lt;br /&gt;        Layout : left-symmetric&lt;br /&gt;    Chunk Size : 64K&lt;br /&gt;&lt;br /&gt;          UUID : be60fc3f:89875d9a:390ef1c0:ed53cea2&lt;br /&gt;        Events : 0.12&lt;br /&gt;&lt;br /&gt;   Number   Major   Minor   RaidDevice State&lt;br /&gt;      0       3        8        0      active sync   /dev/hda8&lt;br /&gt;      1       3        9        1      active sync   /dev/hda9&lt;br /&gt;      2       3       10        2      active sync   /dev/hda10&lt;br /&gt;&lt;br /&gt;      3       3       11        -      spare   /dev/hda11&lt;br /&gt;&lt;/div&gt;&lt;div class="code"&gt;&lt;/div&gt;&lt;div class="code"&gt;&lt;a href="http://www.52zhe.cn/index.php?mode=1&amp;page=1"&gt;http://www.52zhe.cn/index.php?mode=1&amp;amp;page=1&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-5989402151588650318?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/5989402151588650318/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/10/rhce5mdadmraid.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5989402151588650318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5989402151588650318'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/10/rhce5mdadmraid.html' title='RHCE5下应用mdadm创建RAID的使用方法'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-5719152610355717940</id><published>2007-10-16T13:47:00.001+08:00</published><updated>2007-10-16T13:47:30.888+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>RHEL5中磁盘限额quota的应用</title><content type='html'>&lt;div class="textbox-content"&gt;RHEL5中磁盘限额quota的应用&lt;br /&gt;基础的概念不讲解，包括软限制，硬限制，和宽限期。包括启动磁盘限额的一些基础条件，针对分区，内核支持，root无效。&lt;br /&gt;&lt;br /&gt;基本流程和常用命令：&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;1:添加到fstab,然后remount--2:quotacheck产生限制文件--3:edquota编辑限制--4:quotaon启用限额--5:quotaoff关闭限额&lt;br /&gt;-----fstab: usrquota,grpquota------&lt;br /&gt;-----mount -o remount /home  ------&lt;br /&gt;-----quotacheck -avug        ------&lt;br /&gt;-----edqutoa -u user1 -g grp1------&lt;br /&gt;-----edqutoa -t              ------&lt;br /&gt;-----edqutoa -p demo1 -u u2  ------&lt;br /&gt;-----qutoaon                 ------&lt;br /&gt;-----qutoaoff                ------&lt;br /&gt;-----repquota                ------&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;做以下实验：&lt;br /&gt;设置用户kook的软限制为80M，硬限制为100M，宽限期为7天。&lt;br /&gt;注意:宽限期是对所有用户的，不是针对单独一个用户的。&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;[root@rhce home]# cat /etc/fstab&lt;br /&gt;LABEL=/                 /                       ext3    defaults        1 1&lt;br /&gt;LABEL=/boot             /boot                   ext3    defaults        1 2&lt;br /&gt;devpts                  /dev/pts                devpts  gid=5,mode=620  0 0&lt;br /&gt;tmpfs                   /dev/shm                tmpfs   defaults        0 0&lt;br /&gt;/dev/md0                /home                   ext3    defaults,usrquota,grpquota       1 2&lt;br /&gt;proc                    /proc                   proc    defaults        0 0&lt;br /&gt;sysfs                   /sys                    sysfs   defaults        0 0&lt;br /&gt;LABEL=SWAP-hda3         swap                    swap    defaults        0 0&lt;br /&gt;[root@rhce home]# quotacheck -avug&lt;br /&gt;quotacheck: Scanning /dev/md0 [/home] quotacheck: Cannot stat old user quota file: 没有那个文件或目录&lt;br /&gt;quotacheck: Cannot stat old group quota file: 没有那个文件或目录&lt;br /&gt;quotacheck: Cannot stat old user quota file: 没有那个文件或目录&lt;br /&gt;quotacheck: Cannot stat old group quota file: 没有那个文件或目录&lt;br /&gt;done&lt;br /&gt;quotacheck: Checked 68 directories and 107 files&lt;br /&gt;quotacheck: Old file not found.&lt;br /&gt;quotacheck: Old file not found.&lt;br /&gt;[root@rhce home]# edquota -u kook&lt;br /&gt;Disk quotas for user kook (uid 500):&lt;br /&gt; Filesystem                   blocks       soft       hard     inodes     soft     hard&lt;br /&gt; /dev/md0                       2908       81920      102400         90        0        0&lt;br /&gt;[root@rhce home]# edquota -t&lt;br /&gt;Grace period before enforcing soft limits for users:&lt;br /&gt;Time units may be: days, hours, minutes, or seconds&lt;br /&gt; Filesystem             Block grace period     Inode grace period&lt;br /&gt; /dev/md0                      7days                  7days&lt;br /&gt;[root@rhce kook]# quotaon -avug&lt;br /&gt;/dev/md0 [/home]: group quotas turned on&lt;br /&gt;/dev/md0 [/home]: user quotas turned on&lt;br /&gt;&lt;br /&gt;[root@rhce kook]# su - kook&lt;br /&gt;&lt;br /&gt;[kook@rhce ~]$ dd if=/dev/zero of=90M bs=1M count=90&lt;br /&gt;md0: warning, user block quota exceeded.&lt;br /&gt;90+0 records in&lt;br /&gt;90+0 records out&lt;br /&gt;94371840 bytes (94 MB) copied, 0.708314 seconds, 133 MB/s&lt;br /&gt;&lt;br /&gt;[root@rhce kook]# repquota -a&lt;br /&gt;*** Report for user quotas on device /dev/md0&lt;br /&gt;Block grace time: 7days; Inode grace time: 7days&lt;br /&gt;                       Block limits                File limits&lt;br /&gt;User            used    soft    hard  grace    used  soft  hard  grace&lt;br /&gt;----------------------------------------------------------------------&lt;br /&gt;root      --   17316       0       0              4     0     0&lt;br /&gt;kook      +-   93036   81920  102400  6days      89     0     0&lt;br /&gt;joshua    --      16       0       0              4     0     0&lt;br /&gt;alex      --      24       0       0              6     0     0&lt;br /&gt;dax       --      16       0       0              4     0     0&lt;br /&gt;bryan     --      16       0       0              4     0     0&lt;br /&gt;zak       --      16       0       0              4     0     0&lt;br /&gt;ed        --      20       0       0              5     0     0&lt;br /&gt;manager   --      20       0       0              5     0     0&lt;br /&gt;gertrude  --      16       0       0              4     0     0&lt;br /&gt;&lt;br /&gt;[root@rhce kook]# edquota -p kook -u alex&lt;br /&gt;[root@rhce kook]# repquota -a&lt;br /&gt;*** Report for user quotas on device /dev/md0&lt;br /&gt;Block grace time: 7days; Inode grace time: 7days&lt;br /&gt;                       Block limits                File limits&lt;br /&gt;User            used    soft    hard  grace    used  soft  hard  grace&lt;br /&gt;----------------------------------------------------------------------&lt;br /&gt;root      --   17316       0       0              4     0     0&lt;br /&gt;kook      +-   93036   81920  102400  6days      89     0     0&lt;br /&gt;joshua    --      16       0       0              4     0     0&lt;br /&gt;alex      --      24   81920  102400              6     0     0&lt;br /&gt;dax       --      16       0       0              4     0     0&lt;br /&gt;bryan     --      16       0       0              4     0     0&lt;br /&gt;zak       --      16       0       0              4     0     0&lt;br /&gt;ed        --      20       0       0              5     0     0&lt;br /&gt;manager   --      20       0       0              5     0     0&lt;br /&gt;gertrude  --      16       0       0              4     0     0&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-5719152610355717940?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/5719152610355717940/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/10/rhel5quota.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5719152610355717940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5719152610355717940'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/10/rhel5quota.html' title='RHEL5中磁盘限额quota的应用'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-343764987957849411</id><published>2007-10-16T13:46:00.001+08:00</published><updated>2007-10-16T13:46:52.459+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>KICKSTART+NFS简明安装指南</title><content type='html'>硬件要求:&lt;br /&gt;Client NIC支持pxe启动 或者用vmware5.0以上版本(bios中选pxe启动)&lt;br /&gt;假定iso文件放在/opt/software/as4u1iso/目录，如我的&lt;br /&gt;[root@develop ras4.1]# ll /opt/software/as4u1iso/&lt;br /&gt;total 2205192&lt;br /&gt;-rw-r--r-- 1 root root 1889 Dec 14 15:45 ks.cfg&lt;br /&gt;-rw-r--r-- 1 root root 106455040 Sep 19 18:01 RHEL4-U1-Extras-i386.iso&lt;br /&gt;-rw-r--r-- 1 root root 202643456 Sep 19 18:00 RHEL4-U1-i386-AS-disc1.iso&lt;br /&gt;-rw-r--r-- 1 root root 657266688 Sep 19 17:40 RHEL4-U1-i386-disc2.iso&lt;br /&gt;-rw-r--r-- 1 root root 666005504 Sep 19 17:31 RHEL4-U1-i386-disc3.iso&lt;br /&gt;-rw-r--r-- 1 root root 623505408 Sep 19 17:29 RHEL4-U1-i386-disc4.iso&lt;br /&gt;#mkdir -p /tftpboot/ras4.1/pxelinux.cfg&lt;br /&gt;#mkdir -p /mnt/cd1&lt;br /&gt;#mount -o loop /opt/software/as4u1iso/RHEL4-U1-i386-AS-disc1.iso /mnt/cd1&lt;br /&gt;#cp /mnt/cd1/isolinux/initrd.img /tftpboot/ras4.1/&lt;br /&gt;#cp /mnt/cd1/isolinux/vmlinuz /tftpboot/ras4.1/&lt;br /&gt;#cp /mnt/cd1/isolinux/isolinux.cfg /tftpboot/ras4.1/pxelinux.cfg/&lt;br /&gt;#以上三个文件都在iso文件中&lt;br /&gt;#cp /usr/lib/syslinux/pxelinux.0 /tftpboot/ras4.1/ &lt;br /&gt;#在任何一个已装好的redhat linux(版本&amp;gt;=9.0)中复制pxelinux.0到/tftpboot/ras4.1/&lt;br /&gt;#编辑default文件&lt;br /&gt;#cat /tftpboot/ras4.1/pxelinux.cfg/default&lt;br /&gt;default autoinstall&lt;br /&gt;prompt 1&lt;br /&gt;timeout 3&lt;br /&gt;display boot.msg&lt;br /&gt;F1 boot.msg&lt;br /&gt;F2 options.msg&lt;br /&gt;F3 general.msg&lt;br /&gt;F4 param.msg&lt;br /&gt;F5 rescue.msg&lt;br /&gt;F7 snake.msg&lt;br /&gt;label linux&lt;br /&gt;kernel vmlinuz&lt;br /&gt;append initrd=initrd.img&lt;br /&gt;label autoinstall&lt;br /&gt;kernel vmlinuz &lt;br /&gt;append ksdevice=eth0 network ks=nfs:10.5.17.37:/opt/software/as4u1iso/ks.cfg vmlinuz=vmlinuz initrd=initrd.img devfs=nomount ramdisk_size=16384 nofb&lt;br /&gt;设置tftpboot启动&lt;br /&gt;[root@develop ras4.1]# cat /etc/xinetd.d/tftp&lt;br /&gt;service tftp&lt;br /&gt;{&lt;br /&gt;disable = no&lt;br /&gt;socket_type = dgram&lt;br /&gt;protocol = udp&lt;br /&gt;wait = yes&lt;br /&gt;user = root&lt;br /&gt;server = /usr/sbin/in.tftpd&lt;br /&gt;server_args = -s /tftpboot&lt;br /&gt;per_source = 11&lt;br /&gt;cps = 100 2&lt;br /&gt;flags = IPv4&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;TFTP设置完成&lt;br /&gt;[root@develop ras4.1]# cat /etc/dhcpd.conf&lt;br /&gt;ddns-update-style interim;&lt;br /&gt;ignore client-updates;&lt;br /&gt;&lt;br /&gt;subnet 10.5.17.0 netmask 255.255.255.0 {&lt;br /&gt;&lt;br /&gt;option routers 10.5.17.254;&lt;br /&gt;option subnet-mask 255.255.255.0;&lt;br /&gt;&lt;br /&gt;option time-offset -18000; # Eastern Standard Time&lt;br /&gt;&lt;br /&gt;range dynamic-bootp 10.5.17.90 10.5.17.100;&lt;br /&gt;default-lease-time 21600;&lt;br /&gt;max-lease-time 43200;&lt;br /&gt;next-server 10.5.17.37;&lt;br /&gt;filename &lt;i&gt;&amp;quot;&lt;/i&gt;/ras4.1/pxelinux.0&lt;i&gt;&amp;quot;&lt;/i&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;DHCP设置完成&lt;br /&gt;[root@develop ras4.1]# cat /etc/exports &lt;br /&gt;/opt/software/as4u1iso 10.5.0.0/255.255.0.0(rw,async,no_root_squash)&lt;br /&gt;NFS设置完成&lt;br /&gt;#system-config-kickstart&lt;br /&gt;建立ks.cfg&lt;br /&gt;#cat /opt/software/as4u1iso/ks.cfg&lt;br /&gt;lang en_US&lt;br /&gt;langsupport zh_CN --default=en_US&lt;br /&gt;keyboard us&lt;br /&gt;timezone Asia/Shanghai&lt;br /&gt;rootpw --iscrypted $1$WvFbqnpm$m94fa4AopXI/kfYOYbWMW. #我的初始密码123456&lt;br /&gt;selinux --disabled&lt;br /&gt;reboot&lt;br /&gt;text&lt;br /&gt;install&lt;br /&gt;nfs --server=10.5.17.37 --dir=/opt/software/as4u1iso&lt;br /&gt;bootloader --location=mbr &lt;br /&gt;zerombr yes&lt;br /&gt;clearpart --linux&lt;br /&gt;auth --useshadow --enablemd5 &lt;br /&gt;firewall --disabled &lt;br /&gt;skipx&lt;br /&gt;%packages --resolvedeps&lt;br /&gt;@everything&lt;br /&gt;ks.cfg文件设置完成&lt;br /&gt;&lt;br /&gt;启动kickstart&lt;br /&gt;#service portmap start&lt;br /&gt;#service nfs start&lt;br /&gt;#service xinetd start&lt;br /&gt;#service dhcpd start&lt;br /&gt;&lt;br /&gt;备注: 如果client网卡所连的是cisco交换机，则cisco交换机所接的client的switch port开端口快速转发模式,即&lt;br /&gt;spanning-tree portfast&lt;br /&gt;做法如下所示:&lt;br /&gt;Switch#conf t&lt;br /&gt;Switch(config)#int f0/1&lt;br /&gt;Switch(config-if)#spanning-tree portfast&lt;br /&gt;Switch(config-if)#exit&lt;br /&gt;Switch#wr&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-343764987957849411?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/343764987957849411/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/10/kickstartnfs.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/343764987957849411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/343764987957849411'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/10/kickstartnfs.html' title='KICKSTART+NFS简明安装指南'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-4468654169086513944</id><published>2007-10-16T13:42:00.000+08:00</published><updated>2007-10-16T13:46:06.736+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>用kickstart 自动安装Linux</title><content type='html'>很多时候，我们希望能自动安装RedHat Linux , 例如计算机教室、Linux集群系统，一次得安装多台Linux 的需求，如果一台一台利用光盘慢慢安装，岂不费时费力。为了满足这种需求，Red Hat 发展出kickstart 的安装方式。藉由使用 kickstart，系统管理员只需建立一个自动安装配置文件(ks.cfg)，其中含有安装Red Hat Linux 所需回答的所有设置值，如此一来系统便会根据这个文件来完成安装的工作。&lt;p&gt; &lt;/p&gt;&lt;p class="ttitle"&gt;简介&lt;/p&gt;&lt;p&gt;ks.cfg 文件可以存放在某台网络上的服务器上，以让欲安装Linux 的计算机来读取它。而且通常我们也会将RedHat 光盘的内容复制至这台服务器，并将内容共享出来，如此利用Kickstar 网络安装的方式便可很快速地安装多台Linux，这系统管理员带来很大的方便。&lt;/p&gt;&lt;p&gt;&lt;span class="ttitle"&gt;Instatllation Server&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Kickstart 的安装，安装的来源可以是本机的光驱、硬盘或透过 NFS,FTP 或 HTTP 来进行安装，利用NFS、FTP、HTTP 网络安装的方式是较有效率的，所以我们首先得先配置一台Installation Server，就是将4 片光盘的内容复制至Server 上并利用NFS、FTP 或HTTP 将其共享出来。通常Installation Server 会同时担任DHCP Server。所以在实作kickstart 自动安装之前我们得先配置这台Installation server。&lt;/p&gt;&lt;p class="ttitle"&gt;实战演练一：配置Installation Server&lt;/p&gt;&lt;p&gt;测试环境： &lt;/p&gt;&lt;ul&gt;&lt;li&gt;RedHat Enterprise ES 3.0 版 (ip 设置为192.168.0.254) &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;必须安装以下套件： &lt;/p&gt;&lt;ul&gt;&lt;li&gt;nfs-utils*.rpm &lt;/li&gt;&lt;li&gt;vsftpd*.rpm &lt;/li&gt;&lt;li&gt;httpd*.rpm &lt;/li&gt;&lt;li&gt;dhcp*.rpm &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;1.将RHEL ES 3.0 安装所需RPM 全部copy 至Server 上 &lt;/p&gt;&lt;div class="codebox" id="rhelcs3"&gt;&lt;p align="left"&gt;放入第１～４片CD 执行以下命令&lt;br /&gt;#mount /mnt/cdrom&lt;br /&gt;#cp –af /mnt/cdrom/RedHat /var/ftp/pub&lt;br /&gt;重复将4 片内容全部copy 至Installation Server 上的/var/ftp/pub&lt;br /&gt;# ln –s /var/ftp/pub /var/www/html/pub&lt;br /&gt;将 /var/www/html/pub 指向 /var/ftp/pub&lt;/p&gt;&lt;/div&gt;&lt;p&gt;2.利用各种方式将安装文件共享出来 &lt;/p&gt;&lt;div class="codebox" id="rhelcs3"&gt;&lt;p&gt;NFS 法&lt;br /&gt;#vi /etc/exports 加入此行&lt;br /&gt;/var/ftp/ftp&lt;br /&gt;#service nfs start&lt;br /&gt;FTP 法&lt;br /&gt;#service vsftpd start&lt;br /&gt;HTTP 法&lt;br /&gt;# service httpd start&lt;/p&gt;&lt;/div&gt;&lt;p&gt;3.建立DHCP server &lt;/p&gt;&lt;div class="codebox" id="rhelcs3"&gt;&lt;p&gt;#cp /usr/share/doc/dhcp-3.0pl2/dhcpd.conf.sample /etc/dhcpd.conf &lt;/p&gt;&lt;/div&gt;&lt;div class="codebox" id="rhelcs3"&gt;&lt;p&gt;# more /etc/dhcpd.conf 内容如下暂时不用修改&lt;br /&gt;ddns-update-style interim;&lt;br /&gt;ignore client-updates;&lt;br /&gt;subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;# --- default gateway&lt;br /&gt;option routers 192.168.0.1;&lt;br /&gt;option subnet-mask 255.255.255.0;&lt;br /&gt;option nis-domain &amp;quot;domain.org&amp;quot;;&lt;br /&gt;option domain-name &amp;quot;domain.org&amp;quot;;&lt;br /&gt;option domain-name-servers 192.168.1.1;&lt;br /&gt;option time-offset -18000; # Eastern Standard Time&lt;br /&gt;# option ntp-servers 192.168.1.1;&lt;br /&gt;# option netbios-name-servers 192.168.1.1;&lt;br /&gt;# --- Selects point-to-point node (default is hybrid). Don't change this unless&lt;br /&gt;# -- you understand Netbios very well&lt;br /&gt;# option netbios-node-type 2;&lt;br /&gt;range dynamic-bootp 192.168.0.128 192.168.0.254;&lt;br /&gt;default-lease-time 21600;&lt;br /&gt;max-lease-time 43200;&lt;/p&gt;&lt;/div&gt;&lt;div class="codebox" id="rhelcs3"&gt;&lt;p&gt;#service dhcpd restart&lt;/p&gt;&lt;/div&gt;&lt;p class="ttitle"&gt;kickstart 自动安装配置文件 (ks.cfg)&lt;/p&gt;&lt;p&gt;Kickstart 自动安装配置文件ks.cfg 是一个普通的文本文件，其中含有安装Linux 所需的各项设置，例如语系、分区的配置、root 的密码、等各项安装时所需要的设置值。Red Hat Linux 安装程序也根据您在安装过程中所选择的选项建立一个ks.cfg 的参考范例, 该文件会存放在 /root/anaconda-ks.cfg。下面是笔者安装Installation Server 时系统所产生的anaconda-ks.cfg，ip 为「192.168.0.254」，主机名称为「server.example.com」，套件选择为「全部安装」。 &lt;/p&gt;&lt;div class="codebox" id="rhescs1"&gt;&lt;p&gt;# Kickstart file automatically generated by anaconda.&lt;br /&gt;install&lt;br /&gt;lang en_US.UTF-8&lt;br /&gt;langsupport --default en_US.UTF-8 zh_TW.Big5 en_US.UTF-8&lt;br /&gt;keyboard us&lt;br /&gt;mouse genericwheelps/2 --device psaux&lt;br /&gt;xconfig --card &amp;quot;ATI Mach64 3D Rage IIC&amp;quot; --videoram 4096 --hsync 31-60&lt;br /&gt;--vsync 56-75 --resolution 1024x768 --depth 24 --startxonboot&lt;br /&gt;--defaultdesktop gnome&lt;br /&gt;network --device eth0 --bootproto static --ip 192.168.0.254 --netmask&lt;br /&gt;255.255.255.0 --gateway 192.168.0.254 --nameserver 192.168.0.254&lt;br /&gt;--hostname server.example.com&lt;br /&gt;rootpw --iscrypted $1$HBU/aBDd$/LetXZ5O.Em6gkA4bl5ZS.&lt;br /&gt;firewall --disabled&lt;br /&gt;authconfig --enableshadow --enablemd5&lt;br /&gt;timezone Asia/Taipei&lt;br /&gt;bootloader --location=mbr&lt;br /&gt;# The following is the partition information you requested&lt;br /&gt;# Note that any partitions you deleted are not expressed&lt;br /&gt;# here so unless you clear all partitions first, this is&lt;br /&gt;# not guaranteed to work&lt;br /&gt;#clearpart –all&lt;br /&gt;#part /boot --fstype ext3 --onpart hda1&lt;br /&gt;#part / --fstype ext3 --onpart hda2&lt;br /&gt;#part swap --onpart hda3&lt;br /&gt;#part /home --fstype ext3 --onpart hda5&lt;/p&gt;&lt;p&gt;%packages&lt;br /&gt;@ everything&lt;br /&gt;kernel&lt;br /&gt;grub&lt;br /&gt;%post &lt;/p&gt;&lt;/div&gt;&lt;p&gt;ks.cfg 的语法稍后再做介绍，我们可以修改 /root/anaconda-ks.cfg 来产生符合需求的ks.cfg。不过可不是一件容易的事，笔者介绍另一个图形工具「ksconfig」，利用它来产生ks.cfg&lt;/p&gt;&lt;p&gt;&lt;span class="ttitle"&gt;ksconfig 图形工具&lt;/span&gt;&lt;/p&gt;&lt;p&gt;激活Kickstart 设置程序，请选择主选单-&amp;gt;系统工具-&amp;gt;Kickstart。或直接在终端窗口键入「ksconfig」，Kickstart 设置程序窗口画面如图1。 &lt;/p&gt;&lt;p&gt;&lt;img height="452" src="http://www.linux.gov.cn/himages/Linux/redhat/kickstart1.png" width="500" /&gt;&lt;/p&gt;&lt;p&gt;图1： Kickstart 基本信息设置画面&lt;/p&gt;&lt;p class="ttitle"&gt;● 基本信息设置&lt;/p&gt;&lt;p&gt;Kickstart 右边第一个设置项目为「基本信息设置」。而在左边的窗口是列出其它信息的画面选项。点选在左边的项目相对应的设置画面将会展开在右边的Kickstart 设置程序窗口。基本设置字段有：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;语言：点选右边的下拉式选单中的系统默认语言。 &lt;/li&gt;&lt;li&gt;键盘：在右边的下拉式选单中选取用于系统上的键盘类型。 &lt;/li&gt;&lt;li&gt;鼠标：在右边的下拉式选单中选取用于系统上的鼠标形式。假如你的鼠标是两键式鼠标并且想仿真三键式鼠标，请勾选「仿真三键式鼠标」来摸拟。 &lt;/li&gt;&lt;li&gt;时区：右边的下拉式选单中选取系统所在时区的时间。 &lt;/li&gt;&lt;li&gt;root 密码：输入系统管理者root 密码。请注意默认值是以加密形式储存密码。 &lt;/li&gt;&lt;li&gt;语系支持：如果你想安装额外的语系在你的系统之上可勾选语系清单。 &lt;/li&gt;&lt;li&gt;安装完成后重新启动：默认是安装完成后重新启动。 &lt;/li&gt;&lt;li&gt;在文字模式执行安装：若移除此勾选项为系统默认的图型模式安装。 &lt;/li&gt;&lt;li&gt;在互动模式执行安装：假如你想使用交互式模式来安装，请勾选此项。这个方法可以让你及时了解你所勾选的安装画面。你需要点选下一步继续下一个画面。 &lt;/li&gt;&lt;/ul&gt;&lt;p class="ttitle"&gt;安装方法&lt;/p&gt;&lt;p&gt;&lt;img height="452" src="http://www.linux.gov.cn/himages/Linux/redhat/kickstart2.png" width="500" /&gt;&lt;/p&gt;&lt;p&gt;图2：ksconfig 「安装方式」画面&lt;/p&gt;&lt;p&gt;在安装画面中，你可以选取将要执行的安装种类。你可以选择一个全新安装或者点选单选按扭来选取升级。 &lt;/p&gt;&lt;p&gt;你有几种安装媒体可做选择。系统默认是选取CD-ROM。其它的选项尚有： &lt;/p&gt;&lt;ul&gt;&lt;li&gt;NFS：假如你选择此种方式，将会有两个额外的字段显示出要求你输入NFS服务器名称及使用NFS 服务器的目录位置。配合Installation Server 这里应填入，NFS 服务器「192.168.0.254」，NFS 目录「/var/ftp/pub」 &lt;/li&gt;&lt;li&gt;FTP：假如你选择此种方式，将会有四个额外的字段显示出来。你必需输入FTP 服务器名称（192.168.0.254）和使用FTP 服务器的目录位置（/pub）。你也有机会去提供一组FTP 使用者名称和密码按照所点选的对话框并输入适合的信息。 &lt;/li&gt;&lt;li&gt;HTTP：假如你选择此种方式，将会有两个额外的字段显示出需要你输入HTTP 服务器名称（192.168.0.254）和使用HTTP 服务器的所在目录（/pub）。 &lt;/li&gt;&lt;li&gt;硬盘：假如你选择此种方式，将会有两个额外的字段显示出要求你输入硬盘分区及使用硬盘目录的位置。 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;「开机管理程序选项」及「分区信息」就根据读者自己的需求去设置，「网络信息设置部份」记得设置成DHCP，这样才可让不同的机器均可使用这个配置文件。 &lt;/p&gt;&lt;p&gt;&lt;img height="454" src="http://www.linux.gov.cn/himages/Linux/redhat/kickstart3.png" width="500" /&gt;&lt;/p&gt;&lt;p&gt;图3：ksconfig 「网络信息」画面&lt;/p&gt;&lt;p&gt;「选取套件」这个部份，你能选取你想要安装的套件到你的系统上。请点选套件名称前的复选框。默认是安装“自动解决相依性问题”，假如你有额外需求可安装额外套件。如果勾选此项，系统安装套件时如遇到相依性问题并不会自动安装跟此套件相依的套件，如此一来可能造成此套件无法正常运作，所有最好勾选「自动解决相依性」。 &lt;/p&gt;&lt;p&gt;&lt;img height="448" src="http://www.linux.gov.cn/himages/Linux/redhat/kickstart4.png" width="500" /&gt;&lt;/p&gt;&lt;p&gt;图4：「选取套件」画面&lt;/p&gt;&lt;p&gt;假如你想在安装结束之后执行命令在你的系统上，你可以输入命令在画面中指定的区域内。例如笔者希望安装结束后设置 /etc/resolv.conf ，所以在此区域输入：&lt;/p&gt;&lt;div class="codebox" id="rpmlvm2"&gt;echo “nameserver 192.168.0.254” &amp;gt;&amp;gt; /etc/resolv.conf&lt;/div&gt;&lt;p&gt;&lt;img height="454" src="http://www.linux.gov.cn/himages/Linux/redhat/kickstart5.png" width="500" /&gt;&lt;/p&gt;&lt;p&gt;图5：后续安装程序代码画面&lt;/p&gt;&lt;p&gt;最后选择「文件」-&amp;gt; 「储存文件」默认文件名便是ks.cfg。笔者所产生的ks.cfg内容如下：&lt;/p&gt;&lt;div class="codebox" id="rpmlvm2"&gt;&lt;p&gt;#Generated by Kickstart Configurator&lt;br /&gt;#System language&lt;br /&gt;lang zh_TW.Big5&lt;br /&gt;#Language modules to install&lt;br /&gt;langsupport en_US --default=zh_TW.Big5&lt;br /&gt;#System keyboard&lt;br /&gt;keyboard us&lt;br /&gt;#System mouse&lt;br /&gt;mouse generic3ps/2&lt;br /&gt;#Sytem timezone&lt;br /&gt;timezone Asia/Taipei&lt;br /&gt;#Root password&lt;br /&gt;rootpw --iscrypted $1$f97d093B$OY9uvHS/HvLNlC4m8xeTB1&lt;br /&gt;#Reboot after installation&lt;br /&gt;reboot&lt;br /&gt;#Use text mode install&lt;br /&gt;text&lt;br /&gt;#Install Red Hat Linux instead of upgrade&lt;br /&gt;install&lt;br /&gt;#Use NFS installation Media&lt;br /&gt;nfs --server=192.168.0.254 --dir=/var/ftp/pub&lt;br /&gt;#System bootloader configuration&lt;br /&gt;bootloader --location=mbr&lt;br /&gt;#Clear the Master Boot Record&lt;br /&gt;zerombr yes&lt;br /&gt;#Partition clearing information&lt;br /&gt;clearpart --all --initlabel&lt;br /&gt;#Disk partitioning information&lt;br /&gt;part /boot --fstype ext3 --size 256&lt;br /&gt;part / --fstype ext3 --size 6000&lt;br /&gt;part swap --size 512&lt;br /&gt;#System authorization infomation&lt;br /&gt;auth --useshadow --enablemd5&lt;br /&gt;#Network information&lt;br /&gt;network --bootproto=dhcp --device=eth0&lt;br /&gt;#Firewall configuration&lt;br /&gt;firewall --disabled&lt;br /&gt;#Do not configure XWindows&lt;br /&gt;skipx&lt;br /&gt;#Package install information&lt;br /&gt;%packages --resolvedeps&lt;br /&gt;@ X Window System&lt;br /&gt;@ GNOME Desktop Environment&lt;br /&gt;@ Editors&lt;br /&gt;@ Server Configuration Tools&lt;br /&gt;@ Web Server&lt;br /&gt;@ Mail Server&lt;br /&gt;@ Windows File Server&lt;br /&gt;@ DNS Name Server&lt;br /&gt;@ FTP Server&lt;br /&gt;@ Network Servers&lt;br /&gt;%post&lt;br /&gt;echo &amp;quot;nameserver 192.168.0.254&amp;quot; &amp;gt;&amp;gt; /etc/resolv.conf&lt;/p&gt;&lt;/div&gt;&lt;p class="ttitle"&gt;kickstart 语法&lt;/p&gt;&lt;p&gt;接下来探讨ks.cfg 的相关参数，这些参数笔者将依上述ks,cfg 出现的先后顺序来讨论，有些参数并不是一定要设置。完整的kickstart 参数意义可参考下列网址。&lt;/p&gt;&lt;p&gt;http://www.redhat.com/docs/manuals/enterprise/RHEL-3-Manual/sysadmin-guide/s1-kickstart2-options.html&lt;/p&gt;ks.cfg 文件由三个部份皆组成： &lt;ul&gt;&lt;li&gt;command 区段—此部份包含了必要安装选项 &lt;/li&gt;&lt;li&gt;packages 区段—列出欲安装套件 &lt;/li&gt;&lt;li&gt;％pre and %post 区段 &lt;/li&gt;&lt;li&gt;command 区段 &lt;p&gt;■lang(必要)：安装时所使用的语言&lt;br /&gt;例如：安装过程中选用中文语言，lang zh_TW.Big5&lt;br /&gt;■langsupport (必要)：指定系统使用的语言。假如你安装一至多国语系，你必需使用默认选项去指定默认语言。语法为：&lt;br /&gt;例如：langsupport --default en_US.UTF-8 zh_TW.Big5 en_US.UTF-8&lt;br /&gt;■键盘(必要)：设置系统键盘的种类。语法为：keyboard us&lt;br /&gt;■鼠标(必要)：设置鼠标。语法为：&lt;br /&gt;mouse- -device=ttvS0(鼠标识别装置位置)- - emulthree(仿真三个按键)generics/2(定义鼠标种类)&lt;br /&gt;■timezone(必要) 设置系统时区。&lt;br /&gt;timezone Asia/Taipei (指定你的时区位置)&lt;br /&gt;■设置系统键盘的种类。语法为：keyboard us&lt;br /&gt;■鼠标(必要)：设置鼠标。语法为：&lt;br /&gt;mouse- -device=ttvS0(鼠标识别装置位置)- - emulthree(仿真三个按键)generics/2(定义鼠标种类)&lt;br /&gt;■xconfig(非必要)：在安装过程中手动设置X，假如你不想安装X，你不应该使用此选项。命令的格式为：&lt;br /&gt;■xconfig - - card(显示卡类别)- - videoram(指定显示卡记忆容量)- - hsync(指定屏幕水平扫描频率)- - vsync(指定屏幕垂直扫描频率)- - resolution(指定屏幕分辨率) - - depth(指定X 窗口系统彩度)- - startxonboot (假如你想在系统开机时激活X 时使用)- - defaultdesktop gnome(或kde)(指定默认桌面)。&lt;br /&gt;■install (非必要)：告知系统安装一个新的安装。这是默认模式，因此一个新的安装不需再选用这个命令。接着您必需指定安装方式，可以是cdrom、harddrive、nfs 或url。&lt;br /&gt;■cdrom&lt;br /&gt;■harddrive—partition=your partition –dir=/your directory path&lt;br /&gt;-- partition = 来源分区&lt;br /&gt;-- dir = Red Hat 子目录&lt;br /&gt;(请确定你所键入来源分区和子目录信息的正确性)。&lt;br /&gt;■nfs – server—your server –dir=/your directory path&lt;br /&gt;-- server = 指定安装来源服务器&lt;br /&gt;-- dir = Red Hat 子目录&lt;br /&gt;(请确定你所键入来源分区和子目录信息的正确性)。&lt;br /&gt;■url – url http://your server/dir&lt;br /&gt;使用HTTP 进行安装&lt;br /&gt;■url – url ftp://your username:password@your server/dir&lt;br /&gt;使用FTP 进行安装&lt;br /&gt;■rootpw (必要) 设置一组系统root 密码。&lt;br /&gt;rootpw - - iscrypted (表示密码已被加密) password&lt;br /&gt;■firewall(非必要) 提供安全性等级来保护系统。&lt;br /&gt;■authconfig (必要) 设置系统认证选项。命令格式：&lt;br /&gt;- -enablemd5 (使用md5 编码使用者密码)&lt;br /&gt;- -enableshadow (使用shadow 密码)&lt;br /&gt;■bootloader (必要) 指定开机管理程序的位置和传递任何kernel 选项。默认开机管理程序为GRUB，但是你也能选择LILO 开机管理程序来取代GRUB。命令格式为：&lt;br /&gt;- - location=mbr (指定开机管理程序的位置)&lt;br /&gt;- -append=(指定要传递的核心参数)。&lt;br /&gt;- -useLilo (使用LILO 为开机管理程序)。&lt;br /&gt;■clearpart (非必要)告知系统移除系统上的分区。你可以使用clearpart 移除Linux 分区以及移除所有的分区，或者你也能指定你想要移除分区的磁碟机。命令格式为：&lt;br /&gt;-- linux (移除所有Linux 分区)&lt;br /&gt;- - all (移除系统上所有的分区)&lt;br /&gt;-- drives = (指定要移除分区的磁盘驱动器)&lt;br /&gt;■Part (必要) 安装时是必要的，升级时请忽略。使用这个命令你能为系统建立分区。 &lt;/p&gt;&lt;/li&gt;&lt;li&gt;package 区段 &lt;p&gt;安装一个新的系统，你必需选择你想安装的套件。选择欲安装的套件是使用%packages 命令。套件可分为单一套件或者是套件组。你能在第一片Red Hat安装光盘下的/base/comps.xml 寻找群组套件清单。 &lt;/p&gt;&lt;p&gt;通常，只需列出套件组不需要列出单一套件。注意！默认之下core 和base 群组是被选取的，所以也不需要在 %packages 这个区段下去指定它们。&lt;/p&gt;&lt;p&gt;如同利用ksconfig 所产生出来的ks.cfg %packages 区段中套件组是一行指定一个，以＠节号开头，后面加上一格空白接下来是完整群组名称就如同comps.xml 文件所指定。如果个别单一套件并列出该单一套件名，不加上额外的字符。&lt;/p&gt;&lt;p&gt;套件组是一行指定一个，以＠节号开头，后面加上一格空白接下来是完整群组名称就如同comps.xml 文件所指定。如果是个别单一套件则列出该单一套件名，前面不需加上额外的字符。&lt;/p&gt;%package 有三个选项可以设置： &lt;p&gt;◆- -resolvedeps&lt;br /&gt;决解自动相依性问题及安装套件。建意选项，在安装中由于没使用自动决解相依性，若有相依性问题可能会造成中止安装并且做提示响应。&lt;br /&gt;◆- -ignoredeps&lt;br /&gt;你选择安装套某套件但乎略它的相依性，可能造成此套件无法运作，尤其是此套件需要其它相依的套件。&lt;br /&gt;◆—ignoremissing&lt;br /&gt;标示忽视安装遗失套件及群组并且也不做提示响应。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;％pre and %post 区段 &lt;p&gt;%pre 区段内可填入在开始安装操作系统需要先执行的工作。%post 命令传递到系统上执行必须在Kickstart 安装完成后。能有效的执行命令去安装其它的软件或者设置系统信息。 &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="ttitle"&gt;实战演练二：利用ks.cfg 自动安装系统&lt;/p&gt;&lt;p class="ttitle"&gt;Floppy + RHEL CD1&lt;/p&gt;&lt;p&gt;1. 将之前利用ksconfig 所产生的ks.cfg copy 至磁盘上&lt;/p&gt;&lt;div class="codebox" id="rpmlvm2"&gt;&lt;p&gt;#mount /mnt/cdrom&lt;br /&gt;#cp ks.cfg /mnt/floppy&lt;br /&gt;#umount /mnt/floppy &lt;/p&gt;&lt;/div&gt;&lt;p&gt;2. 至欲安装Linux 的机器上，放入磁盘并置入RHEL ES 第一片光盘，然后利用光盘开机，出现「boot:」提示符号时，键入：&lt;/p&gt;&lt;div class="codebox" id="rpmlvm2"&gt;boot: linux ks=floppy&lt;/div&gt;&lt;p&gt;告诉安装程序ks.cfg 位于磁盘上，此时安装程序便会根据ks.cfg 的内容自动安装Linux。 &lt;/p&gt;&lt;p class="ttitle"&gt;kickstart CD&lt;/p&gt;&lt;p&gt;经过上述的练习，读者一定会觉得不甚方便，除了需要一片磁盘外还得放入RHEL 第一张光盘。难道没有办法整合至一张光盘上吗？ &lt;/p&gt;&lt;p class="ttitle"&gt;制作这整合光盘片的操作步骤如下： &lt;/p&gt;&lt;p&gt;1.放入Red Hat Linux 第一片安装光盘片到光驱中。在命令提示列下输入挂载光驱命令：&lt;/p&gt;&lt;div class="codebox" id="rpmlvm2"&gt;# mount /mnt/cdrom&lt;/div&gt;&lt;p&gt;2.从第一片安装光盘片中复制 isolinux 目录到你的硬盘上。你可以先行建立暂存目录来存放islolinux 的目录。笔者建立了一个 /root/tmp。&lt;/p&gt;&lt;div class="codebox" id="rpmlvm2"&gt;&lt;p&gt;#mkdir /root/tmp&lt;br /&gt;#cp -r /mnt/cdrom/isolinux/ /root/tmp/ &lt;/p&gt;&lt;/div&gt;&lt;p&gt;3.将原先所产生的ks.cfg 文件复制到此张开机光盘片上，请将ks.cfg 文件复制到您先前在本机硬盘上所建立的暂存目录 /isolinux 之下。命令为：&lt;/p&gt;&lt;div class="codebox" id="rpmlvm2"&gt;#cp /root/ks.cfg /root/tmp/isolinux/&lt;/div&gt;&lt;div class="codebox" id="rpmlvm2"&gt;&lt;p&gt;修改开机光盘的自动执行文件isolinux.cfg 指定ks.cfg 的所在。&lt;br /&gt;# vi /root/tmp/isolinux/isolinux.cfg &lt;/p&gt;&lt;/div&gt;&lt;p&gt;将前三行中的第一行default linux 改为default linux ks=cdrom，然后删除prompt 及timeout。&lt;/p&gt;&lt;div class="codebox" id="rpmlvm2"&gt;&lt;p&gt;default linux&lt;br /&gt;prompt 1&lt;br /&gt;timeout 600&lt;br /&gt;改为&lt;br /&gt;default linux ks=cdrom &lt;/p&gt;&lt;/div&gt;&lt;p&gt;4.使用这个命令来建立ISO 映像文件：&lt;/p&gt;&lt;div class="codebox" id="rpmlvm2"&gt;&lt;p&gt;# cd /root/tmp&lt;br /&gt;# mkisofs -o ks.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T isolinux/ （此命令应该输入在同一行）&lt;/p&gt;&lt;/div&gt;&lt;p&gt;5.最后一步骤是将您所建立的映像文件ks.iso 用烧录软件以「Burn Image」烧录映像文件的方式制作成光盘。&lt;/p&gt;&lt;p&gt;6.将这张整合的光盘放入机器中，由光盘开机，安装程序便会自动安装操作系统。&lt;/p&gt;&lt;p class="ttitle"&gt;后记&lt;/p&gt;如果把kickstart 的技术加上PXE 技术，那么就连光盘都不用制作。可直接利用网络开机就可自动安装操作系统。在实务上，kickstart 的运用不仅止于仅止于计算机教室，像Linux Cluster 丛集系统，一次需要上百台机器，其实笔者看过的解决方案其实骨子都离不开kickstart 的原理，所以其实kickstart 的应用是蛮多样化，其它的应用有待各位读者去发挥！&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-4468654169086513944?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/4468654169086513944/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/10/kickstart-linux.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/4468654169086513944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/4468654169086513944'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/10/kickstart-linux.html' title='用kickstart 自动安装Linux'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-3124684104000751880</id><published>2007-10-08T22:35:00.000+08:00</published><updated>2007-10-08T22:46:34.818+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='修車'/><title type='text'>修車</title><content type='html'>&lt;strong&gt;修車&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;承浩載我到還不錯的店叫做”千翔車業有限公司”&lt;br /&gt;&lt;br /&gt;在那換了～～&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;機油&lt;/li&gt;&lt;li&gt;空氣濾清器&lt;/li&gt;&lt;li&gt;傳動小海棉&lt;/li&gt;&lt;li&gt;後面輪胎&lt;/li&gt;&lt;li&gt;後面剎車皮&lt;/li&gt;&lt;li&gt;前輪培林&lt;/li&gt;&lt;li&gt;左拉捍&lt;/li&gt;&lt;li&gt;左右後視鏡&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-3124684104000751880?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/3124684104000751880/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/10/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/3124684104000751880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/3124684104000751880'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/10/blog-post.html' title='修車'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-8569723292852815324</id><published>2007-10-06T21:22:00.001+08:00</published><updated>2007-10-06T21:24:50.584+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Linux作業系統中記憶體buffer和cache的區別</title><content type='html'>&lt;span class="a14c" id="zoom"&gt; &lt;p style="TEXT-INDENT: 2em"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;font color="#ff0000"&gt;Free&lt;br /&gt;&lt;/font&gt;　　free 命令相對於top 提供了更簡潔的查看系統記憶體使用情況：&lt;/font&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　$ free&lt;br /&gt;　　total used free shared buffers cachedMem: 255268 238332 16936 0 85540 126384-/+ buffers/cache: 26408 228860Swap: 265000 0 265000&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　&lt;font color="#ff0000"&gt;Mem：表示物理記憶體統計&lt;/font&gt; &lt;br /&gt;　　-/+ buffers/cached：表示物理記憶體的緩存統計 &lt;br /&gt;　　Swap：表示硬盤上交換分區的使用情況，這裡我們不去關心。&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　系統的總物理記憶體：255268Kb（256M），但系統當前真正可用的記憶體b並不是第一行free 標記的 16936Kb，它僅代表未被分配的記憶體。&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　我們使用total1、used1、free1、used2、free2 等名稱來代表上面統計數據的各值，1、2 分別代表第一行和第二行的數據。&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　total1：表示物理記憶體總量。 &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　used1：表示總計分配給緩存（包含buffers 與cache ）使用的數量，但其中可能部分緩存並未實際使用。 &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　free1：未被分配的記憶體。 &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　shared1：共用記憶體，一般系統不會用到，這裡也不討論。 &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　buffers1：系統分配但未被使用的buffers 數量。 &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　cached1：系統分配但未被使用的cache 數量。buffer 與cache 的區別見後面。 &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　used2：實際使用的buffers 與cache 總量，也是實際使用的記憶體總量。 &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　free2：未被使用的buffers 與cache 和未被分配的記憶體之和，這就是系統當前實際可用記憶體。&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　可以整理出如下等式：&lt;br /&gt;　　total1 = used1 + free1total1 = used2 + free2used1 = buffers1 + cached1 + used2free2 = buffers1 + cached1 + free1&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　buffer 與cache 的區別&lt;br /&gt;　　A buffer is something that has yet to be &amp;quot;written&amp;quot; to disk. A cache is something that has been &amp;quot;read&amp;quot; from the disk and stored for later use.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　&lt;font color="#ff0000"&gt;更詳細的解釋參考：Difference Between Buffer and Cache&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　對於共用記憶體（Shared memory），主要用於在UNIX 環境下不同進程之間共用數據，是進程間通信的一種方法，一般的應用程式不會申請使用共用記憶體，筆者也沒有去驗證共用記憶體對上面等式的影響。如果你有興趣，請參考：What is Shared Memory?&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　cache 和 buffer的區別：&lt;br /&gt;　　Cache：高速緩存，是位於CPU與主記憶體間的一種容量較小但速度很高的記憶體。由於CPU的速度遠高於主記憶體，CPU直接從記憶體中存取數據要等待一定時間週期，Cache中保存著CPU剛用過或迴圈使用的一部分數據，當CPU再次使用該部分數據時可從Cache中直接調用,這樣就減少了CPU的等待時間,提高了系統的效率。Cache又分為一級Cache(L1 Cache)和二級Cache(L2 Cache)，L1 Cache集成在CPU內部，L2 Cache早期一般是焊在主板上,現在也都集成在CPU內部，常見的容量有256KB或512KB L2 Cache。&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　Buffer：緩衝區，一個用於存儲速度不同步的設備或優先級不同的設備之間傳輸數據的區域。通過緩衝區，可以使進程之間的相互等待變少，從而使從速度慢的設備讀入數據時，速度快的設備的操作進程不發生間斷。&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　Free中的buffer和cache：（它們都是佔用記憶體）：&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　buffer : 作為buffer cache的記憶體，是塊設備的讀寫緩衝區&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　cache: 作為page cache的記憶體, 文件系統的cache&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;　　如果 cache 的值很大，說明cache住的文件數很多。如果頻繁訪問到的文件都能被cache住，那麼磁片的讀IO bi會非常小。&lt;/font&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-8569723292852815324?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/8569723292852815324/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/10/linuxbuffercache.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/8569723292852815324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/8569723292852815324'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/10/linuxbuffercache.html' title='Linux作業系統中記憶體buffer和cache的區別'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-3198951383991809860</id><published>2007-10-06T21:22:00.000+08:00</published><updated>2007-10-06T21:24:02.104+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>實用技巧：Linux系統下VI命令快捷鍵集合</title><content type='html'>&lt;span class="a14c" id="zoom"&gt; &lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;游標控制命令 &lt;/b&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;命令 游標移動 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;h或^h 向左移一個字符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;j或^j或^n 向下移一行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;k或^p 向上移一行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;l或空格 向右移一個字符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;G 移到文件的最後一行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;nG 移到文件的第n行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;w 移到下一個字的開頭 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;W 移到下一個字的開頭，忽略標點符號 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;b 移到前一個字的開頭 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;B 移到前一個字的開頭，忽略標點符號 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;L 移到螢幕的最後一行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;M 移到螢幕的中間一行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;H 移到螢幕的第一行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;e 移到下一個字的結尾 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;E 移到下一個字的結尾，忽略標點符號 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;( 移到句子的開頭 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;) 移到句子的結尾 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;{ 移到段落的開頭 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;} 移到下一個段落的開頭 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;0或| 移到當前行的第一列 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;n| 移到當前行的第n列 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;^ 移到當前行的第一個非空字符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;$ 移到當前行的最後一個字符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;+或return 移到下一行的第一個字符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;- 移到前一行的第一個非空字符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;在vi中添加文本 &lt;/b&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;命令 插入動作 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;a 在游標後插入文本 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;A 在當前行插入文本 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;i 在游標前插入文本 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;I 在當前行前插入文本 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;o 在當前行的下邊插入新行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;O 在當前行的上邊插入新行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:r file 讀入文件file內容，並插在當前行後 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:nr file 讀入文件file內容，並插在第n行後 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;escape 回到命令模式 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;^v char 插入時忽略char的指定意義，這是為了插入特殊字符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;在vi中刪除文本 &lt;/b&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;命令 刪除操作 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;x 刪除游標處的字符，可以在x前加上需要刪除的字符數目 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;nx 從當前游標處往後刪除n個字符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;X 刪除游標前的字符，可以在X前加上需要刪除的字符數目 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;nX 從當前游標處往前刪除n個字符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;dw 刪至下一個字的開頭 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;ndw 從當前游標處往後刪除n個字 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;dG 刪除行，直到文件結束 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;dd 刪除整行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;ndd 從當前行開始往後刪除 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;db 刪除游標前面的字 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;ndb 從當前行開始往前刪除n字 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:n,md 從第m行開始往前刪除n行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;d或d$ 從游標處刪除到行尾 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;dcursor_command 刪除至游標命令處，如dG將從當產膽行刪除至文件的末尾 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;^h或backspace 插入時，刪除前面的字符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;^w 插入時，刪除前面的字 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;修改vi文本 &lt;/b&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;每個命令前面的數字表示該命令重復的次數 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;命令 替換操作 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;rchar 用char替換當前字符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;R text escape 用text替換當前字符直到換下Esc鍵 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;stext escape 用text代替當前字符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;S或cctext escape 用text代替整行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;cwtext escape 將當前字改為text &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Ctext escape 將當前行餘下的改為text &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;cG escape 修改至文件的末尾 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;ccursor_cmd text escape 從當前位置處到游標命令位置處都改為text &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;在vi中搜尋與替換 &lt;/b&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;命令 搜尋與替換操作 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;/text 在文件中向前搜尋text &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;?text 在文件中向後搜尋text &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;n 在同一方向重復搜尋 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;N 在相反方向重復搜尋 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;ftext 在當前行向前搜尋text &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Ftext 在當前行向後搜尋text &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;ttext 在當前行向前搜尋text，並將游標定位在text的第一個字符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Ttext 在當前行向後搜尋text，並將游標定位在text的第一個字符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:set ic 搜尋時忽略大小寫 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:set noic 搜尋時對大小寫敏感 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:s/oldtext/newtext 用newtext替換oldtext &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:m,ns/oldtext/newtext 在m行通過n，用newtext替換oldtext &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;amp; 重復最後的:s命令 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:g/text1/s/text2/text3 搜尋包含text1的行，用text3替換text2 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:g/text/command 在所有包含text的行運行command所表示的命令 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:v/text/command 在所有不包含text的行運行command所表示的命令 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;在vi中複製文本 &lt;/b&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;命令 複製操作 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;yy 將當前行的內容放入臨時緩衝區 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;nyy 將n行的內容放入臨時緩衝區 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;p 將臨時緩衝區中的文本放入游標後 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;P 將臨時緩衝區中的文本放入游標前 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;quot;(a-z)nyy 複製n行放入名字為圓括弧內的可命名緩衝區，省略n表示當前行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;quot;(a-z)ndd 刪除n行放入名字為圓括弧內的可命名緩衝區，省略n表示當前行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;quot;(a-z)p 將名字為圓括弧的可命名緩衝區的內容放入當前行後 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;quot;(a-z)P 將名字為圓括弧的可命名緩衝區的內容放入當前行前 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;在vi中撤消與重復 &lt;/b&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;命令 撤消操作 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;u 撤消最後一次修改 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;U 撤消當前行的所有修改 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;. 重復最後一次修改 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;, 以相反的方向重復前面的f、F、t或T搜尋命令 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;; 重復前面的f、F、t或T搜尋命令 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;quot;np 取回最後第n次的刪除(緩衝區中存有一定次數的刪除內容，一般為9) &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;n 重復前面的/或?搜尋命令 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;N 以相反方向重復前面的/或?命令 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;保存文本和退出vi &lt;/b&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;命令 保存和/或退出操作 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:w 保存文件但不退出vi &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:w file 將修改保存在file中但不退出vi &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:wq或ZZ或:x 保存文件並退出vi &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:q! 不保存文件，退出vi &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:e! 放棄所有修改，從上次保存文件開始再編輯 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;vi中的選項 &lt;/b&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;選項 作用 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:set all 列印所有選項 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:set nooption 關閉option選項 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:set nu 每行前列印行號 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:set showmode 顯示是輸入模式還是替換模式 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:set noic 搜尋時忽略大小寫 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:set list 顯示製表符(^I)和行尾符號 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:set ts=8 為文本輸入設置tab stops &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:set window=n 設置文本窗口顯示n行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;vi的狀態 &lt;/b&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;選項 作用 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:.= 列印當前行的行號 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:= 列印文件中的行數 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;^g 顯示文件名、當前的行號、文件的總行數和文件位置的百分比 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:l 使用字母&amp;quot;l&amp;quot;來顯示許多的特殊字符，如製表符和換行符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;在文本中定位段落和放置標記 &lt;/b&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;選項 作用 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;{ 在第一列插入{來定義一個段落 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[[ 回到段落的開頭處 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;]] 向前移到下一個段落的開頭處 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;m(a-z) 用一個字母來標記當前位置，如用mz表示標記z &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;'(a-z) 將游標移動到指定的標記，如用'z表示移動到z &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;在vi中連接行 &lt;/b&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;選項 作用 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;J 將下一行連接到當前行的末尾 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;nJ 連接後面n行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;游標放置與螢幕調整 &lt;/b&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;選項 作用 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;H 將游標移動到螢幕的頂行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;nH 將游標移動到螢幕頂行下的第n行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;M 將游標移動到螢幕的中間 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;L 將游標移動到螢幕的底行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;nL 將游標移動到螢幕底行上的第n行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;^e(ctrl+e) 將螢幕上滾一行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;^y 將螢幕下滾一行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;^u 將螢幕上滾半頁 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;^d 將螢幕下滾半頁 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;^b 將螢幕上滾一頁 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;^f 將螢幕下滾一頁 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;^l 重繪螢幕 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;z-return 將當前行置為螢幕的頂行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;nz-return 將當前行下的第n行置為螢幕的頂行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;z. 將當前行置為螢幕的中央 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;nz. 將當前行上的第n行置為螢幕的中央 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;z- 將當前行置為螢幕的底行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;nz- 將當前行上的第n行置為螢幕的底行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;vi中的shell轉義命令 &lt;/b&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;選項 作用 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:!command 執行shell的command命令，如:!ls &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:!! 執行前一個shell命令 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:r!command 讀取command命令的輸入並插入，如:r!ls會先執行ls，然後讀入內容 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:w!command 將當前已編輯文件作為command命令的標準輸入並執行command命令，如:w!grep all &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:cd directory 將當前工作目錄更改為directory所表示的目錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:sh 將啟動一個子shell，使用^d(ctrl+d)返回vi &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:so file 在shell程式file中讀入和執行命令 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;vi中的宏與縮寫 &lt;/b&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;(避免使用控制鍵和符號，不要使用字符K、V、g、q、v、*、=和功能鍵) &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;選項 作用 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:map key command_seq 定義一個鍵來運行command_seq，如:map e ea，無論什麼時候都可以e移到一個字的末尾來追加文本 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:map 在狀態行顯示所有已定義的宏 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:umap key 刪除該鍵的宏 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:ab string1 string2 定義一個縮寫，使得當插入string1時，用string2替換string1。當要插入文本時，鍵入string1然後按Esc鍵，系統就插入了string2 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:ab 顯示所有縮寫 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:una string 取消string的縮寫 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;在vi中縮進文本 &lt;/b&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;選項 作用 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;^i(ctrl+i)或tab 插入文本時，插入移動的寬度，移動寬度是事先定義好的 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:set ai 打開自動縮進 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:set sw=n 將移動寬度設置為n個字符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;n&amp;lt;&amp;lt; 使n行都向左移動一個寬度 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;n&amp;gt;&amp;gt; 使n行都向右移動一個寬度，例如3&amp;gt;&amp;gt;就將接下來的三行每行都向右移動一個移動寬度 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;1.編輯模式: 插入/替換 （按INSERT鍵切換） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2.[ESC] 指令模式 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;3.輸入模式 將在指令模式下輸入 a &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;新增（a,A） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;a:從游標所在位置後面開始新增資料，游標後的資料隨新增資料向後移動。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;A:從游標所在列最後面的地方開始新增資料。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;插入（i,I） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;i:從游標所在位置前面開始插入資料，游標後的資料隨新增資料向後移動。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;I:從游標所在列的第一個非空白字元前面開始插入資料。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;開始（o,O） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;o:在游標所在列下新增一列並進入輸入模式。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;O:在游標所在列上方新增一列並進入輸入模式。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;4.存盤/退出 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[ESC] :wq //存盤退出 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:w! //存盤繼續 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:q //退出 （源文件未被編輯過可用） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;:q! //強制退出 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;5.刪除與改修 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[ESC] x //刪除游標所在字符 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;dd //刪除游標所在列。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;r //修改游標所在字元，r後接著要修正的字符。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;R //進入取替換狀態。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;s //刪除游標所在字元，並進入輸入模式。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;S //刪除游標所在的列，並進入輸入模式。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;6.恢復 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[ESC] u //可以恢復被刪除的文字。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;U //可以恢復游標所在列的所有改變。 &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-3198951383991809860?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/3198951383991809860/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/10/linuxvi.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/3198951383991809860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/3198951383991809860'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/10/linuxvi.html' title='實用技巧：Linux系統下VI命令快捷鍵集合'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-3731471057196282537</id><published>2007-09-30T11:56:00.001+08:00</published><updated>2007-09-30T11:56:47.386+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Ubuntu Linux系統下的Sudo簡要配置實例</title><content type='html'>&lt;span class="a14c" id="zoom"&gt; &lt;p style="TEXT-INDENT: 2em"&gt;以下是配置過程: &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Sudo 是一個允許系統管理員授權讓普通用戶執行部分或全部root命令的工具。這樣可以減少root登陸提高系統安全性。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;Sudo特點：&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;1.可以限制特定的用戶在特定的主機上運行指定的命令 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2.有非常詳細的日誌紀錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;3.sudo使用時間戳文件來執行類似&amp;quot;檢票&amp;quot;系統。當用戶使用sudo並且輸入密碼後，用戶默認獲得了一張存活期為5分鐘的票(這個數值可以在編譯的時候更改)，超過5分鐘不用的話就需要重新輸入密碼才能使用 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;sudo安裝過程：一般系統都默認有安裝 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;配置文件/etc/sudoers：&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;以下簡略介紹該文件的配置項(root使用visudo編輯該文件) &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;第一部分：# Host alias specification(主機別名定義，用於定義多臺住機) &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;格式：Host_Alias SERVER = 192.168.0.1/255.255.255.0 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Host_Alias SERVER1 = 172.17.1.1 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;第二部分：# User alias specification(用戶別名定義，用於定義多組用戶) &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;格式：User_Alias ADMIN = test,jack,tom &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;User_Alias TEST = user1 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;第三部分：# Cmnd alias specification (命令別名定義，定義用戶執行命令列表) &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;格式：Cmnd_Alias CAT = /bin/cat /etc/sudoers &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Cmnd_Alias Ls = /bin/ls /root &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;第四部分：# Override built in defaults(增加日誌紀錄功能) &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Defaults@SERVER log_host, logfile=/var/log/sudo.log &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;#為host alise裏的主機增加一個附加日誌，如果這個日誌需要保存多年，則可使用log_year，這樣在日誌紀錄的時候將紀錄詳細的年份 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;解釋配置實例：&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[test@redflag test]$ sudo cat /etc/sudoers &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# sudoers file. &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# This file MUST be edited with the 'visudo' command as root. &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# See the sudoers man page for the details on how to write a sudoers file. &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# Host alias specification &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Host_Alias SERVER = 172.17.196.10 #配置主機172.17.196.10別名SERVER;Host_Alias前不能有空格 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# User alias specification &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;User_Alias ADMIN = test,jack #配置用戶組ADMIN，所屬用戶test,jack &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# Cmnd alias specification &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Cmnd_Alias CT = /bin/cat /etc/sudoers,/bin/cat /etc/shadow &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Cmnd_Alias CA = /bin/ls /root &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;#配置命令別名CT，可以執行cat etc/sudoers,cat /etc/shadow 命令，CA可執行 la /root命令 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# Defaults specification &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# User privilege specification &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;root ALL=(ALL) ALL &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;test SERVER=CT,CA #配置test用戶可以在SERVER執行cat /etc/sudoers,/cat /etc/shadow，ls &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;/root 命令 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# test ALL=(ALL) NOPASSWD: ALL(配置test可以執行所有的root命令，且使用sudo時不需要輸入密碼) &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# Override built in defaults &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Defaults@SERVER log_host, logfile=/var/log/sudo.log &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;#配置日誌紀錄到主機SERVER的/var/log/sudo.log文件 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# Uncomment to allow people in group wheel to run all commands &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# %wheel ALL=(ALL) ALL &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# Same thing without a password &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# %wheel ALL=(ALL) NOPASSWD: ALL &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# Samples &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;# %users localhost=/sbin/shutdown -h now &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;日誌文件：&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;截取/var/log/sudo.log的一段紀錄如下： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Mar 3 15:13:14 : test : HOST=redflag : command not allowed ; TTY=pts/0 ; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;PWD=/home/test ; USER=root ; COMMAND=/bin/ls /root &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Mar 3 15:13:18 : test : HOST=redflag : command not allowed ; TTY=pts/0 ; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;PWD=/home/test ; USER=root ; COMMAND=/bin/su - &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Mar 3 15:13:56 : test : HOST=redflag : TTY=pts/0 ; PWD=/home/test ; USER=root ; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;COMMAND=/bin/cat /etc/sudoers &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Mar 3 15:14:10 : test : HOST=redflag : TTY=pts/0 ; PWD=/home/test ; USER=root ; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;COMMAND=/bin/ls /root &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Mar 3 16:27:30 : test : HOST=redflag : TTY=pts/0 ; PWD=/home/test ; USER=root ; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;COMMAND=/bin/cat /etc/sudoers &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Mar 3 16:29:47 : test : HOST=redflag : command not allowed ; TTY=pts/0 ; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;PWD=/home/test ; USER=root ; COMMAND=/bin/cat /var/log/sudo.log &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;配置中碰到的問題：&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;1、主機名配置錯誤導致sudo不能執行和日誌紀錄。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;錯誤提示：Sorry, user test is not allowed to execute '/bin/cat /etc/sudoers' as root on &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;localhost.localdomain. &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;解決：將其中的localhost改為真實主機名字或IP即可 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;test localhost=/sbin/cat /etc/sudoers &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Defaults@localhost log_host /var/log/sudo.log &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2、命令別名列表中命令錯誤導致sudo不能執行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;錯誤提示：[jackyu@localhost jackyu]$ sudo cat /etc/sudoers &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Sorry, user jackyu is not allowed to execute '/bin/cat /etc/sudoers' as root on &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;localhost.localdomain. &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;解決：由於在Cmnd alias裏定義的時候命令書寫有誤(Cmnd_Alias CAT = /bin/cat -n /etc/sudoers). &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;執行：sudo cat -n /etc/sudoers &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[注]：不管在Cmnd alias裏還是在# User privilege specification中指定命令，使用sudo運行時必須一摸一樣，否則將出錯。比如在Cmnd alias裏指定某用戶職能運行 /bin/cat /etc/sudoers,如果該用戶登錄後運行 sudo /cat -n /etc/sudoers將會出錯！ &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-3731471057196282537?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/3731471057196282537/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/ubuntu-linuxsudo.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/3731471057196282537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/3731471057196282537'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/ubuntu-linuxsudo.html' title='Ubuntu Linux系統下的Sudo簡要配置實例'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-6014431831486956400</id><published>2007-09-30T11:55:00.000+08:00</published><updated>2007-09-30T11:56:01.375+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>解析Linux文件系統的隱藏許可權</title><content type='html'>&lt;span class="a14c" id="zoom"&gt; &lt;p style="TEXT-INDENT: 2em"&gt;對於某些有特殊要求的檔案(如伺服器日誌)還可以追加隱藏許可權的設定。這些隱藏許可權包括： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Append only (a), &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;compressed (c), &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;no dump (d), &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;immutable (i), &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;data journalling (j), &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;secure deletion (s), &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;no tail-merging (t), &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;undeletable (u), &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;no atime updates (A), &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;synchronous directory updates (D), &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;synchronous updates (S), &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;and top of directory hierarchy (T). &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;大部分屬性在文件系統的安全管理方面起很重要的作用。關於以上屬性的詳細描述請兄弟們查閱chattr的線上幫助man，注意多數屬性須要由root來施加。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;通過chattr設置檔案的隱藏許可權。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[root]#chattr --help &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Usage: chattr [-RV] [-+=AacDdijsSu] [-v version] files... &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;參數或選項描述： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-R：遞歸處理，將指定目錄下的所有文件及子目錄一併處理。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-V：顯示詳細過程有版本編號。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-v：設定文件或目錄版本(version)。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;+ ：在原有參數設定基礎上，追加參數。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;- ：在原有參數設定基礎上，移除參數。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;= ：更新為指定參數設定。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;A：文件或目錄的 atime (access time)不可被修改(modified), 可以有效預防例如手提電腦磁片I/O錯誤的發生。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;S：硬盤I/O同步選項，功能類似sync。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;a：即append，設定該參數後，只能向文件中添加數據，而不能刪除，多用於伺服器日誌文 件安全，只有root才能設定這個屬性。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;c：即compresse，設定文件是否經壓縮後再存儲。讀取時需要經過自動解壓操作。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;d：即no dump，設定文件不能成為dump程式的備份目標。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;i：設定文件不能被刪除、改名、設定鏈結關係，同時不能寫入或新增內容。i參數對於文件 系統的安全設置有很大幫助。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;j：即journal，設定此參數使得當通過mount參數：data=ordered 或者 data=writeback 挂載的文件系統，文件在寫入時會先被記錄(在journal中)。如果filesystem被設定參數為 data=journal，則該參數自動失效。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;s：保密性地刪除文件或目錄，即硬盤空間被全部收回。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;u：與s相反，當設定為u時，數據內容其實還存在磁片中，可以用於undeletion. &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;各參數選項中常用到的是a和i。a選項強制只可添加不可刪除，多用於日誌系統的安全設定。而i是更為嚴格的安全設定，只有superuser (root) 或具有CAP_LINUX_IMMUTABLE處理能力（標識）的進程能夠施加該選項。我們來舉一個例子： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[root]#touch chattr_test &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[root]#chattr +i chattr_test &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[root]#rm chattr_test &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;rm: remove write-protected regular empty file `chattr_test`? y &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;rm: cannot remove `chattr_test`: Operation not permitted &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;呵，此時連root本身都不能直接進行刪除操作，必須先去除i設置後再刪除。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;chattr命令的線上幫助詳細描述了各參數選項的適用範圍及bug提示，使用時建議兄弟們仔細查閱。由於上述的這些屬性是隱藏的，查看時需要使用lsattr命令，以下簡述之。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;lsattr命令格式： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[root]#lsattr [-RVadlv] [files...] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;參數或選項說明： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-R：遞歸列示目錄及文件屬性。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-V：顯示程式版本號。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-a：顯示所有文件屬性，包括隱藏文件(.)、當時目錄(./)及上層目錄(../)。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-d：僅列示目錄屬性。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-l：（此參數目前沒有任何作用）。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-v：顯示文件或目錄版本。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;例： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[root]#chattr +aij lsattr_test &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[root]#lsattr &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;----ia---j--- ./lsattr_test &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;關於lsattr的用法，詳情請參閱線上幫助man。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-6014431831486956400?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/6014431831486956400/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux_454.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/6014431831486956400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/6014431831486956400'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux_454.html' title='解析Linux文件系統的隱藏許可權'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-1295316155754726639</id><published>2007-09-30T11:54:00.000+08:00</published><updated>2007-09-30T11:55:23.404+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Linux系統集群 安裝配置排錯的基本方法</title><content type='html'>&lt;table class="p11" cellspacing="0" cellpadding="0" width="560" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="WORD-WRAP: break-word" align="left"&gt;&lt;p class="a14c" style="TEXT-INDENT: 2em"&gt;&lt;span class="a14c" id="zoom"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;在提出問題前希望你看看下面的。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;1. 如果你僅僅是為了學習,沒有一個任務和一個工作等你解決，請直接跳到下面的3閱讀。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2. 如果你面對的是選擇要解決一個工作，一個任務，建議你強迫自己盡可能的做好以下的工作: &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;a. 仔細調查/記錄用作節點的伺服器和用作集群存儲的共用陣列的硬體型號，系統BIOS, HBA卡類型，HBA卡firmware版本, Linux的發行類型，版本，kernel的版本，kernel 的patch版本(errata或者service pack的版本). 磁片陣列櫃的類型，連接方式，上面的控制器的firmware版本，數量，冗余方式。 伺服器和存儲之間連接的類型，數量，通路上的額外冗余要求。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;b. 按照從a得到的資訊，到硬體廠商的站點上，核對和下載最新的BIOS, firmware, OS driver和Release Notes, 並且核對 廠商公佈的支援的Linux的具體版本，kernel 版本等作業系統認證支援細則 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;c. 仔細閱讀你要安裝的集群軟體的 Installation/Admin guide 和當前版本的Release Notes中關於 硬體/軟體需求的章節， 建議仔細的閱讀幾遍，這裡包含有事關你以後安裝是否順利和成功的關鍵資訊。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;d. 核對從c獲得的資訊和你的實際情況之間的差異，確認無誤後往下走。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;e. 仔細閱讀installation/admin guide中的安裝步驟，建議動手前至少閱讀2邊，了解清楚安裝的幾個大步驟。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;f. 開始安裝並注意保留螢幕上和系統日誌中的出現的異常資訊。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;g.在提問的時候，把a和b步驟中了解的資訊，清楚地貼在你的問題最前面. 然後把你在步驟f中保留得異常資訊貼在其次， 最後清楚地簡潔的描述你的問題。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;3. 學習linux集群的安裝和去完成一個實際的安裝工作任務是很不一樣的，如果你確定要學習的linux集群系統並且希望掌握的話，你需要做到的就是在動手操作前的閱讀。閱讀這個軟體的Release Notes, Installation guide/admin guide, 如果這些都沒有看過或者草草的看過一遍就動手的話，你會走得很艱難，而且你提出的問題，就我本人而言，也非常不願意花費時間來回答，因為你遇到的大部分問題，都是因為你不理解，不熟悉這個集群系統的基本知識和概念導致。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;我相信提供這個集群系統的廠商的站點以及正確的有效率的使用google 將是比你在這個論壇草率的重復提問更加重要的學習步驟。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;如果你看到我回你的帖子，僅僅是說 please check xxxx.xxxx.xxx 或者 google.com ，請不要生氣，這表明我仔細看了你問題，然後憑我不短的linux學習工作經驗，我認為你可以很輕鬆的在相關廠商和google上找到大把大把的有效幫助資訊，而不用我們大家在這裡做搬運工，幫你把那些資訊重復copy到這裡來給你看。&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-1295316155754726639?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/1295316155754726639/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux_3708.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/1295316155754726639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/1295316155754726639'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux_3708.html' title='Linux系統集群 安裝配置排錯的基本方法'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-1357298655519828171</id><published>2007-09-30T11:53:00.001+08:00</published><updated>2007-09-30T11:54:10.013+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>省時又省力 教你如何批量安裝Linux</title><content type='html'>&lt;span class="a14c" id="zoom"&gt; &lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;摘要&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;日常工作中，我們經常需要在多臺硬體完全相同的電腦上安裝同樣的Linux，尤其是在做集群應用或互為備份的數據庫伺服器的時候。筆者是兼職Linux教師，出於講課的需要，經常要在硬體配置完全相同的電腦上為學生安裝多達十台或更多的Linux系統。如果使用最常見的CDROM安裝方式，恐怕一次就要用掉一天的時間。而採用Kickstart 安裝方式，大約60分鐘就全部安裝完畢了。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Kickstart是Red Hat發展的快速定制安裝方式，可以讓電腦按照事先設計好的方式自動安裝。最常見的方式是網路安裝，也可以採用CDROM或硬盤安裝。本文主要介紹Kickstart的網路安裝。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;製作啟動盤&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;製作安裝盤的工作既可以在Windows系統下完成，也可以在Linux系統下完成。在Windows系統中，使用Red Hat安裝光碟中第一張的rawritewin程式。此程式在CDROM下的dosutils/rawritewin目錄下。製作第一張軟碟時，Image File請選擇 images bootnet.img ， 這張叫啟動盤。製作第二張軟碟的時候，Image File請選擇images drvnet.net，這張叫驅動盤(Driver Disk)。 根據你網卡的型號，驅動盤也許並不需要。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;如果是在Linux系統中製作安裝盤，命令如下： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;center&gt;&lt;ccid_nobr /&gt;&lt;table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"&gt;&lt;pre&gt;&lt;ccid_code /&gt;　　dd if=/mnt/cdrom/images/bootnet.img of=/dev/fd0 (啟動盤)&lt;br /&gt;　　dd if=/mnt/cdrom/images/drvnet.img of=/dev/fd0 (驅動盤)&lt;/ccid_code /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ccid_nobr /&gt;&lt;/center&gt;&lt;p style="TEXT-INDENT: 2em"&gt;啟動盤裏包含了最常見的網卡驅動，如3Com 509/Intel eepro NE 2000等。如果你的網卡不是最常見的，比如聯想D-Link530TX，則必須多做一張網卡的驅動盤。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;編輯文件syslinux.cfg&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;編輯啟動盤上的syslinux.cfg 文件，將第一行改寫為： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;center&gt;&lt;ccid_nobr /&gt;&lt;table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"&gt;&lt;pre&gt;&lt;ccid_code /&gt;　　default linux ks=floppy&lt;/ccid_code /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ccid_nobr /&gt;&lt;/center&gt;&lt;p style="TEXT-INDENT: 2em"&gt;如果需要用到網卡的驅動盤，則第一行改寫為： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;center&gt;&lt;ccid_nobr /&gt;&lt;table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"&gt;&lt;pre&gt;&lt;ccid_code /&gt;　　default linux ks=floppy dd&lt;/ccid_code /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ccid_nobr /&gt;&lt;/center&gt;&lt;p style="TEXT-INDENT: 2em"&gt;此時系統會自動提示插入驅動盤。然後刪除prompt 和timeout 行。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;編輯ks.cfg文件&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;這一步也是Kickstart安裝中最重要的步驟。ks.cfg 是Kickstart安裝的核心文件，它指明瞭以什麼方式、將Linux安裝到何處、安裝什麼package等內容。ks.cfg 放置在軟碟的根目中。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;在新安裝的Red Hat系統下，/root/下有個anaconda.cfg文件，可以它為基礎進行編輯，也可以用X-Window下的ksconfig程式進行這項工作。如果讀者用ksconfig程式進行設定，可能還需要手動進行修改。下面是ks.cfg 文件的內容，為了方便解說，我將原文加了行號。請注意正式的文件是不能加行號的。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;center&gt;&lt;ccid_nobr /&gt;&lt;table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"&gt;&lt;pre&gt;&lt;ccid_code /&gt;　　1 #Generated by Kickstart Configurator&lt;br /&gt;　　2 #System language&lt;br /&gt;　　3 lang en_US&lt;br /&gt;　　4 #Language modules to install&lt;br /&gt;　　5 langsupport --default en_US en_US zh_CN.GB2312 &lt;br /&gt;　　6 #System keyboard&lt;br /&gt;　　7 keyboard us&lt;br /&gt;　　8 #System mouse&lt;br /&gt;　　9 mouse genericps/2&lt;br /&gt;　　10 #System timezone&lt;br /&gt;　　11 timezone --utc Asia/Shanghai&lt;br /&gt;　　12 #Root password&lt;br /&gt;　　13 rootpw 12345&lt;br /&gt;　　14 #System bootloader configuration&lt;br /&gt;　　15 bootloader --location=mbr &lt;br /&gt;　　16 #Install Red Hat Linux instead of upgrade&lt;br /&gt;　　17 install&lt;br /&gt;　　18 #Use FTP installation media&lt;br /&gt;　　19 url --url ftp://192.168.203.2/download&lt;br /&gt;　　20 #Disk partitioning information&lt;br /&gt;　　21 clearpart --all&lt;br /&gt;　　22 part /  --size 4200&lt;br /&gt;　　23 part  swap --size 300&lt;br /&gt;　　24 #Use DHCP networking&lt;br /&gt;　　25 network --bootproto dhcp&lt;br /&gt;　　26 #System authorization information&lt;br /&gt;　　27 auth  --useshadow  --enablemd5 &lt;br /&gt;　　28 #Firewall configuration&lt;br /&gt;　　29 firewall --disabled &lt;br /&gt;　　30 #XWindows configuration information&lt;br /&gt;　　31 #Probe for video card&lt;br /&gt;　　32 #Probe for monitor&lt;br /&gt;　　33 xconfig  --depth 16 --resolution 1024x768 --defaultdesktop=GNOME&lt;br /&gt;　　34 %packages&lt;br /&gt;　　35 @KDE&lt;br /&gt;　　36 @Emacs&lt;br /&gt;　　37 lynx&lt;br /&gt;　　38 %pre&lt;br /&gt;　　39 echo &amp;quot; Welcome to my kickstart&amp;quot;&lt;br /&gt;　　40 %post&lt;br /&gt;　　41 echo &amp;quot;192.168.10.55 Server&amp;quot; &amp;gt;&amp;gt; /etc/hosts&lt;/ccid_code /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ccid_nobr /&gt;&lt;/center&gt;&lt;p style="TEXT-INDENT: 2em"&gt;所有以“#”號開頭的都是註釋，可以忽略。第2行指明瞭安裝時採用的語言。其實在配置正確的時候，kickstart安裝不需要人工干預，本文將其定為英語。第4行指明瞭系統支援的語言環境，如果不安裝X-Window，只需要英語即可。本文增加了對簡體中文的支援。第6-9行指明瞭系統採用的鍵盤和滑鼠的類型，通常鍵盤都是us相容行的。帶滾輪的PS/2滑鼠應寫為: &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;center&gt;&lt;ccid_nobr /&gt;&lt;table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"&gt;&lt;pre&gt;&lt;ccid_code /&gt;　　mouse msintellips/2&lt;/ccid_code /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;/span&gt;&lt;span class="a14c" id="zoom"&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;第6-9行建議用ksconfig 程式配置。第10-11行是時區，中國的用戶一般可以選擇上海。第12-13行指明瞭root用戶的密碼，還有一種形式就是將密碼進行加密。第16-17行指明瞭是安裝還是升級，如果是升級，第17行應該用upgrade代替Install參數。第18-19行指明瞭安裝介質所在的位置，這是Kickstart安裝的關鍵之一。安裝介質可以放置在NFS/FTP/HTTP伺服器上，也可以放置在本機硬盤上。本文不打算探討硬盤安裝，只研究網路安裝。具體的辦法是把3張Red Hat安裝光碟中的Red Hat目錄拷貝到到伺服器的某個位置，比如說/tmp/install 下面，如果是用NFS安裝，則需要把/tmp/install 共享出去，同時要保證將要安裝Red Hat Linux的客戶機可以訪問。只讀的許可權可以按如下配置: &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;center&gt;&lt;ccid_nobr /&gt;&lt;table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"&gt;&lt;pre&gt;&lt;ccid_code /&gt;　　/etc/exports 文件如下&lt;br /&gt;　　/tmp/install 192.168.10.0/255.255.255.0(ro)&lt;/ccid_code /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ccid_nobr /&gt;&lt;/center&gt;&lt;p style="TEXT-INDENT: 2em"&gt;如果是FTP或者HTTP安裝，則可以把Red Hat目錄放在ftproot或者httproot下。值得注意的是，在Windows系統中，可能對“/”和“”產生歧意，如果FTP Server 是Windows系統，最好將Red Hat目錄放置到ftproot的再下一級目錄中。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;第21-23行是描述Linux將安裝到哪個分區，clearpart -all 的意思是清除所有分區。第22行新建一個4.2GB的分區作為“/”分區。第23行新建立一個300MB的swap分區。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;如果使用已存在的分區，則寫為： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;center&gt;&lt;ccid_nobr /&gt;&lt;table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"&gt;&lt;pre&gt;&lt;ccid_code /&gt;　　partition / --onpart sda1&lt;br /&gt;　　partition swap -onpart sda2&lt;/ccid_code /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ccid_nobr /&gt;&lt;/center&gt;&lt;p style="TEXT-INDENT: 2em"&gt;注意：第21-23行最好不要用ksconfig程式自動設定參數，手工配置比較穩妥。第25行的意思是用DHCP Server自動分配IP地址。如果裝機的數量較多，DHCP的方式毫無疑問是首選。如果想自己指定IP地址，則應該寫為： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;center&gt;&lt;ccid_nobr /&gt;&lt;table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"&gt;&lt;pre&gt;&lt;ccid_code /&gt;　　network --bootproto static  --ip 192.168.10.55  &lt;br /&gt;    --netmask 255.255.255.0 &lt;br /&gt;　　--gateway 192.168.11.1  --nameserver 202.96.134.133&lt;/ccid_code /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ccid_nobr /&gt;&lt;/center&gt;&lt;p style="TEXT-INDENT: 2em"&gt;多網卡的機器稍微複雜一點，本文就不介紹了。第27行指明瞭系統驗證用戶的方式。本文用的是缺省Shadow密碼，MD5 方式加密，這是最常見的方式。第28行把自定義的防火牆關閉。因為安裝Red Hat時用的是ipchains 防火牆，因此筆者建議安裝以後採用iptables防火牆。第30-33行是關於X-Window的配置。意思是使用系統自動偵測的配置。Linux一般都能正確地檢測到顯示卡和顯示器的型號。第33行的意思是以GNOME做為缺省的窗口管理器，顏色為16位色，螢幕分辨為1024×768。如果在末尾加上“--startxonboot”，就是開機後X-Window登陸。第34-37行指明瞭安裝時候選擇安裝的軟體。前面有個“@”符號代表一組RPM包，每組包將安裝的軟體列表,這樣軟體可以在Red Hat第一張安裝光碟中的Redhat/base/comps 文件中找到。如果一個組都不指定，則會安裝Redhat/base/comps文件中的Base組合，也就是最基本的一些RPM包，如Sendmail等。寫一個@Everything 則是完全安裝。第37行中有單獨安裝了lynx的RPM包。第38-39行的%pre表示安裝之前執行的命令。第40-41行%post以後代表安裝之後將要執行的命令。第40行執行了一個簡單的命令。最後的工作是把寫好的ks.cfg 拷貝到軟碟上： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;center&gt;&lt;ccid_nobr /&gt;&lt;table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"&gt;&lt;pre&gt;&lt;ccid_code /&gt;　　cp ks.cfg /mnt/floppy&lt;/ccid_code /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ccid_nobr /&gt;&lt;/center&gt;&lt;p style="TEXT-INDENT: 2em"&gt;筆者在Windows 2000下安裝了VMware，在虛擬機上用光碟安裝Linux時，不知道什麼原因光碟機的速度非常慢。因此又在Windows 2000下安裝了Server-U FTP伺服器，然後在VMware下進行Kickstart安裝，結果速度非常令人滿意。另外，也可以用Omni-NFS在Windows 2000下實現NFS Server的功能，使用NFS安裝。善用Kickstart安裝中的%post 命令，就可以直接配置好伺服器。Kickstart安裝是學習Linux的重點之一，在Red Hat RH133培訓課程中，就有Kickstart安裝的課程，但這方面的中文資料一直都比較少，希望本文能起到拋磚引玉的作用。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-1357298655519828171?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/1357298655519828171/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux_7440.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/1357298655519828171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/1357298655519828171'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux_7440.html' title='省時又省力 教你如何批量安裝Linux'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-5433178998882964391</id><published>2007-09-30T11:52:00.000+08:00</published><updated>2007-09-30T11:53:01.053+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Adding driver modules to a Fedora Core 2 CD for kickstart install</title><content type='html'>This document should take you through the steps required to create a&lt;br /&gt;kickstart boot CD for Fedora Core 2 that incorporates a driver module&lt;br /&gt;not present on the Fedora Core 2 install distribution. Our example&lt;br /&gt;module is the BroadCom-supplied bcm5700 driver for BroadCom GB&lt;br /&gt;Ethernet cards; Dell gx280s are shipping with a newer version of this&lt;br /&gt;card that is not recognized by the tg3 driver, which is why we wanted&lt;br /&gt;to do this. Note that we're focusing on building a netboot CD because&lt;br /&gt;we want to automate installs for a lot of similar equipment; this is&lt;br /&gt;probably more work than you're looking for if you just want to install&lt;br /&gt;a single machine. &lt;br /&gt;&lt;br /&gt;--------------------------------------------------------&lt;br /&gt;I. Gathering preliminary info&lt;br /&gt;&lt;br /&gt;There are several pieces of information to gather before&lt;br /&gt;building the kickstart CD, for which it's useful to install the driver&lt;br /&gt;you're looking to incorporate on an existing system. Specifically, you&lt;br /&gt;want the PCI table string for the card, and pcimap and dependency&lt;br /&gt;information from /lib/modules/`uname-r`/modules.pcimap and&lt;br /&gt;modules.dep.&lt;br /&gt;&lt;br /&gt;A. PCI table info&lt;br /&gt;The kernel needs to be able to associate your new driver with&lt;br /&gt;the hardware it's meant to run, which means the card's PCI ID has to&lt;br /&gt;be in the PCI table. Boot a machine with the hardware installed using&lt;br /&gt;anything that gets you a linux console (knoppix, rescuecd, standalone&lt;br /&gt;install disks, whatever) and run lspci to find the hardware; it'll&lt;br /&gt;probably be listed as &amp;quot;unknown device&amp;quot; in the output from lspci. Look&lt;br /&gt;at the first fields, those correspond to the physical location&lt;br /&gt;(bus:slot.function) and remember them. Now run &amp;quot;lspci -n&amp;quot; and find the&lt;br /&gt;line that corresponds to the location you just saw for the new&lt;br /&gt;hardware. The PCI id is the fourth field, and should consist of two&lt;br /&gt;four-digit hexadecimal numbers separated by a colon. The bcm card we&lt;br /&gt;were trying to use looked like this:&lt;br /&gt;  02:00.0 Class 0200: 14e4:1677 (rev 01)&lt;br /&gt;The important numbers here are &amp;quot;14e4&amp;quot; (the vendor ID) and&lt;br /&gt;&amp;quot;1677&amp;quot; (the device ID). You'll need these in step III.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;B. Pcimap info&lt;br /&gt;For the pcimap information, grep out all the lines beginning&lt;br /&gt;with the module name and save them to a file::&lt;br /&gt;  grep ^bcm5700 &amp;gt; /tmp/bcm5700.pcimap&lt;br /&gt;&lt;br /&gt;C. Module dependencies&lt;br /&gt;For the dependency information, you'll need to massage the&lt;br /&gt;data by removing all the pathing from each element (note that the&lt;br /&gt;bcm5700 module has no dependencies, so this is untested):&lt;br /&gt;  tstr=&amp;quot;&amp;quot;; for i in `grep -E ^[^[:space:]]*/bcm5700.ko modules.dep`; \&lt;br /&gt;    do tstr=&amp;quot;$tstr `basename $i`&amp;quot;; done ; echo $tstr &amp;gt; bcm5700.dep&lt;br /&gt;&lt;br /&gt;You'll want the .dep and .pcimap files thus created when you're ready&lt;br /&gt;to repack the bootcd iso tree in (III.D) below.&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------&lt;br /&gt;II. Building the Modules&lt;br /&gt;&lt;br /&gt;A. kernel environment&lt;br /&gt;First, we need to build a module binary (.ko file) that is&lt;br /&gt;compatible with the FC2 install kernel. To do that, we need a kernel&lt;br /&gt;build environment that replicates the one used to build the install&lt;br /&gt;kernel. On a newly-installed FC2 system:&lt;br /&gt;- install the kernel-sources rpm for 2.6.5-1.358&lt;br /&gt;- cd /usr/src/linux-2.6.5-1.358&lt;br /&gt;- make clean&lt;br /&gt;- cp configs/kernel-2.6.5-i586.config .config&lt;br /&gt;- perl -p -i -e 's/8custom/8/g' Makefile&lt;br /&gt;- make oldconfig&lt;br /&gt;- make modules (may not be necessary, but what the hell)&lt;br /&gt;&lt;br /&gt;B. Build the module itself&lt;br /&gt;Now you're ready to build your custom module. In the case of&lt;br /&gt;our bcm5700 driver, it came as a source rpm; we installed the src.rpm,&lt;br /&gt;and then ran &amp;quot;rpmbuild -bp /usr/src/redhat/SPECS/bcm5700.spec&amp;quot; which&lt;br /&gt;does the unpack and source prep stages of the RPM build. Then we&lt;br /&gt;changed into the build directory (&amp;quot;cd /usr/src/redhat/BUILD/bcm5700&amp;quot;)&lt;br /&gt;and investigated the Makefile. The key step here is making sure that&lt;br /&gt;the module builds using the kernel tree you've just prepared, and&lt;br /&gt;doesn't try to grab information from the running kernel (looking in&lt;br /&gt;/lib/modules/`uname -r`/build, for example.) For the bcm5700, we found&lt;br /&gt;this was possible by adding &amp;quot;LINUX=/usr/src/linux-2.6.5-1.358&amp;quot; to the&lt;br /&gt;make arguments: &amp;quot;make LINUX=/usr/src/linux-2.6.5-1.358 bcm5700.ko&amp;quot; --&lt;br /&gt;YMMV.&lt;br /&gt;&lt;br /&gt;Once you have a kernel object (ko) file, make sure it has the&lt;br /&gt;right versioning magic; run strings on it and grep in the output for&lt;br /&gt;&amp;quot;vermagic&amp;quot;. The result should be &amp;quot;2.6.5-1.358 586 REGPARM 4KSTACKS&lt;br /&gt;gcc-3.3&amp;quot; as shown here:&lt;br /&gt;&lt;br /&gt;  [root@host /tmp]# strings bcm5700.ko | grep verm&lt;br /&gt;  vermagic=2.6.5-1.358 586 REGPARM 4KSTACKS gcc-3.3&lt;br /&gt;  [root@host /tmp]# &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------&lt;br /&gt;III. Rebuilding the ISO&lt;br /&gt;&lt;br /&gt;Ok, now we need to put our new module into the initrd used by&lt;br /&gt;the boot iso. (Note that the &amp;quot;boot iso&amp;quot; is not the same CD as the 1st&lt;br /&gt;FC2 install CD -- rather, it's the image &amp;quot;boot.iso&amp;quot; contained on that&lt;br /&gt;CD in the &amp;quot;images directory.) For this section, you don't need to be&lt;br /&gt;working directly on an FC2 box -- we used aroostook, an RH9 system&lt;br /&gt;which exports ISOs for several distros including FC2.&lt;br /&gt;&lt;br /&gt;A. Make a working copy of the boot iso structure&lt;br /&gt;  1. Mount the original boot iso using a loopback mount:&lt;br /&gt;- mount -t iso9660 -o loop /cds/fc2/d1/images/boot.iso /mnt/tmp&lt;br /&gt;  2. Copy the CD structure to a temporary location:&lt;br /&gt;- cp -r /mnt/tmp /tmp/fcboot &lt;br /&gt;&lt;br /&gt;  3. Remove the iso9660 translation tables (new ones will be added&lt;br /&gt;back in by mkisofs):&lt;br /&gt;- find /tmp/fcboot -name TRANS.TBL -exec rm -f {} \;&lt;br /&gt;&lt;br /&gt;B. Unroll and mount the initial ramdisk&lt;br /&gt;An initrd is just an ext2 partition image that's been gzipped,&lt;br /&gt;so to get at its contents and modify them we unzip and then use a&lt;br /&gt;loopback mount:&lt;br /&gt;- gzip -dc /tmp/fcboot/isolinux/initrd.img &amp;gt; /tmp/initrd.unz&lt;br /&gt;- mkdir /tmp/initrd&lt;br /&gt;- mount -o loop /tmp/initrd.unz /tmp/initrd&lt;br /&gt;&lt;br /&gt;C. Unroll the modules.cgz CPIO archive and add our new module&lt;br /&gt;Ever play with one of those one-inside-the-other russian&lt;br /&gt;dolls? This feels a little like that... The kernel modules are&lt;br /&gt;contained inside a gzipped CPIO archive within the initrd, I think&lt;br /&gt;primarily because CPIO provides CRC checking and is smaller than tar.&lt;br /&gt;- mkdir /tmp/modwork&lt;br /&gt;- cd /tmp/modwork&lt;br /&gt;- gzip -dc /tmp/initrd/modules/modules.cgz | cpio -id&lt;br /&gt;&lt;br /&gt;Now copy the new module into our working directory and repack&lt;br /&gt;the CPIO archive:&lt;br /&gt;- cp /tmp/bcm5700.ko 2.6.5-1.358/i586&lt;br /&gt;- find * | cpio -o -H crc | gzip -9 &amp;gt; /tmp/initrd/modules/modules.cgz&lt;br /&gt;&lt;br /&gt;D. Add PCI/module information to initrd&lt;br /&gt;Now that our new module is part of the initrd, the kernel will&lt;br /&gt;be able to load it -- but it needs to know why it should. The answer&lt;br /&gt;is in the pci table; when the kernel scans the PCI bus, it will see&lt;br /&gt;the PCI vendor/device IDs (which we found in step (I.B) above) and it&lt;br /&gt;will crossreference those in the pcitable file. You'll need to add a&lt;br /&gt;line to this file so that the kernel will associate the PCI id with&lt;br /&gt;the module you're incorporating.&lt;br /&gt;&lt;br /&gt;  1. pcitable&lt;br /&gt;- edit /tmp/initrd/modules/pcitable, and add a line of the&lt;br /&gt;following format: &lt;br /&gt;&lt;vendorid /&gt;&lt;device_id /&gt;&amp;quot;&lt;modulename /&gt;&amp;quot; &amp;quot;text string&amp;quot; where the&lt;br /&gt;IDs are hex numbers in 0x#### format. The text string is arbitrary,&lt;br /&gt;the whitespace is composed of TABS (*not* spaces) and the module name&lt;br /&gt;is bare (i.e. without the &amp;quot;.ko&amp;quot; suffix.) Here's the line we used for&lt;br /&gt;the BroadCom:&lt;br /&gt;0x14e4 0x1677 &amp;quot;bcm5700&amp;quot; &amp;quot;Broadcom Corporation|NetXtreme BCM5700x Gigabit Ethernet&amp;quot;&lt;br /&gt;&lt;br /&gt;  2. modules.dep&lt;br /&gt;Append the dependency information you generated in step (I.C,&lt;br /&gt;above) to the modules.dep file:&lt;br /&gt;- cat /tmp/bcm5700.dep &amp;gt;&amp;gt; /tmp/initrd/modules/modules.dep&lt;br /&gt;&lt;br /&gt;  3. modules.pcimap&lt;br /&gt;Append the pcimap information you grepped in step (I.B, above)&lt;br /&gt;to the modules.pcimap file:&lt;br /&gt;- cat /tmp/bcm5700.pcimap &amp;gt;&amp;gt; /tmp/initrd/modules/modules.pcimap&lt;br /&gt;&lt;br /&gt;  4. modules.info&lt;br /&gt;If you like, add a stanza to module-info describing the&lt;br /&gt;hardware the module is supposed to drive. The one we added:&lt;br /&gt;&lt;br /&gt;bcm5700&lt;br /&gt;        eth&lt;br /&gt;        &amp;quot;Broadcom NetXtreme 5700x Gigabit Ethernet&amp;quot;&lt;br /&gt;&lt;br /&gt;F. Repack it all into a new ISO image&lt;br /&gt;Ok, we're almost done; just have to put the dolls back&lt;br /&gt;together. &amp;quot;modules.cgz&amp;quot; is already done, so let's roll up the initrd&lt;br /&gt;and create a new CD image...&lt;br /&gt;&lt;br /&gt;  1. initrd&lt;br /&gt;- cd /tmp&lt;br /&gt;- umount /tmp/initrd&lt;br /&gt;- gzip -c /tmp/initrd.unz &amp;gt; /tmp/fcboot/isolinux/initrd.img&lt;br /&gt;  2. ISO&lt;br /&gt;- mkisofs -o fcboot.iso -b isolinux/isolinux.bin -c \&lt;br /&gt;  isolinux/boot.cat -no-emul-boot -boot-load-size 4 \&lt;br /&gt;  -boot-info-table -R -J -v -T /tmp/fcboot&lt;br /&gt;&lt;br /&gt;G. burn&lt;br /&gt;H. cross fingers&lt;br /&gt;I. test&lt;br /&gt;&lt;br /&gt;J. helpful links....&lt;br /&gt;Much of this document was interpolated from Alexandre Oliva's firewire&lt;br /&gt;module work, particularly the add-modules script:&lt;br /&gt;http://www.ic.unicamp.br/~oliva/snapshots/FC2-firewire/add-modules&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-5433178998882964391?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/5433178998882964391/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/adding-driver-modules-to-fedora-core-2.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5433178998882964391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5433178998882964391'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/adding-driver-modules-to-fedora-core-2.html' title='Adding driver modules to a Fedora Core 2 CD for kickstart install'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-4181355982983485465</id><published>2007-09-30T11:47:00.000+08:00</published><updated>2007-09-30T11:50:38.456+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>有關Aic79XX 安裝方法~~~</title><content type='html'>&lt;p&gt;&lt;font color="#ff0000"&gt;問題：如何下載Linux aic79XX source code來重新complie&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Problem: the machines have an Adaptec SCSI controller AIC7902 (?), which needs the aic79xx driver, which is not supported by the woody boot floppies/cdrom. &lt;/p&gt;&lt;p&gt;Solution: install woody on a different computer using the 2.4 kernel installer (type 'bf24' at the boot prompt of the cdrom/floppy). Don't upgrade the kernel on this other computer - keep it at 2.4.18-bf2.4. &lt;/p&gt;&lt;p&gt;Plan of attack: compile the aic79xx.o (and, while we're at it, e1000.o for the network card in the Sun's) against the bf2.4 kernel so we can put the modules on a floppy and give them to the debian installer. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre&gt;apt-get install kernel-source-2.4.18 kernel-headers-2.4.18-bf2.4&lt;br /&gt;cd /usr/src&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Download the aic79xx module source to here. I used the version obtainable &lt;a href="http://people.freebsd.org/~gibbs/linux/"&gt;here&lt;/a&gt; (at the time it was aic79xx-1.3.10-source.tar.gz). &lt;/p&gt;&lt;pre&gt;tar xjf kernel-source-2.4.18.tar.bz2&lt;br /&gt;cd kernel-source-2.4.18&lt;br /&gt;&lt;br /&gt;# copy the .config which is already setup for the bf24 kernel:&lt;br /&gt;cp ../kernel-headers-2.4.18-bf2.4/.config . &lt;br /&gt;&lt;br /&gt;cd drivers&lt;br /&gt;mv scsi/aic7xxx scsi/aic7xxx.old&lt;br /&gt;# untar the aic79xx source code into the source tree (should re-create&lt;br /&gt;# drivers/scsi/aic7xxx:&lt;br /&gt;tar xzf ../../aic79xx-1.3.10-source.tar.gz  # or whatever your version is called&lt;br /&gt;cd ..&lt;br /&gt;make clean&lt;br /&gt;make menuconfig&lt;br /&gt;&lt;/pre&gt;-&amp;gt; select aic79xx as a Module &lt;p&gt;In .config, set CONFIG_AIC79XX_CMDS_PER_DEVICE to 32 and disable CONFIG_AIC79XX_ENABLE_RD_STRM. (&lt;a href="http://www.sun.com/products-n-solutions/hardware/docs/html/817-1956-13/appb.html#33345"&gt;Sun suggest this.&lt;/a&gt;) &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre&gt;make dep&lt;br /&gt;&lt;/pre&gt;To just make the module we want: &lt;pre&gt;make SUBDIRS=drivers/scsi/aic7xxx modules&lt;br /&gt;&lt;/pre&gt;This should make drivers/scsi/aic7xxx/aic79xx.o. Copy this file onto a floppy and put it in a directory on the floppy called 'boot'. &lt;p&gt;If you want to get the ethernet card working too, download the e1000 driver from Intel's website (e1000-5.1.13 or similar), untar, cd to the src directory in there, 'make e1000.o'. Then copy the resulting e1000.o to the boot directory on the floppy. &lt;/p&gt;&lt;p&gt;Now when you boot the Debian installer on the Sun, you can choose 'preload essential modules from floppy', and it should load them for you! &lt;/p&gt;&lt;p&gt;To save you the trouble of doing all this - here are the modules I compiled in this way. They should work with the woody install floppy/cdrom as long as you remember to choose 'bf24' at the boot prompt. &lt;/p&gt;&lt;p&gt;===============================================&lt;/p&gt;&lt;p&gt;&lt;font color="#ff0000"&gt;另外centos &lt;/font&gt;&lt;/p&gt;&lt;div class="comTitle"&gt;&lt;font color="#ff0000"&gt;Creating driver update disk for centos 4.2 with ddiskit (qla4xxx)&lt;/font&gt;&lt;/div&gt;&lt;p&gt;&lt;font color="#ff0000"&gt;的(在centos的討論區看到的)&lt;/font&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="comText"&gt;Should ddiskit (&lt;a href="http://people.redhat.com/linville/ddiskit/" target="_blank"&gt;http://people.redhat.com/linville/ddiskit/&lt;/a&gt;) work out of the box with centos 4.2 ? &lt;br /&gt;&lt;br /&gt;I'm using centos 4.2 (without any updates) for building/creating the driver update disk.&lt;br /&gt;&lt;br /&gt;I've been trying to build driver/moduledisk for qla4xxx iSCSI HBA. The disk image builds fine (after some driver/makefile customization), &lt;br /&gt;but the centos 4.2 installer refuses to load the resulting driver update floppy.. &lt;br /&gt;&lt;br /&gt;I boot centos 4.2 installer with &amp;quot;linux dd&amp;quot;, and when installer asks for driver floppy I get errors like this (in VC 3):&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;failed to open /tmp/drivers/modules.pcimap: no such file or directory&lt;br /&gt;failed to open /tmp/drivers/pci.ids: no such file or directory&lt;br /&gt;...&lt;br /&gt;modules to insert tg3 qla4xxx&lt;br /&gt;module(s) tg3 qla4xxx not found&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Installer seems to figure out it needs to load the qla4xxx driver from the floppy, but for some reason it doesn't work.. &lt;br /&gt;maybe because of missing modules.pcimap and pci.ids ? Should I create those files myself? &lt;br /&gt;&lt;br /&gt;Btw. is centos 4.2 installer using i586 kernel? Some other threads give that kind of information.. I've been only compiling &lt;br /&gt;for i686, i686-smp and i686-hugemem.&lt;br /&gt;&lt;br /&gt;Any ideas?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.centos.org/modules/newbb/print.php?form=1&amp;topic_id=479&amp;forum=29&amp;order=ASC&amp;start=0" target="_blank"&gt;http://www.centos.org/modules/newbb/print.php?form=1&amp;amp;topic_id=479&amp;amp;forum=29&amp;amp;order=ASC&amp;amp;start=0&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.centos.org/modules/newbb/viewtopic.php?topic_id=479&amp;forum=29&amp;post_id=8076#forumpost8076" target="_blank"&gt;http://www.centos.org/modules/newbb/viewtopic.php?topic_id=479&amp;amp;forum=29&amp;amp;post_id=8076#forumpost8076&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.centos.org/modules/newbb/viewtopic.php?topic_id=2854&amp;forum=27&amp;post_id=7914#forumpost7914" target="_blank"&gt;http://www.centos.org/modules/newbb/viewtopic.php?topic_id=2854&amp;amp;forum=27&amp;amp;post_id=7914#forumpost7914&lt;/a&gt;&lt;/div&gt;&lt;div class="comText"&gt;&lt;/div&gt;&lt;div class="comText"&gt;&lt;/div&gt;&lt;div class="comText"&gt;&lt;a href="http://www.centos.org/modules/newbb/viewtopic.php?topic_id=3266&amp;forum=29&amp;post_id=9196"&gt;http://www.centos.org/modules/newbb/viewtopic.php?topic_id=3266&amp;amp;forum=29&amp;amp;post_id=9196&lt;/a&gt; 這篇文章的連結&lt;/div&gt;&lt;div class="comText"&gt;&lt;/div&gt;&lt;div class="comText"&gt;&lt;/div&gt;&lt;div class="comText"&gt;&lt;/div&gt;&lt;div class="comText"&gt;&lt;/div&gt;&lt;div class="comText"&gt;==============================================&lt;/div&gt;&lt;div class="comText"&gt;&lt;font color="#ff0000"&gt;下面文章教你如何做Linux drivers 我覺得很不錯的文章&lt;/font&gt;&lt;/div&gt;&lt;div class="comText"&gt;&lt;/div&gt;&lt;div class="comText"&gt;&lt;div style="BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 20px; BORDER-TOP: #000 1px solid; PADDING-LEFT: 20px; PADDING-BOTTOM: 20px; BORDER-LEFT: #000 1px solid; WIDTH: 750px; PADDING-TOP: 20px; BORDER-BOTTOM: #000 1px solid"&gt;&lt;div style="DISPLAY: block; MARGIN: 0px 0px 6px; TEXT-ALIGN: center"&gt;&lt;img src="http://www.centos.org/modules/newbb/images/xoopsbb_slogo.png" border="0" /&gt; &lt;br /&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;American Megatrends Raid controller help&lt;/h2&gt;&lt;div align="center"&gt;Posted by pauleyj on 2005/3/15 4:53:29&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;Hi,&lt;br /&gt;&lt;br /&gt;I have a &amp;quot;older&amp;quot; Dell PowerEdge 1300 with an American Megatrends Perc2/SC raid controller. Linux distros &amp;lt;= FC2 detect and install fine, but distros &amp;gt; FC2, have issues.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Of interest on FC2:&lt;br /&gt;&lt;br /&gt;[&lt;a href="mailto:root@localhost"&gt;root@localhost&lt;/a&gt; root]# lsmod&lt;br /&gt;...&lt;br /&gt;megaraid 42121 3&lt;br /&gt;aic7xxx 153977 0&lt;br /&gt;sd_mod 19905 4&lt;br /&gt;scsi_mod 116289 5 sg,st,megaraid,aic7xxx,sd_mod&lt;br /&gt;&lt;br /&gt;from megaraid.h:&lt;br /&gt;&lt;br /&gt;#define MEGARAID_VERSION &lt;br /&gt;&amp;quot;v2.00.3 (Release Date: Wed Feb 19 08:51:30 EST 2003)n&amp;quot;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Of interest during Centos4.0 (and FC3) install:&lt;br /&gt;&lt;br /&gt;loads aic7xxx driver&lt;br /&gt;loads megaraid_mbox driver&lt;br /&gt;&lt;br /&gt;Messagebox:&lt;br /&gt;&lt;br /&gt;No harddrives have been found. You probably need to manually choose one...&lt;br /&gt;LSI MegaRAID Controllers (megaraid_mbox) is listed and I select it....&lt;br /&gt;&lt;br /&gt;Later during install, when it's time to format drives, none are found and install bails...&lt;br /&gt;&lt;br /&gt;What happened from &amp;gt; FC2?&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;John&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: American Megatrends Raid controller help&lt;/h2&gt;&lt;div align="center"&gt;Posted by bodgit on 2005/3/20 15:36:31&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;CentOS/RHEL ship with the newer megaraid_mbox driver which has removed support for some of the older MegaRAID cards, your Perc2/SC included.&lt;br /&gt;&lt;br /&gt;It's documented in the release notes in the kernel section.&lt;br /&gt;&lt;br /&gt;Sorry &lt;img src="http://www.centos.org/uploads/smil3dbd4d75edb5e.gif" /&gt;&lt;br /&gt;&lt;br /&gt;Matt&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: American Megatrends Raid controller help&lt;/h2&gt;&lt;div align="center"&gt;Posted by riik on 2005/3/21 14:16:12&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;A lot on this on Bugzilla (Fedora FC3 has the same &amp;quot;problem&amp;quot;).&lt;br /&gt;Look at bug #138590 and 135484 for starters.&lt;br /&gt;&lt;br /&gt;Regards Rikard&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What would be nicer than CentOS 4 isos that &amp;quot;avoids&amp;quot; this issue. &lt;img src="http://www.centos.org/uploads/smil3dbd4d6422f04.gif" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;How to make a driver disk for 4.0? - was help with american megatrends / perc&lt;/h2&gt;&lt;div align="center"&gt;Posted by mgrab on 2005/4/8 15:43:11&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;So RedHat dropped support for the Dell PERC2/SC, in conjunction with Dell and LSI.&lt;br /&gt;&lt;br /&gt;It's obvious to the people who own one of these systems that they are perfectly good machines, and perfectly capable of handling heavy workloads.&lt;br /&gt;&lt;br /&gt;I have a Dell 6350 quad processor 500mhz box with SCSI Raid 3 and 2 Gigs of RAM. With vmware or xen, it can handle a lot of consolidation work.&lt;br /&gt;&lt;br /&gt;But it's certainly a sly tactic. If you can afford to purchase RedHat AS, then you can afford to replace all your servers with newer ones.&lt;br /&gt;&lt;br /&gt;Anyhow, the point is, it can easily be installed, if you load the old megaraid driver during installation, and possibly after.&lt;br /&gt;&lt;br /&gt;I'm sure there are plenty of other hardware devices that could be made to work with a driver disk.&lt;br /&gt;&lt;br /&gt;So how do I create a driver disk? Do I need one?&lt;br /&gt;I would think if I download the kernel sources onto another machine, I could compile the same kernel version, and build the megraid driver for it. According to Dell, the driver for the old hardware is called megaraid. The driver for the new hardware is called megaraid_mm and megaraid_mbox.&lt;br /&gt;Would I then just need to mount a disk with that module on it during installation, and insmod or modprobe the module, then the install routine could see it?&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;Matt&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: How to make a driver disk for 4.0? - was help with american megatrends / perc&lt;/h2&gt;&lt;div align="center"&gt;Posted by ppcner8x8x on 2005/4/29 15:53:24&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;Ok - luckily I stumbled upon this thread - because I just &lt;br /&gt;tried what you suggested and it worked!&lt;br /&gt;&lt;br /&gt;1. Start CentOS install - by the time it reaches the hard disk detection&lt;br /&gt;it will ask you to add a device driver because megaraid_mm/mbox&lt;br /&gt;won't work. Say yes and go a list of useless drivers. (You need to use&lt;br /&gt;some kind of network install, http, nfs because in step 3 we need to&lt;br /&gt;wget megaraid.ko over).&lt;br /&gt;&lt;br /&gt;2. Install the kernel i586 / kernel-sourcecode on a 2nd machine with gcc-3.4.x installed - this&lt;br /&gt;is very important. Fedora Core 3 will work. The odd thing is that even with the i586&lt;br /&gt;kernel installed, the header files /lib/modules/kernel-2.6.9-5.0.3EL/build/include/linux/autoconf.h&lt;br /&gt;use i686 instead of i586 &amp;lt;--- you need to correct this, comment out CONFIG_I686 and uncomment&lt;br /&gt;CONFIG_I586. &lt;br /&gt;&lt;br /&gt;If all goes well you should then build and have a spanking new megaraid.ko. (BTW no need to rebuild&lt;br /&gt;entire kernel just the megaraid.ko module).&lt;br /&gt;Run modinfo on the module; you must see i586 gcc -3.4 in the description.&lt;br /&gt;&lt;br /&gt;VERY IMPORTANT: you must also build megaraid.ko for i686 and i686SMP (or whatever kernel gets&lt;br /&gt;installed because on rebooting you will not have a workable initrd).&lt;br /&gt;&lt;br /&gt;3. Now switch to vc2 (to the shell prompt) and wget megaraid.ko over - if you are using nfs just copy the file to the&lt;br /&gt;nfs server. Do a insmod megaraid.ko. Don't be surprised if /dev does not show your sd* device&lt;br /&gt;files yet. The udev thingy hasn't kicked in yet.&lt;br /&gt;&lt;br /&gt;4. Return to vc 1 and exit the device driver selection screen. Autodetection and device file creation will&lt;br /&gt;kick in and /dev/ will be magically populated with all your SCSI partitions.&lt;br /&gt;Proceed to successful completion of install . Do not reboot (your initrd are wrong.) Switch back to vc2 and chroot into /mnt/sysimage.&lt;br /&gt;&lt;br /&gt;Pull over megaraid.ko for all the kernels eg 2.6.9-5.0.3.EL and 2.6.0-5.0.3.ELsmp.&lt;br /&gt;and put in /lib/modules/&lt;version /&gt;/kernel/drivers/scsi&lt;br /&gt;Run depmod -a &lt;kernel-version /&gt;.&lt;br /&gt;&lt;br /&gt;Edit /etc/modprobe.conf and replace megaraid_mm.ko with megaraid.ko.&lt;br /&gt;&lt;br /&gt;Rerun /sbin/mkinitrd&lt;br /&gt;&lt;br /&gt;5. Reboot and have fun. &lt;br /&gt;&lt;br /&gt;It's actually easier to do than to describe.&lt;br /&gt;&lt;br /&gt;I tried this on an ancient server with a megaraid 438 - it's up and running now.&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: How to make a driver disk for 4.0? - was help with american megatrends / perc&lt;/h2&gt;&lt;div align="center"&gt;Posted by bodgit on 2005/5/8 11:44:19&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;Quote: &lt;div class="xoopsQuote"&gt;&lt;blockquote&gt;&lt;br /&gt;mgrab wrote:&lt;br /&gt;So RedHat dropped support for the Dell PERC2/SC, in conjunction with Dell and LSI.&lt;br /&gt;&lt;br /&gt;It's obvious to the people who own one of these systems that they are perfectly good machines, and perfectly capable of handling heavy workloads.&lt;br /&gt;&lt;br /&gt;I have a Dell 6350 quad processor 500mhz box with SCSI Raid 3 and 2 Gigs of RAM. With vmware or xen, it can handle a lot of consolidation work.&lt;br /&gt;&lt;br /&gt;But it's certainly a sly tactic. If you can afford to purchase RedHat AS, then you can afford to replace all your servers with newer ones.&lt;br /&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I don't think there are any tactics at play other than the fact that the older cards are programmed/driven in a different way. The newer driver supports the newer-style cards only, is the only one actively maintained with supporting new cards as they come out, and AIUI runs them faster. As there is overlap between the cards that each driver supports, one had to be left out. So the choice is not support all of the newer cards but work with all of the older cards, or the reverse and support all of the new cards, and most of the old ones, except the really old ones. One bunch of people are going to get pissed off, the people who've just bought brand new machines, or the ones running old ones &lt;img src="http://www.centos.org/uploads/smil3dbd4d6422f04.gif" /&gt; .&lt;br /&gt;&lt;br /&gt;Maybe eventually the older MegaRAID driver will be made to only support these old cards so both drivers can coexist safely.&lt;br /&gt;&lt;br /&gt;Myself, I've been kind've bitten by this issue, but instead by having a fairly recent MegaRAID card that only had support added to the newer driver and not the older one, and I only had the older driver available in the distro I was using.&lt;br /&gt;&lt;br /&gt;(Personally, I have one of these old-style MegaRAID cards kicking about, and I never thought its performance was that great.)&lt;br /&gt;&lt;br /&gt;Matt&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: How to make a driver disk for 4.0? - was help with american megatrends / perc&lt;/h2&gt;&lt;div align="center"&gt;Posted by r00td0wn on 2005/5/11 2:08:43&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;I have tried the above method with no luck.&lt;br /&gt;&lt;br /&gt;The only difference I did was I did not do a network install. I simply switched to vc2 when the instructions said to and then I mounted the floppy and copied it from there.&lt;br /&gt;&lt;br /&gt;I tried it with 586 and 686. If you actually do a uname -a in vc2 is lists itself as 686.&lt;br /&gt;&lt;br /&gt;Anyways, I am getting absolutely no where. When I insmod the driver I get nothing. No error message, but no module insertion either.&lt;br /&gt;&lt;br /&gt;I am really stuck here. Anybody have any ideas?&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: How to make a driver disk for 4.0? - was help with american megatrends / perc&lt;/h2&gt;&lt;div align="center"&gt;Posted by ppcner8x8x on 2005/5/11 14:16:58&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;Jeremy, make sure the i586 module is indeed 586 by using modinfo.&lt;br /&gt;&lt;br /&gt;You need to manually rmmod the loaded megaraid_XXX drivers &lt;br /&gt;before insmod megaraid.ko.&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: American Megatrends Raid controller help&lt;/h2&gt;&lt;div align="center"&gt;Posted by dilidolo on 2005/5/12 22:35:23&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;I have IBM server with Adaptec U160 SCSI. During installation, it prompts me to add drive manually, I select the proper drive and it does not work. I thought it is drive issue so I plugged in an LSI SCSI U320 SCSI card and got the same issue.&lt;br /&gt;&lt;br /&gt;It works fine in CentOS 3.*, Windows 200*, FreeBSD 4.*, 5.*, Gentoo 2004.* but not in FC3, CentOS 4, Gentoo 2005.*.&lt;br /&gt;&lt;br /&gt;Last week, I finally solved the problem by use some kernel options and it works fine after it.&lt;br /&gt;Try:&lt;br /&gt;linux acpi=off noapic&lt;br /&gt;&lt;br /&gt;Using these options, CentOS 4 detects any SCSI controller I have and loads proper drive for it automatically.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.centos.org/uploads/smil3dbd4d4e4c4f2.gif" /&gt; &lt;img src="http://www.centos.org/uploads/smil3dbd4d4e4c4f2.gif" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: American Megatrends Raid controller help&lt;/h2&gt;&lt;div align="center"&gt;Posted by Nigel on 2005/5/20 9:28:13&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;Hi&lt;br /&gt;&lt;br /&gt;This megaraid problem for CentOS 4/RHEL 4 has been kicking around since its release. Could someone just do us all a real favour and create and publish a driver disk to fix the problem. &lt;br /&gt;&lt;br /&gt;cheers&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: American Megatrends Raid controller help&lt;/h2&gt;&lt;div align="center"&gt;Posted by bradi on 2005/6/25 7:05:10&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;Hi,&lt;br /&gt;&lt;br /&gt;I have the same problem, Dell PowerEdge 6400 with PERC2/SC. Did anyone create a driver disk so I can install CentOS4?... I am not confident about compiling a driver (I have no idea how to do it) as the post does seem a little vague plus dont have another machine with Linux on it. I really dont want to install a Windows OS on this beast.&lt;br /&gt;&lt;br /&gt;Hoping someone can help or recommend another Linux Server distro that will install out of the box on this Server (I would prefer CentOS of course).&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;Brad&lt;br /&gt;Auckland, NZ.&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: How to make a driver disk for 4.0? - was help with american megatrends / perc&lt;/h2&gt;&lt;div align="center"&gt;Posted by wascallywabbit on 2005/8/5 21:11:42&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;As of five minutes ago I also have this &amp;quot;old hardware&amp;quot; problem...oye.&lt;br /&gt;&lt;br /&gt;I'm willing to give the recreate old driver suggestion a try but have&lt;br /&gt;never rebuilt a linux kernel (or an of its parts). I'm unsure what&lt;br /&gt;step 2) of your instructions entail...do you mean download the &lt;br /&gt;kernel and gcc 3.x source rpms to generate the megaraid.ko file&lt;br /&gt;(probably not)?&lt;br /&gt;&lt;br /&gt;Could you repost your instructions after piping it through a&lt;br /&gt;&amp;quot;for dummies&amp;quot; enhancer? Any help would be greatly appreciated.&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;The Wabbit&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: How to make a driver disk for 4.0? - was help with american megatrends / perc&lt;/h2&gt;&lt;div align="center"&gt;Posted by miclaro on 2005/8/5 22:05:10&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;I'm looking for this &amp;quot;for dummys&amp;quot; instructions either. the module compile part.&lt;br /&gt;&lt;br /&gt;I have compiled some 2.4 kernel modules before, but 2.6 seems a lot different. I have looked for instructions with no success.&lt;br /&gt;it would be great to have some detailed ones for making a driver disk.&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: How to make a driver disk for 4.0? - was help with american megatrends / perc&lt;/h2&gt;&lt;div align="center"&gt;Posted by William on 2005/8/8 18:57:59&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;I have NOT yet been able to make a working driver disk for CentOS 4. However, I have been able to piece together a bunch of other documents related to driver disk building. This DOES NOT WORK, but I want to share it here just in case all of us together can find a working solution. The problem I have is that the CentOS 4 installer can't mount the driver disk created by this procedure. It doesn't give any error message, it just refuses to recognize the disk. I believe this is really close, I just don't know what's missing.&lt;br /&gt;&lt;br /&gt;I have put some questions into the comments below. If anyone can answer them, we might get that much closer to a solution. Here's what I have:&lt;br /&gt;&lt;br /&gt;## Log into a machine that is running the 2.6.9-11.EL kernel (e.g.: a working CentOS 4 box).&lt;br /&gt;yum install kernel-devel&lt;br /&gt;&lt;br /&gt;## Download the megaraid driver source from a how-to article that ALMOST helps us.&lt;br /&gt;## Unfortunately, the CentOS 4 installer doesn't support Alt+F2 switching as this document describes.&lt;br /&gt;cd /usr/src&lt;br /&gt;wget &lt;a href="http://www.tuxyturvy.com/files/megaraid.tar.bz2" target="_blank"&gt;http://www.tuxyturvy.com/files/megaraid.tar.bz2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;## Make the source and driver disk directories for this build.&lt;br /&gt;mkdir /usr/src/megaraid&lt;br /&gt;mkdir /usr/src/megaraid/dd&lt;br /&gt;mkdir /usr/src/megaraid/dd/modules&lt;br /&gt;mkdir /usr/src/megaraid/dd/modules/2.6.9-11.EL&lt;br /&gt;mkdir /usr/src/megaraid/dd/modules/2.6.9-11.ELhugemem&lt;br /&gt;mkdir /usr/src/megaraid/dd/modules/2.6.9-11.ELsmp&lt;br /&gt;mkdir /usr/src/megaraid/dd/modules/2.6.9-5.0.3.EL&lt;br /&gt;&lt;br /&gt;## Extract the megaraid driver source.&lt;br /&gt;cd /usr/src/megaraid&lt;br /&gt;tar jxvfp /usr/src/megaraid.tar.bz2&lt;br /&gt;&lt;br /&gt;## Build one of the kernel module files.&lt;br /&gt;## Ignore all warnings.&lt;br /&gt;make -C /lib/modules/2.6.9-5.0.3.EL/build SUBDIRS=/usr/src/megaraid modules&lt;br /&gt;cp megaraid.o dd/modules/2.6.9-5.0.3.EL/&lt;br /&gt;cp megaraid.ko dd/modules/2.6.9-5.0.3.EL/&lt;br /&gt;rm -f *.o *.ko&lt;br /&gt;&lt;br /&gt;## Build one of the kernel module files.&lt;br /&gt;## Ignore all warnings.&lt;br /&gt;make -C /lib/modules/2.6.9-11.EL/build SUBDIRS=/usr/src/megaraid modules&lt;br /&gt;cp megaraid.o dd/modules/2.6.9-11.EL/&lt;br /&gt;cp megaraid.ko dd/modules/2.6.9-11.EL/&lt;br /&gt;rm -f *.o *.ko&lt;br /&gt;&lt;br /&gt;## Build one of the kernel module files.&lt;br /&gt;## Ignore all warnings.&lt;br /&gt;make -C /lib/modules/2.6.9-11.ELhugemem/build SUBDIRS=/usr/src/megaraid modules&lt;br /&gt;cp megaraid.o dd/modules/2.6.9-11.ELhugemem/&lt;br /&gt;cp megaraid.ko dd/modules/2.6.9-11.ELhugemem/&lt;br /&gt;rm -f *.o *.ko&lt;br /&gt;&lt;br /&gt;## Build one of the kernel module files.&lt;br /&gt;## Ignore all warnings.&lt;br /&gt;make -C /lib/modules/2.6.9-11.ELsmp/build SUBDIRS=/usr/src/megaraid modules&lt;br /&gt;cp megaraid.o dd/modules/2.6.9-11.ELsmp/&lt;br /&gt;cp megaraid.ko dd/modules/2.6.9-11.ELsmp/&lt;br /&gt;rm -f *.o *.ko&lt;br /&gt;&lt;br /&gt;## Compress all the generated driver module files for driver disk use.&lt;br /&gt;cd dd/modules/&lt;br /&gt;find . -type f | cpio -o -H crc | gzip -n9 &amp;gt; ../modules.cgz&lt;br /&gt;cd ..&lt;br /&gt;rm -rf modules&lt;br /&gt;&lt;br /&gt;## Create the disk-id file. IS THIS THE CORRECT FILE NAME???&lt;br /&gt;echo &amp;quot;LSI MegaRAID driver disk for CentOS 4.0&amp;quot; &amp;gt; centos-4&lt;br /&gt;&lt;br /&gt;## Create the driver disk identity file.&lt;br /&gt;vim modinfo&lt;br /&gt;---- add ----&lt;br /&gt;Version 0&lt;br /&gt;megaraid&lt;br /&gt;scsi&lt;br /&gt;&amp;quot;LSI MegaRAID for Legacy Dell PowerEdge Servers&amp;quot;&lt;br /&gt;-------------&lt;br /&gt;&lt;br /&gt;## Create the PCI Table.&lt;br /&gt;vim pcitable&lt;br /&gt;---- add ----&lt;br /&gt;0x101e 0x1960 &amp;quot;megaraid&amp;quot; &amp;quot;AMI|MegaRAID (OEM)&amp;quot;&lt;br /&gt;0x101e 0x9010 &amp;quot;megaraid&amp;quot; &amp;quot;AMI|MegaRAID&amp;quot;&lt;br /&gt;0x101e 0x9060 &amp;quot;megaraid&amp;quot; &amp;quot;AMI|MegaRAID&amp;quot;&lt;br /&gt;0x8086 0x1960 &amp;quot;megaraid&amp;quot; &amp;quot;AMI|Megaraid&amp;quot;&lt;br /&gt;-------------&lt;br /&gt;&lt;br /&gt;## Create an empty dependencies file.&lt;br /&gt;touch modules.dep&lt;br /&gt;&lt;br /&gt;## Dunno if this is necessary, but other driver disks I've seen (for RH6) have these attributes.&lt;br /&gt;chmod 0755 *&lt;br /&gt;&lt;br /&gt;## Insert a floppy disk into your floppy disk drive and make it into a driver disk. IS THIS CORRECT???&lt;br /&gt;fdformat -n /dev/fd0u1440&lt;br /&gt;mkfs -t ext2 /dev/fd0u1440&lt;br /&gt;mount /dev/fd0u1440 /media/floppy&lt;br /&gt;rm -rf /media/floppy/*&lt;br /&gt;cp * /media/floppy/&lt;br /&gt;umount /media/floppy&lt;br /&gt;&lt;br /&gt;## Done making the Driver Disk.&lt;br /&gt;## Insert disk 1 of the CentOS 4 install set into your Dell PowerEdge box and reboot the machine.&lt;br /&gt;## At the CentOS 4 install prompt, insert the Driver Disk into the machine and type:&lt;br /&gt;&amp;gt; linux dd&lt;br /&gt;&lt;br /&gt;## Error: Cannot mount /dev/fd0 ?!&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: How to make a driver disk for 4.0? - was help with american megatrends / perc&lt;/h2&gt;&lt;div align="center"&gt;Posted by miclaro on 2005/8/8 20:07:28&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;hmm.. very interesting, I have found this guide that worked for me in RH9, I think is the stuff that remains.&lt;br /&gt;It starts from an existing driver disk ;)&lt;br /&gt;&lt;br /&gt;-------&lt;br /&gt;Uncompress and un-cpio:&lt;br /&gt;&lt;br /&gt;mkdir /tmp/modules&lt;br /&gt;cd /tmp/modules&lt;br /&gt;zcat /mnt/initrd/modules/modules.cgz | cpio -i -d&lt;br /&gt;&lt;br /&gt;Remove and add modules:&lt;br /&gt;&lt;br /&gt;cd 2.4.7-10BOOT&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Make space for the new driver -- we only have 1.44MB to play&lt;br /&gt;&lt;br /&gt;with&lt;br /&gt;&lt;br /&gt;rm 8139too.o 8390.o ne4k-pci.o pcnet32.o&lt;br /&gt;cp ${driver_from}/${driver} .&lt;br /&gt;&lt;br /&gt;Rebuild modules.cgz, and put it back where it belongs.&lt;br /&gt;&lt;br /&gt;cd /tmp/modules&lt;br /&gt;find . -type f | cpio -H crc -o | gzip -9 &amp;gt; /tmp/modules.cgz&lt;br /&gt;mv /tmp/modules.cgz /mnt/initrd/modules/modules.cgz&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now we have to edit module-info and pcitable in /mnt/initrd/modules&lt;br /&gt;&lt;br /&gt;to reflect the changes we've made.&lt;br /&gt;&lt;br /&gt;If this is a hardware driver, we have to add a line to pcitable for&lt;br /&gt;the driver. We need to figure out the vendor and device codes for&lt;br /&gt;the hardware, and associate our driver with those codes.&lt;br /&gt;&lt;br /&gt;This is kind of tricky. I've been able to get these codes somewhat&lt;br /&gt;easily because the drivers I've been adding have been GigE drivers,&lt;br /&gt;and the computers that contain the gigE cards all had eepro100&lt;br /&gt;cards, as well. I installed linux on those computers over the eepro100&lt;br /&gt;card, and did &amp;quot;lspci -n&amp;quot;, which shows the vendor and device codes&lt;br /&gt;for each device in the system.&lt;br /&gt;&lt;br /&gt;However you obtain this information, add a line containing it to &lt;br /&gt;pcitable which looks like so:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;0x14e4 0x1644 &amp;quot;bcm5700&amp;quot; &amp;quot;BROADCOM Corporation NetXtreme BCM5700 Gigabit Ethernet&amp;quot;&lt;br /&gt;&lt;br /&gt;And add a section to module-info for the driver -- just follow the&lt;br /&gt;examples that are already there. Here's what I did for the&lt;br /&gt;bcm5700 module:&lt;br /&gt;&lt;br /&gt;bcm5700&lt;br /&gt;eth&lt;br /&gt;&amp;quot;Broadcom NetXtreme BCM5700 Gigabit ethernet&amp;quot;&lt;br /&gt;&lt;br /&gt;Also, remove the entries in module-info for the drivers we deleted.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;------&lt;br /&gt;&lt;br /&gt;also in alt-f2 or alt-f3 you can see the log, look what it says when loading the driver disk.&lt;br /&gt;I'll try your instructions when I have time.&lt;br /&gt;thanks.&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: How to make a driver disk for 4.0? - was help with american megatrends / perc&lt;/h2&gt;&lt;div align="center"&gt;Posted by William on 2005/8/8 20:16:11&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;Part of my hassle is that I cannot find an example of a working driver disk for CentOS 4. The other part is that I've been told on the CentOS and my local LUG mailing lists that a driver disk based on instructions from a 2.4 kernel will not work with the 2.6 kernel that CentOS 4 uses. For example, there is no BOOT kernel any longer. Additionally, *.ko files are used in lieu of the old *.o files.&lt;br /&gt;&lt;br /&gt;That said, I'm going to see if I can add anything from your post into my procedure and see if it works, anyway! :)&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: How to make a driver disk for 4.0? - was help with american megatrends / perc&lt;/h2&gt;&lt;div align="center"&gt;Posted by miclaro on 2005/8/8 20:37:21&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;try the disk based install of centos, the are driver disk images.&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: How to make a driver disk for 4.0? - was help with american megatrends / perc&lt;/h2&gt;&lt;div align="center"&gt;Posted by miclaro on 2005/8/9 20:23:25&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;i tried the:&lt;br /&gt;make -C /lib/modules/2.6.9-5.0.3.EL/build SUBDIRS=/usr/src/megaraid modules&lt;br /&gt;&lt;br /&gt;with other driver sources and I get some nasty errors... I think this make part is for kernel 2.4...&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: How to make a driver disk for 4.0? - was help with american megatrends / perc&lt;/h2&gt;&lt;div align="center"&gt;Posted by Volator on 2005/10/19 21:54:54&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;Any driver disk yet for us noobs?&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 0px"&gt;Re: How to make a driver disk for 4.0? - was help with american megatrends / perc&lt;/h2&gt;&lt;div align="center"&gt;Posted by JoshyJ on 2006/1/28 14:12:46&lt;/div&gt;&lt;div style="DISPLAY: block; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 6px; BORDER-BOTTOM: #ccc 2px solid; TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;What is the last release of CentOS that uses the older megaraid drivers?&lt;br /&gt;&lt;br /&gt;I downloaded the 3.6 version, but it seems to have the updated version also.&lt;br /&gt;&lt;/div&gt;&lt;div style="BORDER-TOP: #ccc 2px solid; PADDING-TOP: 12px"&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;This Post was from: http://www.centos.org/newbb/viewtopic.php?forum=29&amp;amp;topic_id=479&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-4181355982983485465?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/4181355982983485465/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/aic79xx_30.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/4181355982983485465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/4181355982983485465'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/aic79xx_30.html' title='有關Aic79XX 安裝方法~~~'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-7776233010059090590</id><published>2007-09-30T11:45:00.000+08:00</published><updated>2007-09-30T11:52:01.649+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Linux Shell腳本Ldd命令原理及使用方法</title><content type='html'>&lt;span class="a14c" id="zoom"&gt; &lt;p style="TEXT-INDENT: 2em"&gt;1、首先ldd不是一個可執行程式，而只是一個shell腳本 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2、ldd能夠顯示可執行模組的dependency，其原理是通過設置一系列的環境變數，如下：LD_TRACE_LOADED_OBJECTS、LD_WARN、LD_BIND_NOW、LD_LIBRARY_VERSION、LD_VERBOSE等。當LD_TRACE_LOADED_OBJECTS環境變數不為空時，任何可執行程式在運行時，它都會只顯示模組的dependency，而程式並不真正執行。要不你可以在shell終端測試一下，如下： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;(1) export LD_TRACE_LOADED_OBJECTS=1 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;(2) 再執行任何的程式，如ls等，看看程式的運行結果 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;3、ldd顯示可執行模組的dependency的工作原理，其實質是通過ld-linux.so（elf動態庫的裝載 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;器）來實現的。我們知道，ld-linux.so模組會先於executable模組程式工作，並獲得控制權，因此當上述的那些環境變數被設置時，ld-linux.so選擇了顯示可執行模組的dependency。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;4、實際上可以直接執行ld-linux.so模組，如：/lib/ld-linux.so.2 --list program（這相當於ldd program） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;ldd命令使用方法(摘自ldd --help) &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;名稱 ldd - 列印共用庫的依賴關係 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;大綱 ldd [選項]...　文件... &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;描述 ldd 輸出在命令行上指定的每個程式或共用庫需要的共用庫。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;選項 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;--version &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;列印ldd的版本號 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-v --verbose &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;列印所有資訊，例如包括符號的版本資訊 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-d --data-relocs &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;執行符號重部署，並報告缺少的目標對象（只對ELF格式適用） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-r --function-relocs &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;對目標對象和函數執行重新部署，並報告缺少的目標對象和函數（只對ELF格式適用） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;--help 用法資訊 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;注意: &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;ldd的標準版本與glibc2一起提供。Libc5與老版本以前提供，在一些系統中還存在。在libc5版本中長選項不支援。另一方面，glibc2版本不支援-V選項，只提供等價的--version選項。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;如果命令行中給定的庫名字包含'/'，這個程式的libc5版本將使用它作為庫名字；否則它將在標準位置搜索庫。運行一個當前目錄下的共用庫，加前綴&amp;quot;./&amp;quot;。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;錯誤: &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;ldd不能工作在a.out格式的共用庫上。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;ldd不能工作在一些非常老的a.out程式上，這些程式在支援ldd的編譯器發行前已經創建。如果你在這種類型的程式上使用ldd，程式將嘗試argc = 0的運行方式，其結果不可預知。 &lt;/p&gt;&lt;/span&gt;&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-7776233010059090590?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/7776233010059090590/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux-shellldd.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/7776233010059090590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/7776233010059090590'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux-shellldd.html' title='Linux Shell腳本Ldd命令原理及使用方法'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-273946616546008493</id><published>2007-09-30T11:44:00.000+08:00</published><updated>2007-09-30T11:45:29.489+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Apache的靜態/動態編譯在WEB環境的應用</title><content type='html'>&lt;span class="a14c" id="zoom"&gt; &lt;p style="TEXT-INDENT: 2em"&gt;&lt;font face="Times New Roman" size="3"&gt;系統和所需軟體： &lt;/font&gt;&lt;/p&gt;&lt;p&gt;　　Redhat9.0 &lt;br /&gt;　　apache:1.3.27 和 2.0.46 &lt;br /&gt;　　php: 4.3.2 &lt;br /&gt;　　mysql：4.0.13 &lt;br /&gt;　　&lt;br /&gt;　　1。首先來安裝mysql，這不是我們的重點，所以關於mysql的安裝配置我就很快過去了。&lt;br /&gt;　　&lt;br /&gt;　　tar zvxf mysql-4.0.13.tar.gz &lt;br /&gt;　　cd mysql-4.0.13 &lt;br /&gt;　　./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql &amp;amp;&amp;amp; &lt;br /&gt;　　make &amp;amp;&amp;amp; &lt;br /&gt;　　make install &lt;br /&gt;　　&lt;br /&gt;　　安裝完成！ &lt;br /&gt;　　&lt;br /&gt;　　然後初始化數據庫 &lt;br /&gt;　　&lt;br /&gt;　　/usr/local/mysql/bin/mysql_install_db &lt;br /&gt;　　&lt;br /&gt;　　設置許可權： &lt;br /&gt;　　&lt;br /&gt;　　chown -R root /usr/local/mysql &lt;br /&gt;　　&lt;br /&gt;　　複製配置文件; &lt;br /&gt;　　&lt;br /&gt;　　cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf &lt;br /&gt;　　&lt;br /&gt;　　啟動mysql： &lt;br /&gt;　　&lt;br /&gt;　　/use/local/mysql/bin/mysqld_safe --user=root &amp;amp; &lt;br /&gt;　　&lt;br /&gt;　　修改密碼：初始的root密碼是空的 &lt;br /&gt;　　&lt;br /&gt;　　/usr/local/mysql/bin/mysqladmin -u root -p password 1234 &lt;br /&gt;　　enter password: &lt;br /&gt;　　&lt;br /&gt;　　把密碼修改為1234，由於初始密碼為空，所以enter password直接回車就行 &lt;br /&gt;　　&lt;br /&gt;　　測試一下新的密碼： &lt;br /&gt;　　&lt;br /&gt;　　mysql -u root -p mysql &lt;br /&gt;　　enter password:1234 &lt;br /&gt;　　&lt;br /&gt;　　如果順利的話就能進入mysql。 &lt;br /&gt;　　&lt;br /&gt;　　好了mysql就講這麼多，有什麼問題也不要問我，我對mysql不是很熟悉。 &lt;br /&gt;　　&lt;br /&gt;　　好了下面是我們的重頭戲，我將分別通過靜態和動態DSO編譯apache+php &lt;br /&gt;　　&lt;br /&gt;　　至於什麼是靜態，什麼是DSO動態我這裡就不多講了，本人個人傾向大家用DSO動態編譯。 &lt;br /&gt;　　&lt;br /&gt;　　首先是apache1.3.29+php4.3.4+mysql4.0.13的靜態編譯 &lt;br /&gt;　　&lt;br /&gt;　　apache第一次編譯,並不要安裝，因為php的編譯需要apache至少已經編譯過一次 &lt;br /&gt;　　tar zvxf apache_1.3.27.tar.gz &lt;br /&gt;　　cd apache_1.3.27 &lt;br /&gt;　　./configure --prefix=/usr/local/apache &lt;br /&gt;　　&lt;br /&gt;　　編譯php &lt;br /&gt;　　&lt;br /&gt;　　tar zvxf php4.3.4.tar.gz &lt;br /&gt;　　cd php4.3.4&lt;br /&gt;　　./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql \ &lt;br /&gt;　　--with-apache=../apache_1.3.27 &amp;amp;&amp;amp; &lt;br /&gt;　　make &amp;amp;&amp;amp; &lt;br /&gt;　　make install &lt;br /&gt;　　&lt;br /&gt;　　第二次編譯安裝apache: &lt;br /&gt;　　cd ../apache_1.3.29&lt;br /&gt;　　./configure --prefi=/usr/local/apache \ &lt;br /&gt;　　--activate-module=src/modules/php4/libphp4.a &amp;amp;&amp;amp; &lt;br /&gt;　　make &amp;amp;&amp;amp; &lt;br /&gt;　　make install &lt;br /&gt;　　&lt;br /&gt;　　cp ../php4.3.4/php.ini.dist /usr/local/php/lib/php.ini &lt;br /&gt;　　&lt;br /&gt;　　修改/usr/local/apache/conf/httpd.conf &lt;br /&gt;　　&lt;br /&gt;　　搜尋 &lt;br /&gt;　　&lt;br /&gt;　　在此範圍添加 &lt;br /&gt;　　&lt;br /&gt;　　AddType application/x-httpd-php .php &lt;br /&gt;　　AddType application/x-httpd-php-source .phps &lt;br /&gt;　　&lt;br /&gt;　　注意：apache和php的源碼包在同一個目錄，--with-apache=../apache_1.3.27是指向源碼解壓的目錄 &lt;br /&gt;　　&lt;br /&gt;　　ok!靜態編譯完成，大家只要啟動一下伺服器 &lt;br /&gt;　　/usr/local/apache/bin/apachectl start &lt;br /&gt;　　&lt;br /&gt;　　然後些個php測試頁info.php:內容如下 &lt;br /&gt;　　&lt;br /&gt;　　&lt;!--p &lt;--&gt;　　phpinfo(); &lt;br /&gt;　　?&amp;gt; &lt;br /&gt;　　正常的話，應該能看到php的資訊了，恭喜你靜態編譯成功！！！ &lt;br /&gt;　　&lt;br /&gt;　　我們再來講講DSO動態編譯的方法： &lt;br /&gt;　　&lt;br /&gt;　　首先編譯安裝apache &lt;br /&gt;　　&lt;br /&gt;　　tar zvxf apache_1.3.29&lt;br /&gt;　　cd apache_1.3.29&lt;br /&gt;　　./configure --prefix=/usr/local/apache --enable-module=so \ &lt;br /&gt;　　--enable-module=rewrite --enable-shared=max &amp;amp;&amp;amp; &lt;br /&gt;　　make &amp;amp;&amp;amp; &lt;br /&gt;　　make install &lt;br /&gt;　　&lt;br /&gt;　　so模組用來提供DSO支援的apachehe核心模組，rewrite是地址重寫的模組，如果不需要可以不編譯enable－shared＝max是指除了so以外的所有標準模組都編譯成DSO模組。 &lt;br /&gt;　　&lt;br /&gt;　　然後編譯php &lt;br /&gt;　　&lt;br /&gt;　　tar zvxf php4.3.4.tar.gz &lt;br /&gt;　　cd php4.3.2 &lt;br /&gt;　　./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql \ &lt;br /&gt;　　--with-apxs=/usr/local/apache/bin/apxs &amp;amp;&amp;amp; &lt;br /&gt;　　make &amp;amp;&amp;amp; &lt;br /&gt;　　make install &lt;br /&gt;　　&lt;br /&gt;　　然後修改httpd.conf，方法同靜態編譯的方法 &lt;br /&gt;　　&lt;br /&gt;　　OK，DSO動態編譯就完成了，大家應該看出明堂來了吧，中間有什麼區別應該看的很清楚了吧！！！ &lt;br /&gt;　　&lt;br /&gt;　　接下來我們講apache2.0.46+php4.3.2的編譯方法，我這裡只講DSO動態編譯，靜態編譯實在沒有時間測試了.&lt;br /&gt;　　&lt;br /&gt;　　一樣現編譯安裝apache &lt;br /&gt;　　&lt;br /&gt;　　tar zvxf httpd-2.0.46.tar.gz &lt;br /&gt;　　&lt;br /&gt;　　cd httpd-2.0.46 &lt;br /&gt;　　&lt;br /&gt;　　./configure --prefix=/usr/local/apache2 --enable-so \ &lt;br /&gt;　　--enable-mods-shared=most &amp;amp;&amp;amp; &lt;br /&gt;　　make &amp;amp;&amp;amp; &lt;br /&gt;　　make install &lt;br /&gt;　　&lt;br /&gt;　　&lt;br /&gt;　　大家注意了--enable-so相當與1.3.27的--enable-module=so，而--enable-mods-shared=most又等同與以前的 &lt;br /&gt;　　--enable-shared=max 這些區別大家要注意了，否則編譯錯了不要找我 &lt;br /&gt;　　&lt;br /&gt;　　然後還是編譯PHP &lt;br /&gt;　　&lt;br /&gt;　　tar zvxf php4.3.2.tar.gz &lt;br /&gt;　　&lt;br /&gt;　　./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql \ &lt;br /&gt;　　--with-apxs2=/usr/local/apache2/bin/apxs &amp;amp;&amp;amp; &lt;br /&gt;　　make &amp;amp;&amp;amp; &lt;br /&gt;　　make install &lt;br /&gt;　　&lt;br /&gt;　　注意這裡是apxs2！！！ &lt;br /&gt;　　&lt;br /&gt;　　修改httpd.conf與1.3.27也有所不同，大家尋找Add Type application/x-tar .tgz 在下面添加 &lt;br /&gt;　　&lt;br /&gt;　　AddType application/x-httpd-php .php &lt;br /&gt;　　AddType application/x-httpd-php-source .phps &lt;br /&gt;　　&lt;br /&gt;　　另外要顯示中文的話， &lt;br /&gt;　　&lt;br /&gt;　　修改: &lt;br /&gt;　　&lt;br /&gt;　　AddDefaultCharset gb2312 &lt;br /&gt;　　&lt;br /&gt;　　啟動一下apache &lt;br /&gt;　　&lt;br /&gt;　　/usr/local/apache2/bin/apachectl start &lt;br /&gt;　　&lt;br /&gt;　　用那個info.php測試一下。&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-273946616546008493?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/273946616546008493/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/apacheweb.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/273946616546008493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/273946616546008493'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/apacheweb.html' title='Apache的靜態/動態編譯在WEB環境的應用'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-3531433611634373301</id><published>2007-09-30T11:43:00.000+08:00</published><updated>2007-09-30T11:44:02.507+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Linux系統上把PHP編譯進Apache靜態內核</title><content type='html'>&lt;span class="a14c" id="zoom"&gt; &lt;p style="TEXT-INDENT: 2em"&gt;說明：Apache整合PHP有兩種方式：一種是DSO模式，把PHP當作Apache的外部模組來調用，這樣增加了Apache的靈活性，但會帶來5%的性能降低；另一種方式是把PHP編譯進Apache的內核，這樣犧牲了以後調整的靈活性（每次對PHP的重新編譯，都需要再次編譯Apache），但性能會高一些。對Perl也是如此。相比之下，本人更願意使用第二種方式，即把PHP編譯進Apache的靜態內核。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;一.編譯Apache： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;1. 進入Apache展開目錄； &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2. ./configure - -prefix=/usr/local/apache1.3 - -disable-module=all\ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;- -enable-module=access - -enable-module=log_config \ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;- -enable-module=dir - -enable-module=mime \ ##Apache工作的基本模組 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;（說明：如果以後使用DSO方式，則編譯時加上 - -enable-mdule=so） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;二.安裝PHP： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;1. 進入PHP展開目錄； &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2. ./configure - -prefix=/usr/local/php4 \ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;- -with-apache=../apache_1.3.27 ##這裡指定Apache的源代碼目錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;3. make;make install &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;三.安裝Apache： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;1. 進入Apache展開目錄； &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2. ./configure - -prefix=/usr/local/apache1.3 - -disable-module=all \ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;- -enable-module=access - -enable-module=log_config \ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;- -enable-module=dir - -enable-module=mime \ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;- -activate-module=src/modules/php4/libphp4.a ##把PHP模組編譯進去 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;3. make;make install &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;四。配置Apache： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;修改httpd.conf文檔： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;1.Timeout 300---&amp;gt;Timeout 120 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2.MaxKeepAliveRequests 100 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;3.KeepAliveTimeout 5 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;4.ServerSignature on---&amp;gt;ServerSignature off &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;5.Options Indexes FollowSymLinks 行把indexes刪掉（目錄的Options不要帶index選項） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;6.將Apache運行的用戶和組改為nobody &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;7.MaxClients 150——&amp;gt;MaxClients 1500 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;（該參數是多少有一個基本的演算法，例如2G的機器，一個Apache＋PHP進程大概消耗4M記憶體，則最高效率的進程數為2g/4m * 2=1000，最大進程數為1000*1.5=1500；1.3下要調整到高於256須在編譯Apache前修改其源代碼） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;（對apache2.0版本，將worker MPM字段裏的MaxClients 150——&amp;gt;MaxClients 1500） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;8.DirectoryIndex index.html index.html.var 後面加上index.php &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;9.搜尋包含大量AddType命令的小節，添加下面這一行： AddType application/x-httpd-php .php &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Apache版本：Apache-2.0.47 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;PHP版本：PHP-4.3.2 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;a.安裝Apache： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;進入Apache安裝目錄； &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;./configure - -prefix=/usr/local/apache2 - -enable-so &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;make;make install &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;b.安裝PHP： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;進入PHP安裝目錄； &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;./configure - -prefix=/usr/local/php4 - &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-with-apxs2=/usr/local/apache2/bin/apxs &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;make;make install &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;c.配置Apache： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;修改httpd.conf，上述配置工作照做； &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;另外修改的地方： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;LoadModule php4_module modules/libphp4.so （這一項在裝完php後會自動添加） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;AddType application/x-httpd-php .php （這一項手工添加） &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-3531433611634373301?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/3531433611634373301/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/linuxphpapache.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/3531433611634373301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/3531433611634373301'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/linuxphpapache.html' title='Linux系統上把PHP編譯進Apache靜態內核'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-424934586714866491</id><published>2007-09-30T11:41:00.000+08:00</published><updated>2007-09-30T11:42:24.055+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>MYSQL維護筆記</title><content type='html'>使用MYSQL服務的一些經驗，主要從以下幾個方面考慮的MYSQL服務規劃設計。 :|7&lt;pdq  /&gt;1 MYSQL服務的安裝/配置的通用性； U}{we iW  &lt;br /&gt;2 系統的升級和數據遷移方便性； lFZ_D8&lt;z  /&gt;3 備份和系統快速恢復； #VHjN5]_  &lt;br /&gt;YBO\24W  &lt;br /&gt;MYSQL伺服器的規劃 bQ&amp;quot;K[V  &lt;br /&gt;================= &amp;quot; Dj @JW  &lt;br /&gt;為了以後維護，升級備份的方便和數據的安全性，最好將MYSQL程式文件和數據分別安裝在“不同的硬體”上。 gb* 4o  &lt;br /&gt;/ e7&amp;gt;40J2  &lt;br /&gt;/usr &amp;lt;== 作業系統 }==&amp;gt; 硬碟1 L|&amp;gt;0#pSD  &lt;br /&gt;/home/mysql &amp;lt;== mysql應用程式 Q_bR}J8&amp;lt;  &lt;br /&gt;... Mab m/&amp;lt;/  &lt;br /&gt;/data/app_1/ &amp;lt;== 應用數據和腳本 }==&amp;gt; 硬碟2 kg6, \4   &lt;br /&gt;/data/app_2/ &amp;gt;T-x&amp;amp;Mqy%  &lt;br /&gt;/data/app_3/ o)Cs2hvQ  &lt;br /&gt;{@b\mH!a  &lt;br /&gt;mysql服務的安裝和服務的啟動︰ qo;^a:  &lt;br /&gt;MYSQL一般使用當前STABLE的版本，盡量不使用--with-charset=選項，我感覺with-charset只在按字母排序的時候才有用，這些選項會對數據的遷移帶來很多麻煩。 &amp;gt;&lt;ya /&gt;:g  &lt;br /&gt;configure --prefix=/home/mysql 3[e ?(4c  &lt;br /&gt;make (Qm&amp;quot;j8 S  &lt;br /&gt;make install )cRM84w= x  &lt;br /&gt;OOEQ8:3u}  &lt;br /&gt;服務的啟動和停止 (&amp;quot;beI6W?  &lt;br /&gt;================ 4B{%G%e  &lt;br /&gt;1 複製缺省的mysql/var/mysql到 /data/app_1/目錄下， A 6YwkC&amp;quot;d  &lt;br /&gt;2 MYSQLD的啟動腳本︰start_mysql.sh +$eCQ  &lt;br /&gt;#!/bin/sh =rUBvF|k&amp;quot;2  &lt;br /&gt;rundir=`dirname &amp;quot;$0&amp;quot;` _yH1!2LY  &lt;br /&gt;echo &amp;quot;$rundir&amp;quot; taC/a?=?  &lt;br /&gt;/home/mysql/bin/safe_mysqld --user=mysql --pid-file=&amp;quot;$rundir&amp;quot;/mysql.pid --datadir=&amp;quot;$rundir&amp;quot;/var &amp;quot;&lt;a href="mailto:$@"&gt;$@&amp;quot;\&lt;/a&gt; &amp;amp;%}5dTO  &lt;br /&gt;-O max_connections=500 -O wait_timeout=600 -O key_buffer=32M --port=3402 --socket=&amp;quot;$rundir&amp;quot;/mysql.sock &amp;amp; ujQ/Y(!  &lt;br /&gt;CP? J6*5P|  &lt;br /&gt;註釋︰ ~~1j$  &lt;br /&gt;--pid-file=&amp;quot;$rundir&amp;quot;/mysql.pid --socket=&amp;quot;$rundir&amp;quot;/mysql.sock --datadir=&amp;quot;$rundir&amp;quot;/var Q*iu:/&amp;quot;j  &lt;br /&gt;目的都是將相應數據和應用臨時文件放在一起； O$5~vfYB!  &lt;br /&gt;-O 后面一般是伺服器啟動全局變量優化參數，有時候需要根據具體應用調整； OW^^RWuXl  &lt;br /&gt;--port: 不同的應用使用PORT參數分佈到不同的服務上去，一個服務可以提供的連接數一般是MYSQL服務的主要瓶頸； !qE]E2:7  &lt;br /&gt;p7K.Se)  &lt;br /&gt;修改不同的服務到不同的端口后，在rc.local文件中加入︰ N'{* {:D  &lt;br /&gt;/data/app_1/start_mysql.sh FN?CDtD!9  &lt;br /&gt;/data/app_2/start_mysql.sh =ek$i]=s  &lt;br /&gt;/data/app_3/start_mysql.sh t1b-gekNZ  &lt;br /&gt;注意︰必須寫全路徑 0{&amp;amp;4\EjRP  &lt;br /&gt;j# P R;=dI  &lt;br /&gt;3 MYSQLD的停止腳本︰stop_mysql.sh [' Tx0.d  &lt;br /&gt;#!/bin/sh dO`Oc\$cE  &lt;br /&gt;rundir=`dirname &amp;quot;$0&amp;quot;` ,A~rbhk_  &lt;br /&gt;echo &amp;quot;$rundir&amp;quot; Gk\{eat1  &lt;br /&gt;/home/mysql/bin/mysqladmin -u mysql -S&amp;quot;$rundir&amp;quot;/mysql.sock shutdown AY7&amp;quot;0 3Ms  &lt;br /&gt;IK,n`oT4  &lt;br /&gt;使用這個腳本的好處在于︰ Swa;&amp;gt;$ ]K  &lt;br /&gt;1 多個服務啟動︰只需要修改腳本中的--port=參數。單個目錄下的數據和服務腳本都是可以獨立打包的。 (-[LhXt,l  &lt;br /&gt;2 所有服務相應文件都位于/data/app_1/目錄下︰比如︰mysql.pid mysql.sock，當一台伺服器上啟動多個服務時，多個服務不會互相影響。但都放到缺省的/tmp/下則有可能被其他應用誤刪。 F;syOe#i  &lt;br /&gt;3 當硬碟1出問題以後，直接將硬碟2放到一台裝好MYSQL的伺服器上就可以立刻恢復服務（如果放到my.cnf裡則還需要備份相應的配置文件）。 D$ RB9_f]i  &lt;br /&gt;(Y%1J)  &lt;br /&gt;服務啟動后/data/app_1/下相應的文件和目錄分佈如下︰ &amp;gt;y{XZ(  &lt;br /&gt;/data/app_1/ 1%p*&lt;z  /&gt;start_mysql.sh 服務啟動腳本 |nsest  &lt;br /&gt;stop_mysql.sh 服務停止腳本 = |\WV  &lt;br /&gt;mysql.pid 服務的進程ID poM&amp;gt;5Ko   &lt;br /&gt;mysql.sock 服務的SOCK ORdSo  &lt;br /&gt;var/ 數據區 EQks0vR/D  &lt;br /&gt;mysql/ 用戶庫 0/2KOEO  &lt;br /&gt;app_1_db_1/ 應用庫 9OQau6w  &lt;br /&gt;app_2_db_2/ bWqIw{nU  &lt;br /&gt;... cTI-!c` o  &lt;br /&gt;/data/app_2/ ynW1*|(z  &lt;br /&gt;... &amp;quot;w.#ZF  &lt;br /&gt;:k10kvF1A  &lt;br /&gt;查看所有的應用進程ID︰ X/Nx1B8&amp;lt;  &lt;br /&gt;cat /data/*/mysql.pid @boxqQGcX  &lt;br /&gt;&lt;sx!,f\`  /&gt;查看所有數據庫的錯誤日誌︰ p\@Y9/  &lt;br /&gt;cat /data/*/var/*.err YX5GOgD&amp;gt;  &lt;br /&gt;aANSzylW1  &lt;br /&gt;個人建議︰MYSQL的主要瓶頸在PORT的連接數上，因此，將表架構優化好以後，相應單個MYSQL服務的CPU佔用仍然在10％以上，就要考慮將服務拆分到多個PORT上營運了。 bswmGwg  &lt;br /&gt;&amp;gt;Q=9P|&amp;amp;+9k  &lt;br /&gt;服務的備份 n?X;L#&amp;amp;X4  &lt;br /&gt;========== )23f4`DE  &lt;br /&gt;盡量使用MYSQL DUMP而不是直接備份數據文件，以下是一個按weekday將數據輪循備份的腳本︰備份的間隔和週期可以根據備份的需求確定 zC 2=&amp;lt;fN/  &lt;br /&gt;/home/mysql/bin/mysqldump -S/data/app_1/mysql.sock -umysql db_name | gzip -f&amp;gt;/path/to/backup/db_name.`data +%w`.dump.gz jr(Tn T/.  &lt;br /&gt;因此寫在CRONTAB中一般是︰ Fz =0 `  &lt;br /&gt;* 6 * * * /home/mysql/bin/mysqldump -S/data/app_1/mysql.sock -umysql db_name | gzip -f&amp;gt;/path/to/backup/db_name.`data +\%w`.dump.gz kh0: V&amp;lt;(  &lt;br /&gt;注意︰ A 8&amp;amp;9e  &lt;br /&gt;1 在crontab中′%′需要轉義成′\%′ 4w3#^??S  &lt;br /&gt;2 根據日誌統計，應用負載最低的時候一般是在早上6點 ucK|aqD  &lt;br /&gt;JCUw)](W!  &lt;br /&gt;先備份在本地然后傳到遠程的備份伺服器上，或者直接建立一個數據庫備份帳號，直接在遠程的伺服器上備份，遠程備份只需要將以上腳本中的-S /path/to/msyql.sock改成-h IP.ADDRESS即可。 oO|B- J  &lt;br /&gt;Wq- 3S*ud  &lt;br /&gt;數據的恢復和系統的升級 &lt;a href="mailto:k@D"&gt;k@D&lt;/a&gt;^  &lt;br /&gt;====================== cmg:WV  &lt;br /&gt;日常維護和數據遷移︰在數據盤沒有被破壞的情況下 Yr G.D  &lt;br /&gt;硬碟一般是系統中壽命最低的硬體。而系統（包括作業系統和MYSQL應用）的升級和硬體升級，都會遇到數據遷移的問題。 y#2fhn  &lt;br /&gt;只要數據不變，先裝好伺服器，然后直接將數據盤（硬碟2）安裝上，只需要將啟動腳本重新加入到rc.local文件中，系統就算是很好的恢復了。 ,Z=WamY#@  &lt;br /&gt;.1~%Ki  &lt;br /&gt;災難恢復︰數據本身被破壞的情況下 :X&amp;amp;E_a8w  &lt;br /&gt;確定破壞的時間點，然后從備份數據中恢復。 3_t;(:  &lt;br /&gt;k/&amp;gt;o0% U  &lt;br /&gt;應用的設計要點 p4s)X^_  &lt;br /&gt;============== c&amp;quot;!z7eN4  &lt;br /&gt;mZp1WX_Q3  &lt;br /&gt;非用數據庫不可嗎？ m4Kr#t fK  &lt;br /&gt;數據庫的確可以簡化很多應用的架構設計，但本身也是一個系統資源消耗比較大的應用。所以很多應用如果沒有很高的實時統計需求的話，完全可以先記錄到文件日誌中，定期的導入到數據庫中做后續統計分析。如果還是需要記錄2維表架構，架構足夠簡單的話可以使用DBM架構。即使需要使用數據庫的，應用如果沒有太複雜的數據完整性需求的化，完全可以不使用那些支持外鍵的商業數據庫， \{~r*F  &lt;br /&gt;數據庫服務的主要瓶頸︰單個服務的連接數 Q nr4@{v  &lt;br /&gt;對于一個應用來說，如果數據庫表架構的設計能夠按照數據庫原理的范式來設計的話，並且已經使用了最新版本的MYSQL，並且按照比較優化的模式營運了，那么最後的主要瓶頸一般在于單個服務的連接數，即使一個數據庫可以支持並發500個連接，最好也不要把應用用到這個地步，因為並發連接數過多數據庫服務本身用于調度的線程的開銷也會非常大了。所以如果應用允許的話︰讓一台機器多跑幾個MYSQL服務分擔。將服務均衡的規劃到多個MYSQL服務端口上︰比如app_1 ==&amp;gt; 3301 app_2 ==&amp;gt; 3302...app_9 ==&amp;gt; 3309。一個1G內存的機器跑上10個MYSQL是很正常的。讓10個MYSQLD承擔1000個並發連接效率要比讓2個MYSQLD承擔1000個效率高的多。當然，這樣也會帶來一些應用編程上的複雜度； $l- %g|d  &lt;br /&gt;使用單獨的數據庫伺服器（不要和前台WEB服務搶內存），MYSQL擁有更多的內存就可能能有效的進行結果集的緩存； *20!&amp;lt;S  &lt;br /&gt;應用盡量使用PCONNECT和polling機製，用于節省MYSQL服務建立連接的開銷； E &amp;lt; {F[  &lt;br /&gt;表的橫向拆分︰讓最常被訪問的10%的數據放在一個小表裡，90%的歷史數據放在一個歸檔表裡，數據中間透過定期“搬家”和定期刪除無效數據來節省。這樣對于應用來說總是在10%數據中進行選擇，比較有利于數據的緩存，不要指望MYSQL中對單表記錄數在10萬級以上還有比較高的效率。 =0 @F|r  &lt;br /&gt;表的縱向拆分（過渡范化）︰將所有的定長字段（char, int等）放在一個表裡，所有的變長字段（varchar,text,blob等）放在另外一個表裡，2個表之間透過主鍵關聯，這樣，定長字段表可以得到很大的優化（甚至可以使用HEAP表類型，數據完全在內存中存取），這裡也說明另外一個原則，對于我們來說，盡量使用定長字段可以透過空間的損失換取訪問效率的提升。MYSQL之所以支持多種表類型，實際上是針對不同應用提供了不同的優化模式； w+ 2Y$?&lt;rv  /&gt;仔細的檢查應用的索引設計，甚至在服務啟動中加入 --log-slow-queries[=file]用于跟蹤分析應用瓶頸。 2i&amp;amp;]R H&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-424934586714866491?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/424934586714866491/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/mysql_30.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/424934586714866491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/424934586714866491'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/mysql_30.html' title='MYSQL維護筆記'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-4658391817864830350</id><published>2007-09-30T11:39:00.001+08:00</published><updated>2007-09-30T11:40:05.819+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Linux系統攻略：關於Mac地址綁定的問題</title><content type='html'>&lt;table class="p11" cellspacing="0" cellpadding="0" width="560" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="WORD-WRAP: break-word" align="left"&gt;&lt;p class="a14c" style="TEXT-INDENT: 2em"&gt;&lt;span class="a14c" id="zoom"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p&gt;　　有時局域網內有的機器中毒了，就會一直髮送arp病毒包，這些arp病毒包會誤導你的機器對網關mac地址的解析。所以這時就需要邦定mac地址了。&lt;br /&gt;&lt;br /&gt;　　兩種方法：&lt;/p&gt;&lt;p&gt;　　1，列出局域網內所有機器的mac地址。&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;center&gt;&lt;ccid_nobr /&gt;&lt;table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"&gt;&lt;pre&gt;&lt;ccid_code /&gt;# arp&lt;br /&gt;Address HWtype HWaddress Flags Mask Iface&lt;br /&gt;192.168.1.1 ether 00:07:E9:2A:6F:C6 C&lt;/ccid_code /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ccid_nobr /&gt;&lt;/center&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;然後，綁定mac地址， &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;center&gt;&lt;ccid_nobr /&gt;&lt;table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"&gt;&lt;pre&gt;&lt;ccid_code /&gt;#arp -s 192.168.1.1 00:07:E9:2A:6F:C6&lt;/ccid_code /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ccid_nobr /&gt;&lt;/center&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;注意：這裡192.168.1.1有可能有換成hostname，假如你的網關設置了hostname的話。&lt;br /&gt;&lt;br /&gt;　　2，創建一個/etc/ethers文件，比如你要綁定網關，那就在/etc/ethers裏寫上：&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;code style="FONT-STYLE: italic"&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;192&lt;span style="COLOR: rgb(0,0,204)"&gt;.&lt;/span&gt;168&lt;span style="COLOR: rgb(0,0,204)"&gt;.&lt;/span&gt;1&lt;span style="COLOR: rgb(0,0,204)"&gt;.&lt;/span&gt;1 00&lt;span style="COLOR: rgb(0,0,204)"&gt;:&lt;/span&gt;07&lt;span style="COLOR: rgb(0,0,204)"&gt;:&lt;/span&gt;E9&lt;span style="COLOR: rgb(0,0,204)"&gt;:&lt;/span&gt;2A&lt;span style="COLOR: rgb(0,0,204)"&gt;:&lt;/span&gt;6F&lt;span style="COLOR: rgb(0,0,204)"&gt;:&lt;/span&gt;C6&lt;/span&gt;&lt;/code&gt;&lt;br style="FONT-STYLE: italic" /&gt;&lt;/div&gt;&lt;br /&gt;　　然後執行 &lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;center&gt;&lt;ccid_nobr /&gt;&lt;table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"&gt;&lt;pre&gt;&lt;ccid_code /&gt;#arp -f&lt;/ccid_code /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ccid_nobr /&gt;&lt;/center&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;這樣就綁定了網關的地址，如果還有綁定其他機器的話，那就繼續添加記錄。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　注意：每次重啟機器後需要重新綁定mac地址。&lt;/p&gt;&lt;p&gt;　　另外，mac地址的綁定需要雙向的，即機器a綁定了機器b，機器b也要綁定機器a，這樣arp病毒才會被徹底擋住。&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-4658391817864830350?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/4658391817864830350/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/linuxmac.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/4658391817864830350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/4658391817864830350'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/linuxmac.html' title='Linux系統攻略：關於Mac地址綁定的問題'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-3061263228403049507</id><published>2007-09-30T11:38:00.001+08:00</published><updated>2007-09-30T11:38:45.770+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='資安'/><title type='text'>病毒 木马 进程 速查表</title><content type='html'>&lt;span class="tpc_content"&gt;关键字：病毒 木马 进程 速查表 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;【导读】本文含概了windows几乎所有常见的病毒、木马的进程名程，检查你的系统进程，看看是否中招。 &lt;br /&gt;&lt;br /&gt;exe → BF Evolution             Mbbmanager.exe → 聪明基因 &lt;br /&gt;&lt;br /&gt;_.exe → Tryit                 Mdm.exe → Doly 1.6-1.7 &lt;br /&gt;&lt;br /&gt;Aboutagirl.exe → 初恋情人         Microsoft.exe → 传奇密码使者 &lt;br /&gt;&lt;br /&gt;Absr.exe → Backdoor.Autoupder       Mmc.exe → 尼姆达病毒 &lt;br /&gt;&lt;br /&gt;Aplica32.exe → 将死者病毒         Mprdll.exe → Bla &lt;br /&gt;&lt;br /&gt;Avconsol.exe → 将死者病毒           Msabel32.exe → Cain and Abel   &lt;br /&gt;&lt;br /&gt;Avp.exe → 将死者病毒             Msblast.exe → 冲击波病毒 &lt;br /&gt;&lt;br /&gt;Avp32.exe → 将死者病毒           Mschv.exe → Control &lt;br /&gt;&lt;br /&gt;Avpcc.exe → 将死者病毒           Msgsrv36.exe → Coma &lt;br /&gt;&lt;br /&gt;Avpm.exe → 将死者病毒             Msgsvc.exe → 火凤凰 &lt;br /&gt;&lt;br /&gt;Avserve.exe → 震荡波病毒           Msgsvr16.exe → Acid Shiver &lt;br /&gt;&lt;br /&gt;Bbeagle.exe → 恶鹰蠕虫病毒         Msie5.exe → Canasson &lt;br /&gt;&lt;br /&gt;Brainspy.exe → BrainSpy vBeta       Msstart.exe → Backdoor.livup &lt;br /&gt;&lt;br /&gt;Cfiadmin.exe → 将死者病毒         Mstesk.exe → Doly 1.1-1.5 &lt;br /&gt;&lt;br /&gt;Cfiaudit.exe → 将死者病毒         Netip.exe → Spirit 2000 Beta &lt;br /&gt;&lt;br /&gt;Cfinet32.exe → 将死者病毒         Netspy.exe → 网络精灵 &lt;br /&gt;&lt;br /&gt;Checkdll.exe → 网络公牛           Notpa.exe → Backdoor &lt;br /&gt;&lt;br /&gt;Cmctl32.exe → Back Construction     Odbc.exe → Telecommando &lt;br /&gt;&lt;br /&gt;Command.exe → AOL Trojan           Pcfwallicon.exe → 将死者病毒 &lt;br /&gt;&lt;br /&gt;Diagcfg.exe → 广外女生           Pcx.exe → Xplorer &lt;br /&gt;&lt;br /&gt;Dkbdll.exe → Der Spaeher           Pw32.exe → 将死者病毒 &lt;br /&gt;&lt;br /&gt;Dllclient.exe → Bobo             Recycle - Bin.exe → s**tHeap &lt;br /&gt;&lt;br /&gt;Dvldr32.exe → 口令病毒           Regscan.exe → 波特后门变种 &lt;br /&gt;&lt;br /&gt;Esafe.exe → 将死者病毒           Tftp.exe → 尼姆达病毒 &lt;br /&gt;&lt;br /&gt;Expiorer.exe → Acid Battery         Thing.exe → Thing &lt;br /&gt;&lt;br /&gt;Feweb.exe → 将死者病毒           User.exe → Schwindler &lt;br /&gt;&lt;br /&gt;Flcss.exe → Funlove病毒           Vp32.exe → 将死者病毒 &lt;br /&gt;&lt;br /&gt;Frw.exe → 将死者病毒             Vpcc.exe → 将死者病毒 &lt;br /&gt;&lt;br /&gt;Icload95.exe → 将死者病毒         Vpm.exe → 将死者病毒 &lt;br /&gt;&lt;br /&gt;Icloadnt.exe → 将死者病毒         Vsecomr.exe → 将死者病毒 &lt;br /&gt;&lt;br /&gt;Icmon.exe → 将死者病毒           Server.exe → Revenger, WinCrash, YAT &lt;br /&gt;&lt;br /&gt;Icsupp95.exe → 将死者病毒         Service.exe → Trinoo &lt;br /&gt;&lt;br /&gt;Iexplore.exe → 恶邮差病毒         Setup.exe → 密码病毒或Xanadu &lt;br /&gt;&lt;br /&gt;Rpcsrv.exe → 恶邮差病毒           Sockets.exe → Vampire &lt;br /&gt;&lt;br /&gt;Rundll.exe → SCKISS爱情森林         Something.exe → BladeRunner &lt;br /&gt;&lt;br /&gt;Rundll32.exe→ 狩猎者病毒           Spfw.exe → 瑞波变种PX       &lt;br /&gt;&lt;br /&gt;Runouce.exe → 中国黑客病毒         Svchost.exe (线程105) → 蓝色代码 &lt;br /&gt;&lt;br /&gt;Scanrew.exe → 传奇终结者           Sysedit32.exe → SCKISS爱情森林 &lt;br /&gt;&lt;br /&gt;Scvhost.exe → 安哥病毒           Sy***plor.exe → wCrat &lt;br /&gt;&lt;br /&gt;Server 1. 2.exe → Spirit 2000 1.2fixed Sy***plr.exe → 冰河 &lt;br /&gt;&lt;br /&gt;Intel.exe → 传奇叛逆             Syshelp.exe → 恶邮差病毒 &lt;br /&gt;&lt;br /&gt;Internet.exe → 传奇幽灵           Sysprot.exe → Satans Back Door &lt;br /&gt;&lt;br /&gt;Internet.exe → 网络神偷           Sysrunt.exe → Ripper &lt;br /&gt;&lt;br /&gt;Kernel16.exe → Transmission Scount   System.exe → s**tHeap &lt;br /&gt;&lt;br /&gt;Kernel32.exe → 坏透了或冰河         System32.exe → DeepThroat 1.0 &lt;br /&gt;&lt;br /&gt;Kiss.exe → 传奇天使             Systray.exe → DeepThroat 2.0-3.1 &lt;br /&gt;&lt;br /&gt;Krn132.exe → 求职信病毒           Syswindow.exe → Trojan Cow &lt;br /&gt;&lt;br /&gt;Libupdate.exe → BioNet           Task_Bar.exe → WebEx &lt;br /&gt;&lt;br /&gt;Load.exe → 尼姆达病毒             Taskbar → 密码病毒 Frethem &lt;br /&gt;&lt;br /&gt;Lockdown2000.exe → 将死者病毒       Taskmon.exe → 诺维格蠕虫病毒 &lt;br /&gt;&lt;br /&gt;Taskmon32 → 传奇黑眼睛           Tds2-98.exe → 将死者病毒 &lt;br /&gt;&lt;br /&gt;Tds2-Nt.exe → 将死者病毒           Temp $01.exe → Snid &lt;br /&gt;&lt;br /&gt;Tempinetb00st.exe → The Unexplained   Tempserver.exe → Delta Source &lt;br /&gt;&lt;br /&gt;Vshwin32.exe → 将死者病毒         Vsstart.exe → 将死者病毒 &lt;br /&gt;&lt;br /&gt;Vw32.exe → 将死者病毒             Windown.exe → Spirit 2000 1.2 &lt;br /&gt;&lt;br /&gt;Windows.exe → 黑洞2000           Winfunctions.exe → Dark Shadow &lt;br /&gt;&lt;br /&gt;Wingate.exe → 恶邮差病毒           Wink????.exe → 求职信病毒 &lt;br /&gt;&lt;br /&gt;Winl0g0n.exe → 笑哈哈病毒         Winmgm32.exe → 巨无霸病毒 &lt;br /&gt;&lt;br /&gt;Winmsg32.exe → Xtcp             Winprot.exe → Chupachbra &lt;br /&gt;&lt;br /&gt;Winprotecte.exe → Stealth         Winrpc.exe → 恶邮差病毒 &lt;br /&gt;&lt;br /&gt;Winrpcsrv.exe → 恶邮差病毒         Winserv.exe → Softwarst &lt;br /&gt;&lt;br /&gt;Wubsys.exe → 传奇猎手             Winupdate.exe → Sckiss爱情森林 &lt;br /&gt;&lt;br /&gt;Winver.exe → Sckiss爱情森林         Winvnc.exe → 恶邮差病毒 &lt;br /&gt;&lt;br /&gt;Winzip.exe → ShadowPhyre           Wqk.exe → 求职信病毒 常见病毒、木马进程速查表&lt;br /&gt;&lt;br /&gt;exe → BF Evolution             Mbbmanager.exe → 聪明基因 &lt;br /&gt;&lt;br /&gt;_.exe → Tryit                 Mdm.exe → Doly 1.6-1.7 &lt;br /&gt;&lt;br /&gt;Aboutagirl.exe → 初恋情人         Microsoft.exe → 传奇密码使者 &lt;br /&gt;&lt;br /&gt;Absr.exe → Backdoor.Autoupder       Mmc.exe → 尼姆达病毒 &lt;br /&gt;&lt;br /&gt;Aplica32.exe → 将死者病毒         Mprdll.exe → Bla &lt;br /&gt;&lt;br /&gt;Avconsol.exe → 将死者病毒           Msabel32.exe → Cain and Abel   &lt;br /&gt;&lt;br /&gt;Avp.exe → 将死者病毒             Msblast.exe → 冲击波病毒 &lt;br /&gt;&lt;br /&gt;Avp32.exe → 将死者病毒           Mschv.exe → Control &lt;br /&gt;&lt;br /&gt;Avpcc.exe → 将死者病毒           Msgsrv36.exe → Coma &lt;br /&gt;&lt;br /&gt;Avpm.exe → 将死者病毒             Msgsvc.exe → 火凤凰 &lt;br /&gt;&lt;br /&gt;Avserve.exe → 震荡波病毒           Msgsvr16.exe → Acid Shiver &lt;br /&gt;&lt;br /&gt;Bbeagle.exe → 恶鹰蠕虫病毒         Msie5.exe → Canasson &lt;br /&gt;&lt;br /&gt;Brainspy.exe → BrainSpy vBeta       Msstart.exe → Backdoor.livup &lt;br /&gt;&lt;br /&gt;Cfiadmin.exe → 将死者病毒         Mstesk.exe → Doly 1.1-1.5 &lt;br /&gt;&lt;br /&gt;Cfiaudit.exe → 将死者病毒         Netip.exe → Spirit 2000 Beta &lt;br /&gt;&lt;br /&gt;Cfinet32.exe → 将死者病毒         Netspy.exe → 网络精灵 &lt;br /&gt;&lt;br /&gt;Checkdll.exe → 网络公牛           Notpa.exe → Backdoor &lt;br /&gt;&lt;br /&gt;Cmctl32.exe → Back Construction     Odbc.exe → Telecommando &lt;br /&gt;&lt;br /&gt;Command.exe → AOL Trojan           Pcfwallicon.exe → 将死者病毒 &lt;br /&gt;&lt;br /&gt;Diagcfg.exe → 广外女生           Pcx.exe → Xplorer &lt;br /&gt;&lt;br /&gt;Dkbdll.exe → Der Spaeher           Pw32.exe → 将死者病毒 &lt;br /&gt;&lt;br /&gt;Dllclient.exe → Bobo             Recycle - Bin.exe → s**tHeap &lt;br /&gt;&lt;br /&gt;Dvldr32.exe → 口令病毒           Regscan.exe → 波特后门变种 &lt;br /&gt;&lt;br /&gt;Esafe.exe → 将死者病毒           Tftp.exe → 尼姆达病毒 &lt;br /&gt;&lt;br /&gt;Expiorer.exe → Acid Battery         Thing.exe → Thing &lt;br /&gt;&lt;br /&gt;Feweb.exe → 将死者病毒           User.exe → Schwindler &lt;br /&gt;&lt;br /&gt;Flcss.exe → Funlove病毒           Vp32.exe → 将死者病毒 &lt;br /&gt;&lt;br /&gt;Frw.exe → 将死者病毒             Vpcc.exe → 将死者病毒 &lt;br /&gt;&lt;br /&gt;Icload95.exe → 将死者病毒         Vpm.exe → 将死者病毒 &lt;br /&gt;&lt;br /&gt;Icloadnt.exe → 将死者病毒         Vsecomr.exe → 将死者病毒 &lt;br /&gt;&lt;br /&gt;Icmon.exe → 将死者病毒           Server.exe → Revenger, WinCrash, YAT &lt;br /&gt;&lt;br /&gt;Icsupp95.exe → 将死者病毒         Service.exe → Trinoo &lt;br /&gt;&lt;br /&gt;Iexplore.exe → 恶邮差病毒         Setup.exe → 密码病毒或Xanadu &lt;br /&gt;&lt;br /&gt;Rpcsrv.exe → 恶邮差病毒           Sockets.exe → Vampire &lt;br /&gt;&lt;br /&gt;Rundll.exe → SCKISS爱情森林         Something.exe → BladeRunner &lt;br /&gt;&lt;br /&gt;Rundll32.exe→ 狩猎者病毒           Spfw.exe → 瑞波变种PX       &lt;br /&gt;&lt;br /&gt;Runouce.exe → 中国黑客病毒         Svchost.exe (线程105) → 蓝色代码 &lt;br /&gt;&lt;br /&gt;Scanrew.exe → 传奇终结者           Sysedit32.exe → SCKISS爱情森林 &lt;br /&gt;&lt;br /&gt;Scvhost.exe → 安哥病毒           Sy***plor.exe → wCrat &lt;br /&gt;&lt;br /&gt;Server 1. 2.exe → Spirit 2000 1.2fixed Sy***plr.exe → 冰河 &lt;br /&gt;&lt;br /&gt;Intel.exe → 传奇叛逆             Syshelp.exe → 恶邮差病毒 &lt;br /&gt;&lt;br /&gt;Internet.exe → 传奇幽灵           Sysprot.exe → Satans Back Door &lt;br /&gt;&lt;br /&gt;Internet.exe → 网络神偷           Sysrunt.exe → Ripper &lt;br /&gt;&lt;br /&gt;Kernel16.exe → Transmission Scount   System.exe → s**tHeap &lt;br /&gt;&lt;br /&gt;Kernel32.exe → 坏透了或冰河         System32.exe → DeepThroat 1.0 &lt;br /&gt;&lt;br /&gt;Kiss.exe → 传奇天使             Systray.exe → DeepThroat 2.0-3.1 &lt;br /&gt;&lt;br /&gt;Krn132.exe → 求职信病毒           Syswindow.exe → Trojan Cow &lt;br /&gt;&lt;br /&gt;Libupdate.exe → BioNet           Task_Bar.exe → WebEx &lt;br /&gt;&lt;br /&gt;Load.exe → 尼姆达病毒             Taskbar → 密码病毒 Frethem &lt;br /&gt;&lt;br /&gt;Lockdown2000.exe → 将死者病毒       Taskmon.exe → 诺维格蠕虫病毒 &lt;br /&gt;&lt;br /&gt;Taskmon32 → 传奇黑眼睛           Tds2-98.exe → 将死者病毒 &lt;br /&gt;&lt;br /&gt;Tds2-Nt.exe → 将死者病毒           Temp $01.exe → Snid &lt;br /&gt;&lt;br /&gt;Tempinetb00st.exe → The Unexplained   Tempserver.exe → Delta Source &lt;br /&gt;&lt;br /&gt;Vshwin32.exe → 将死者病毒         Vsstart.exe → 将死者病毒 &lt;br /&gt;&lt;br /&gt;Vw32.exe → 将死者病毒             Windown.exe → Spirit 2000 1.2 &lt;br /&gt;&lt;br /&gt;Windows.exe → 黑洞2000           Winfunctions.exe → Dark Shadow &lt;br /&gt;&lt;br /&gt;Wingate.exe → 恶邮差病毒           Wink????.exe → 求职信病毒 &lt;br /&gt;&lt;br /&gt;Winl0g0n.exe → 笑哈哈病毒         Winmgm32.exe → 巨无霸病毒 &lt;br /&gt;&lt;br /&gt;Winmsg32.exe → Xtcp             Winprot.exe → Chupachbra &lt;br /&gt;&lt;br /&gt;Winprotecte.exe → Stealth         Winrpc.exe → 恶邮差病毒 &lt;br /&gt;&lt;br /&gt;Winrpcsrv.exe → 恶邮差病毒         Winserv.exe → Softwarst &lt;br /&gt;&lt;br /&gt;Wubsys.exe → 传奇猎手             Winupdate.exe → Sckiss爱情森林 &lt;br /&gt;&lt;br /&gt;Winver.exe → Sckiss爱情森林         Winvnc.exe → 恶邮差病毒 &lt;br /&gt;&lt;br /&gt;Winzip.exe → ShadowPhyre           Wqk.exe → 求职信病毒 &lt;br /&gt;&lt;br /&gt;Wscan.exe → AttackFTP             Xx.Tmp.exe → 尼姆达病毒 &lt;br /&gt;&lt;br /&gt;Zcn32.exe → Ambush               Zonealarm.exe → 将死者病毒&lt;br /&gt;&lt;br /&gt;Wscan.exe → AttackFTP             Xx.Tmp.exe → 尼姆达病毒 &lt;br /&gt;&lt;br /&gt;Zcn32.exe → Ambush               Zonealarm.exe → 将死者病毒&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-3061263228403049507?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/3061263228403049507/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/blog-post_8043.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/3061263228403049507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/3061263228403049507'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/blog-post_8043.html' title='病毒 木马 进程 速查表'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-2487657965185727186</id><published>2007-09-30T11:37:00.003+08:00</published><updated>2007-09-30T11:37:59.527+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>清除痕跡 不讓自己的秘密流在別人的電腦中</title><content type='html'>&lt;span class="a14c" id="zoom"&gt; &lt;p style="TEXT-INDENT: 2em"&gt;&lt;strong&gt;Cookie記錄&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　Cookie是Web&lt;a href="http://big5.ccidnet.com:89/gate/big5/server.ccidnet.com/"&gt;&lt;font color="#42495b"&gt;伺服器&lt;/font&gt;&lt;/a&gt;發送到電腦裏的資料檔案，它記錄了諸如用戶名、密碼等重要資訊，甚至包括你的銀行賬戶資訊！ &lt;br /&gt;&lt;br /&gt;　　如果要查看Cookies，必須要訪問C分區。可是網吧的管理軟體一般禁止訪問該分區，例如現在流行的管理軟體美萍、萬象、還原精靈等，雖然它們各有不同，但大體的工作原理卻很相似：用虛擬的桌面環境取代Windows桌面，通過設置禁止各種Windows系統的基本操作，迫使用戶只能在軟體的限制下活動。解除網管的關鍵就是如何訪問到本地硬盤，一旦進入了本地硬盤，刪除cookie以及後面要講的其他個人資訊就不在話下了。 &lt;br /&gt;&lt;br /&gt;　　呵呵，不要著急，請用滑鼠跟著來。 &lt;br /&gt;&lt;br /&gt;　　第一招：隨便打開一個網頁，然後點擊IE瀏覽器功能表中的“文件”→“另存為”，然後在彈出的窗口中選中任意一個文件夾，接下來按Shift+F10鍵調出滑鼠右鍵，選擇其中的“資源管理器”或“我的電腦”便可以打開選中的文件夾。 &lt;br /&gt;&lt;br /&gt;　　第二招：如果你運氣不那麼好的話，“資源管理器”和“My Documents”等窗口都被禁止了，第一招便無效。不過，網吧絕對不會沒有QQ程式的，嘿嘿，打開自己的QQ，然後點擊面板上的“TE瀏覽器”圖標，啟動TE瀏覽器，美萍所做的設置對IE管用，但是對TE卻一點用都沒有。你瞧是不是什麼都出來了？ &lt;br /&gt;&lt;br /&gt;　　第三招：不會這麼倒楣吧？對方將“Tencent EXPlorer”也加入到“管理”選項卡的“禁止”選項卡中啦？不要失望，請單擊IE的收藏夾圖標，瀏覽器出現了一個收藏夾項目區，選擇其中任意一個項目，點擊滑鼠右鍵，選擇“屬性”，在“屬性”對話方塊中地址欄項寫的就是該收藏項目的URL，將之刪除，改為“C:(或者其他你想訪問的盤符)”，點擊“確定”保存退出，重新回到瀏覽器窗口，再點擊剛剛修改過的收藏夾，哈哈，進去了行了，現在打開c:\windows\cookies目錄，就可以赫然看到自己曾經瀏覽過的一些網站消息，敢情還在呀。多留一天多一天患害！那就刪唄！ &lt;br /&gt;&lt;br /&gt;　　&lt;strong&gt;QQ記錄&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;　　在網吧上網，要重點保護的自然要算上QQ了，一些QQ盜竊程式都是衝著你在網吧中留下的QQ記錄而去的。我們上網用戶如果能在網吧上網後及時刪除機器裏記錄有個人資訊的文件，就可以避免大多數的攻擊者，而不必擔心被利用而破解出了密碼。解決辦法就是在離開網吧前，在QQ的快捷方式上單擊滑鼠右鍵，在彈出功能表裏選擇“屬性”，在“目錄”一欄中找到QQ所在目錄的路徑，進入，看到用你的號碼命名的文件夾，然後乾淨地刪除這個文件夾。 &lt;/p&gt;&lt;p&gt;　　可是打住、打住，網管軟體如果不允許你刪除文件，也禁止了你的右鍵，又該如何應對呢？ &lt;br /&gt;&lt;br /&gt;　　別著急，請再跟著做。 &lt;br /&gt;&lt;br /&gt;　　第一步：打開微軟拼音輸入法(如沒有用其他輸入法也可)。 &lt;br /&gt;&lt;br /&gt;　　第二步：將游標插入會員卡號的文本輸入框內，接著開始往裏面輸入任意一個拼音字母，然後就會出現拼音的狀態條，在狀態條上點擊右鍵，或用鍵盤上的屬性鍵，就會出現一個下拉功能表，選擇其中的定義片語(放心，就算系統限制右鍵，在這也不管用)。 &lt;br /&gt;&lt;br /&gt;　　第三步：如果網管軟體將右鍵鎖住了，你則還需要將右鍵給調出來了，在網頁中遇到禁用右鍵的情況我們會想出許多的辦法來破解，其實這些方法中有的也能移植到作業系統中的。就介紹最常用的也最有效的一種方法吧：在需要操作的文件或快捷圖標上先點住右鍵不放，再點下左鍵，然後鬆開左鍵，最後鬆開右鍵，這時熟悉的右鍵功能表便呈現在眼前了。另外還有一招更普通的，用滑鼠左鍵單擊選中要刪除的文件，同時按住shift+F10鍵，即可在資源管理器中顯示出滑鼠的右鍵功能表。 &lt;br /&gt;&lt;br /&gt;　　第四步：右鍵出來後，可接著第二步來做，再選擇文件功能表裏面的“存為文本文件”保存 &lt;br /&gt;&lt;br /&gt;　　第五步：在彈出對話方塊後，隨便選擇一個文件夾，點擊右鍵，選擇資源管理器！ &lt;br /&gt;&lt;br /&gt;　　第六步：選擇自己想要刪除的文件夾和文件，一切OK。 &lt;br /&gt;&lt;br /&gt;　　以上刪除方法百試百靈，網管軟體沒有防禦的方法。 &lt;br /&gt;&lt;br /&gt;　　第七步：有些用戶不想刪除自己的記錄，可以用Winzip把賬號目錄壓縮為一個包文件，給包文件加上一串拗口的密碼，再給它換一個別人意想不到的擴展名。在壓縮時應將“執行”設為“移動文件”，並在“包含文件夾內容”和“保存其他層文件夾資訊”選項前都打上鉤。當壓縮完成後，賬號目錄內已經空無一物，你再也不用擔心秘密曝光了，除非別人知道壓縮包的文件名稱和密碼。再把包文件放到硬盤上一個不引人注意的角落裏或是軟碟上。至於恢復，直接用Winzip解包到QQ的安裝盤上就行了。也可以保護網吧裏的QQ隱私。&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-2487657965185727186?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/2487657965185727186/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/blog-post_30.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/2487657965185727186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/2487657965185727186'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/blog-post_30.html' title='清除痕跡 不讓自己的秘密流在別人的電腦中'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-1726588404002343586</id><published>2007-09-30T11:36:00.001+08:00</published><updated>2007-09-30T11:36:58.415+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Linux作業系統中有關運行進程的相關資訊</title><content type='html'>&lt;span class="a14c" id="zoom"&gt; &lt;p style="TEXT-INDENT: 2em"&gt;/proc 文件系統可以用於獲取運行中的進程的資訊。在 /proc 中有一些編號的子目錄。每個編號的目錄對應一個進程 id (PID)。這樣，每一個運行中的進程 /proc 中都有一個用它的 PID 命名的目錄。這些子目錄中包含可以提供有關進程的狀態和環境的重要細節資訊的文件。讓我們試著搜尋一個運行中的進程。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;$ ps -aef | grep mozilla &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;root 32558 32425 8 22:53 pts/1 00:01:23 /usr/bin/mozilla &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;上述命令顯示有一個正在運行的 mozilla 進程的 PID 是 32558。相對應的，/proc 中應該有一個名叫 32558 的目錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;上面這個command通過Ps來活得所有進程資訊。然後用管道符輸入到grep這裡。通過grep命令，來獲得含有mozilla的進程資訊。PS命令的詳解如下： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;ps &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;1.作用 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;ps顯示瞬間進程 (process) 的動態，使用許可權是所有使用者。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2.格式 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;ps [options] [--help] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;3.主要參數 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;ps的參數非常多, 此出僅列出幾個常用的參數。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-A：列出所有的進程。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-l：顯示長列表。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-m：顯示記憶體資訊。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-w：顯示加寬可以顯示較多的資訊。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-e：顯示所有進程。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;a：顯示終端上的所有進程,包括其他用戶的進程。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-au：顯示較詳細的資訊。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-aux：顯示所有包含其他使用者的進程。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;4.說明 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;要對進程進行監測和控制，首先要了解當前進程的情況，也就是需要查看當前進程。ps命令就是最基本、也是非常強大的進程查看命令。使用該命令可以確定有哪些進程正在運行、運行的狀態、進程是否結束、進程有沒有僵屍、哪些進程佔用了過多的資源等。圖2給出了ps-aux命令詳解。大部分資訊都可以通過執行該命令得到。最常用的三個參數是u、a、x。下面就結合這三個參數詳細說明ps命令的作用：ps aux &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;STAT 表示進程的狀態，其中D為不可中斷的靜止（I/O動作）；R正在執行中；S靜止狀態；T暫停執行；Z不存在，但暫時無法消除；W沒有足夠的記憶體分頁可分配；高優先序的進程；N低優先序的進程；L有記憶體分頁分配並鎖在記憶體體內 (實時系統或 I/O)。START為進程開始時間。TIME為執行的時間。COMMAND是所執行的指令。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;5.應用實例 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;在進行系統維護時，經常會出現記憶體使用量驚人，而又不知道是哪一個進程佔用了大量進程的情況。除了可以使用top命令查看記憶體使用情況之外，還可以使用下面的命令： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;ps aux | sort +5n &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;$ ls -l /proc/32558 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;total 0 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-r--r--r-- 1 root root 0 Dec 25 22:59 cmdline &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-r--r--r-- 1 root root 0 Dec 25 22:59 cpu &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;lrwxrwxrwx 1 root root 0 Dec 25 22:59 cwd -&amp;gt; /proc/ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-r-------- 1 root root 0 Dec 25 22:59 environ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;lrwxrwxrwx 1 root root 0 Dec 25 22:59 exe -&amp;gt; /usr/bin/mozilla* &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;dr-x------ 2 root root 0 Dec 25 22:59 fd/ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-r--r--r-- 1 root root 0 Dec 25 22:59 maps &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-rw------- 1 root root 0 Dec 25 22:59 mem &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-r--r--r-- 1 root root 0 Dec 25 22:59 mounts &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;lrwxrwxrwx 1 root root 0 Dec 25 22:59 root -&amp;gt; // &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-r--r--r-- 1 root root 0 Dec 25 22:59 stat &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-r--r--r-- 1 root root 0 Dec 25 22:59 statm &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;-r--r--r-- 1 root root 0 Dec 25 22:59 status &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;文件 &amp;quot;cmdline&amp;quot; 包含啟動進程時調用的命令行。&amp;quot;envir&amp;quot; 進程的環境變兩。 &amp;quot;status&amp;quot; 是進程的狀態資訊，包括啟動進程的用戶的用戶ID (UID) 和組ID(GID) ，父進程ID (PPID)，還有進程當前的狀態，比如&amp;quot;Sleelping&amp;quot;和&amp;quot;Running&amp;quot;。每個進程的目錄都有幾個符號鏈結，&amp;quot;cwd&amp;quot;是指向進程當前工作目錄的符號鏈結，&amp;quot;exe&amp;quot;指向運行的進程的可執行程式，&amp;quot;root&amp;quot;指向被這個進程看作是根目錄的目錄 (通常是&amp;quot;/&amp;quot;)。目錄&amp;quot;fd&amp;quot;包含指向進程使用的文件描述符的鏈結。 &amp;quot;cpu&amp;quot;僅在運行 SMP 內核時出現，裏面是按 CPU 劃分的進程時間。 /proc/self 是一個有趣的子目錄，它使得程式可以方便地使用 /proc 搜尋本進程地資訊。/proc/self 是一個鏈結到 /proc 中訪問 /proc 的進程所對應的 PID 的目錄的符號鏈結。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;以上就是偶對/proc的內容補充。大家可以看到，這個只是在outline上很小的一個知識點，就牽涉到了那麼多的內容。偶想，這個大概就是為什麼Linux難學的原因吧。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;因為學習Linux，單位和家裏的兩套機器都安裝了vmware server 1.0.3。但是這個軟體不是很穩定。現在家裏的那臺就是死活無法運行Fedora 7.連vmware的開機畫面都沒有。只要運行F7，就是黑屏。 &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-1726588404002343586?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/1726588404002343586/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux_7353.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/1726588404002343586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/1726588404002343586'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux_7353.html' title='Linux作業系統中有關運行進程的相關資訊'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-8227621981614405832</id><published>2007-09-30T11:35:00.001+08:00</published><updated>2007-09-30T11:35:59.933+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>新手學堂：Linux作業系統硬盤擴容的方法</title><content type='html'>&lt;span class="a14c" id="zoom"&gt;&lt;p style="TEXT-INDENT: 2em"&gt;硬盤擴容的步驟，注意:機器一定要先關機，然後在插硬盤，否則機器不是宕機就報一群IO錯誤。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;1，啟動機器後 按 F8 鍵進入陣列管理 先 view logical driver 看看自己實際存在的物理硬盤個數及其所佔的端口，然後 careate logical driver 很據實際需要選擇 radius[0] [0+1] [1]，我選擇radius[0]，按 F8 存盤退出 注意: 如果創建錯誤 運行 delete logical driver 進行刪除，最後重啟機器 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2，查看現有文件系統 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;df -k &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;文件系統 1K-塊 已用 可用 已用% 挂載點 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;/dev/cciss/c0d0p1 98747 14994 78654 17% /boot &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;/dev/cciss/c0d0p7 21525300 5074728 15357136 25% /home &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;/dev/cciss/c0d1p1 70009904 553120 65900456 1% /old &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;根據結果推薦 新增家物理設備在linux系統中的設備名，以上最到編號是 c0d1，由此我們可以推斷新設備名稱為 c0d2。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;3，驗證新設備名的準確性 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;sfdisk -l /dev/cciss/c0d2 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Disk /dev/cciss/c0d2: 17433 cylinders， 255 heads， 32 sectors/track &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;sfdisk: ERROR: sector 0 does not have an msdos signature &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;/dev/cciss/c0d2: unrecognized partition &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;4，對新設備進行分區 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;fdisk /dev/cciss/c0d2 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Command action &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;a toggle a bootable flag &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;b edit bsd disklabel &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;c toggle the dos compatibility flag &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;d delete a partition &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;l list known partition types &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;m print this menu &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;n add a new partition &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;o create a new empty DOS partition table &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;p print the partition table &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;q quit without saving changes &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;s create a new empty Sun disklabel &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;t change a partition's system id &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;u change display/entry units &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;v verify the partition table &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;w write table to disk and exit &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;x extra functionality (experts only) &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Command (m for help): n &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Command action &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;e extended &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;p primary partition (1-4) &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;p &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Partition number (1-4): 1 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;First cylinder (1-17433， default 1): &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Using default value 1 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Last cylinder or +size or +sizeM or +sizeK (1-17433， default 17433): &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Using default value 17433 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Command (m for help): w &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;The partition table has been altered! &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;5，給新分區的存儲設備創建linux文件系統: mkfs -t ext3 /dev/cciss/c0d2p1 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;6， 把文件系統過載到新的目錄: mount /dev/cciss/c0d2p1 /目錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;ok，到現在你的硬盤已經添加到系統，你可以使用的新硬盤了，空間好大，呵呵。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;注意： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;a、文件挂錯了，可以用 umount /dev/cciss/c0d2p1 /目錄 進行卸載 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;b、萬一陣列管理程式找不見硬盤及其現有硬盤也不見了，那你新插入的盤一定是壞盤 哈哈 以上情況我全遇到了。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;（責任編輯：雲子） &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-8227621981614405832?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/8227621981614405832/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux_30.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/8227621981614405832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/8227621981614405832'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux_30.html' title='新手學堂：Linux作業系統硬盤擴容的方法'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-5455730939471918776</id><published>2007-09-29T14:20:00.000+08:00</published><updated>2007-09-29T14:26:01.768+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='空大'/><title type='text'>96學年度上學期期中考各科命題範圍</title><content type='html'>&lt;span id="fullpost"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;實用英文&lt;br /&gt;&lt;/strong&gt;第1講至第16講。&lt;br /&gt;第1章至第16章。（P1 ～ P84 ）&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;財務管理&lt;/strong&gt;&lt;br /&gt;第1講至第14講。&lt;br /&gt;第一章至第七章。（P1～ P188）&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;家庭財務管理與規劃&lt;/strong&gt;&lt;br /&gt;第 1 章至第 7 章。（P1 ～ P114 ） 9/27更正&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-5455730939471918776?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/5455730939471918776/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/96.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5455730939471918776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5455730939471918776'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/96.html' title='96學年度上學期期中考各科命題範圍'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-5439534574924709022</id><published>2007-09-26T15:48:00.000+08:00</published><updated>2007-09-26T15:49:07.986+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>深入理解Linux软件包的配置、编译与安装</title><content type='html'>从源代码安装过软件的朋友一定对 ./configure &amp;&amp; make &amp;&amp; make install 安装三步曲非常熟悉了。然而究竟这个过程中的每一步幕后都发生了些什么呢？本文将带领你一探究竟。深入理解这个过程将有助于你在LFS的基础上玩出自己的花样来。不过需要说明的是本文对 Makefile 和 make 的讲解是相当近视和粗浅的，但是对于理解安装过程来说足够了。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;用一句话来解释这个过程就是： &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;根据源码包中 Makefile.in 文件的指示，configure 脚本检查当前的系统环境和配置选项，在当前目录中生成 Makefile 文件(还有其它本文无需关心的文件)，然后 make 程序就按照当前目录中的 Makefile 文件的指示将源代码编译为二进制文件，最后将这些二进制文件移动(即安装)到指定的地方(仍然按照 Makefile 文件的指示)。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;由此可见 Makefile 文件是幕后的核心。要深入理解安装过程，必须首先对 Makefile 文件有充分的了解。本文将首先讲述 Makefile 与 make ，然后再讲述 configure 脚本。并且在讲述这两部分内容时，提供了尽可能详细的、可以运用于实践的参考资料。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Makefile 与 make &lt;br /&gt;&lt;br /&gt;用一句话来概括Makefile 与 make 的关系就是： &lt;br /&gt;&lt;br /&gt;Makefile 包含了所有的规则和目标，而 make 则是为了完成目标而去解释 Makefile 规则的工具。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;make 语法 &lt;br /&gt;&lt;br /&gt;首先看看 make 的命令行语法： &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;make [options] [targets] [VAR=VALUE]... &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[options]是命令行选项，可以用 make --help 命令查看全部，[VAR=VALUE]是在命令行上指定环境变量，这两个大家都很熟悉，将在稍后详细讲解。而[targets]是什么呢？字面的意思是" 目标"，也就是希望本次 make 命令所完成的任务。凭经验猜测，这个[targets]大概可以用"ckeck","install"之类(也就是常见的测试和安装命令)。但是它到底是个啥玩意儿？没有任何参数的 make 命令是什么意思？为什么在安装 LFS 工具链中的 Perl-5.8.8 软件包时会出现"make perl utilities"这样怪异的命令？要回答这些问题必须首先理解 Makefile 文件中的"规则"。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Makefile 规则 &lt;br /&gt;&lt;br /&gt;Makefile 规则包含了文件之间的依赖关系和更新此规则目标所需要的命令。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;一个简单的 Makefile 规则是这样写的： &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TARGET : PREREQUISITES COMMAND &lt;br /&gt;&lt;br /&gt;TARGET &lt;br /&gt;&lt;br /&gt;规则的目标。也就是可以被 make 使用的"目标"。有些目标可以没有依赖而只有动作(命令行)，比如"clean"，通常仅仅定义一系列删除中间文件的命令。同样，有些目标可以没有动作而只有依赖，比如"all"，通常仅仅用作"终极目标"。 &lt;br /&gt;&lt;br /&gt;PREREQUISITES &lt;br /&gt;&lt;br /&gt;规则的依赖。通常一个目标依赖于一个或者多个文件。 &lt;br /&gt;&lt;br /&gt;COMMAND &lt;br /&gt;&lt;br /&gt;规则的命令行。一个规则可以有零个或多个命令行。 &lt;br /&gt;&lt;br /&gt;OK! 现在你明白[targets]是什么了，原来它们来自于 Makefile 文件中一条条规则的目标。另外，Makefile文件中第一条规则的目标被称为"终极目标"，也就是你省略[targets]参数时的目标。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;当你查看一个实际的 Makefile 文件时，你会发现有些规则非常复杂，但是它都符合规则的基本格式。此外，Makefile 文件中通常还包含了除规则以外的其它很多东西，不过本文只关心其中的变量。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Makefile 变量 &lt;br /&gt;&lt;br /&gt;Makefile 中的"变量"更像是 C 语言中的宏，代表一个文本字符串(变量的值)，可以用于规则的任何部分。变量的定义很简单：VAR=VALUE；变量的引用也很简单：$(VAR) 或者 ${VAR}。变量引用的展开过程是严格的文本替换过程，就是说变量值的字符串被精确的展开在变量被引用的地方。比如，若定义：VAR=c，那么，"$ (VAR) $(VAR)-$(VAR) VAR.$(VAR)"将被展开为"c c-c VAR.c"。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;虽然在 Makefile 中可以直接使用系统的环境变量，但是也可以通过在 Makefile 中定义同名变量来"遮盖"系统的环境变量。另一方面，我们可以在调用 make 时使用 -e 参数强制使系统中的环境变量覆盖 Makefile 中的同名变量，除此之外，在调用 make 的命令行上使用 VAR=VALUE 格式指定的环境变量也可以覆盖 Makefile 中的同名变量。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Makefile 实例 &lt;br /&gt;&lt;br /&gt;下面看一个简单的、实际的Makefile文件： &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CC=gccCPPFLAGS=CFLAGS=-O2 -pipeLDFLAGS=-sPREFIX=/usrall : prog1 prog2prog1 : prog1.o $(CC) $(LDFLAGS) -o prog1 prog1.oprog1.o : prog1.c $(CC) -c $(CFLAGS) prog1.cprog2 : prog2.o $(CC) $(CFLAGS) $(LDFLAGS) -o prog2 prog2.oprog2.o : prog2.c $(CC) -c $(CPPFLAGS) $(CFLAGS) prog2.cclean : rm -f *.{o,a} prog{1,2}install : prog1 prog2 if ( test ! -d $(PREFIX)/bin ) ; then mkdir -p $(PREFIX)/bin ; fi cp -f prog1 $(PREFIX)/bin/prog1 cp -f prog2 $(PREFIX)/bin/prog2check test : prog1 prog2 prog1 &lt; sample1.ref &gt; sample1.rz prog1 &lt; sample2.ref &gt; sample3.rz cmp sample1.ok sample1.rz cmp sample2.ok sample2.rz &lt;br /&gt;&lt;br /&gt;从中可以看出，make 与 make all 以及 make prog1 prog2 三条命令其实是等价的。而常用的 make check 和 make install 也找到了归属。同时我们也看到了 Makefile 中的各种变量是如何影响编译的。针对这个特定的 Makefile ，你甚至可以省略安装三步曲中的 make 命令而直接使用 make install 进行安装。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;同样，为了使用自定义的编译参数编译 prog2 ，我们可以使用 make prog2 CFLAGS="-O3 -march=athlon64" 或 CFLAGS="-O3 -march=athlon64" &amp;&amp; make -e prog2 命令达到此目的。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Makefile 惯例 &lt;br /&gt;&lt;br /&gt;下面是Makefile中一些约定俗成的目标名称及其含义： &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;all &lt;br /&gt;&lt;br /&gt;编译整个软件包，但不重建任何文档。一般此目标作为默认的终极目标。此目标一般对所有源程序的编译和连接使用"-g"选项，以使最终的可执行程序中包含调试信息。可使用 strip 程序去掉这些调试符号。 &lt;br /&gt;&lt;br /&gt;clean &lt;br /&gt;&lt;br /&gt;清除当前目录下在 make 过程中产生的文件。它不能删除软件包的配置文件，也不能删除 build 时创建的那些文件。 &lt;br /&gt;&lt;br /&gt;distclean &lt;br /&gt;&lt;br /&gt;类似于"clean"，但增加删除当前目录下的的配置文件、build 过程产生的文件。 &lt;br /&gt;&lt;br /&gt;info &lt;br /&gt;&lt;br /&gt;产生必要的 Info 文档。 &lt;br /&gt;&lt;br /&gt;check 或 test &lt;br /&gt;&lt;br /&gt;完成所有的自检功能。在执行检查之前，应确保所有程序已经被创建(但可以尚未安装)。为了进行测试，需要实现在程序没有安装的情况下被执行的测试命令。 &lt;br /&gt;&lt;br /&gt;install &lt;br /&gt;&lt;br /&gt;完成程序的编译并将最终的可执行程序、库文件等拷贝到指定的目录。此种安装一般不对可执行程序进行 strip 操作。 &lt;br /&gt;&lt;br /&gt;install-strip &lt;br /&gt;&lt;br /&gt;和"install"类似，但是会对复制到安装目录下的可执行文件进行 strip 操作。 &lt;br /&gt;&lt;br /&gt;uninstall &lt;br /&gt;&lt;br /&gt;删除所有由"install"安装的文件。 &lt;br /&gt;&lt;br /&gt;installcheck &lt;br /&gt;&lt;br /&gt;执行安装检查。在执行安装检查之前，需要确保所有程序已经被创建并且被安装。 &lt;br /&gt;&lt;br /&gt;installdirs &lt;br /&gt;&lt;br /&gt;创建安装目录及其子目录。它不能更改软件的编译目录，而仅仅是创建程序的安装目录。 &lt;br /&gt;&lt;br /&gt;下面是 Makefile 中一些约定俗成的变量名称及其含义： &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;这些约定俗成的变量分为三类。第一类代表可执行程序的名字，例如 CC 代表编译器这个可执行程序；第二类代表程序使用的参数(多个参数使用空格分开)，例如 CFLAGS 代表编译器执行时使用的参数(一种怪异的做法是直接在 CC 中包含参数)；第三类代表安装目录，例如 prefix 等等，含义简单，下面只列出它们的默认值。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AR 函数库打包程序，可创建静态库.a文档。默认是"ar"。AS 汇编程序。默认是"as"。CC C编译程序。默认是"cc"。CXX C++编译程序。默认是"g++"。CPP C/C++预处理器。默认是"$(CC) -E"。FC Fortran编译器。默认是"f77"。PC Pascal语言编译器。默认是"pc"。YACC Yacc文法分析器。默认是"yacc"。ARFLAGS 函数库打包程序的命令行参数。默认值是"rv"。ASFLAGS 汇编程序的命令行参数。CFLAGS C编译程序的命令行参数。CXXFLAGS C++编译程序的命令行参数。CPPFLAGS C/C++预处理器的命令行参数。FFLAGS Fortran编译器的命令行参数。PFLAGS Pascal编译器的命令行参数。YFLAGS Yacc文法分析器的命令行参数。LDFLAGS 链接器的命令行参数。prefix /usr/localexec_prefix $(prefix)bindir $(exec_prefix)/binsbindir $(exec_prefix)/sbinlibexecdir $(exec_prefix)/libexecdatadir $(prefix)/sharesysconfdir $(prefix)/etcsharedstatedir $(prefix)/comlocalstatedir $(prefix)/varlibdir $(exec_prefix)/libinfodir $(prefix)/infoincludedir $(prefix)/includeoldincludedir $(prefix)/includemandir $(prefix)/mansrcdir 需要编译的源文件所在的目录，无默认值 &lt;br /&gt;&lt;br /&gt;make 选项 &lt;br /&gt;&lt;br /&gt;最后说说 make 的命令行选项(以Make-3.81版本为准)： &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-B, --always-make &lt;br /&gt;&lt;br /&gt;无条件的重建所有规则的目标，而不是根据规则的依赖关系决定是否重建某些目标文件。 &lt;br /&gt;&lt;br /&gt;-C DIR, --directory=DIR &lt;br /&gt;&lt;br /&gt;在做任何动作之前先切换工作目录到 DIR ，然后再执行 make 程序。 &lt;br /&gt;&lt;br /&gt;-d &lt;br /&gt;&lt;br /&gt;在 make 执行过程中打印出所有的调试信息。包括：make 认为那些文件需要重建；那些文件需要比较它们的最后修改时间、比较的结果；重建目标所要执行的命令；使用的隐含规则等。使用该选项我们可以看到 make 构造依赖关系链、重建目标过程的所有信息，它等效于"-debug=a"。 &lt;br /&gt;&lt;br /&gt;--debug=FLAGS &lt;br /&gt;&lt;br /&gt;在 make 执行过程中打印出调试信息。FLAGS 用于控制调试信息级别： &lt;br /&gt;&lt;br /&gt;a &lt;br /&gt;&lt;br /&gt;输出所有类型的调试信息 &lt;br /&gt;&lt;br /&gt;b &lt;br /&gt;&lt;br /&gt;输出基本调试信息。包括：那些目标过期、是否重建成功过期目标文件。 &lt;br /&gt;&lt;br /&gt;v &lt;br /&gt;&lt;br /&gt;除 b 级别以外还包括：解析的 makefile 文件名，不需要重建文件等。 &lt;br /&gt;&lt;br /&gt;i &lt;br /&gt;&lt;br /&gt;除 b 级别以外还包括：所有使用到的隐含规则描述。 &lt;br /&gt;&lt;br /&gt;j &lt;br /&gt;&lt;br /&gt;输出所有执行命令的子进程，包括命令执行的 PID 等。 &lt;br /&gt;&lt;br /&gt;m &lt;br /&gt;&lt;br /&gt;输出 make 读取、更新、执行 makefile 的信息。 &lt;br /&gt;&lt;br /&gt;-e, --environment-overrides &lt;br /&gt;&lt;br /&gt;使用系统环境变量的定义覆盖 Makefile 中的同名变量定义。 &lt;br /&gt;&lt;br /&gt;-f FILE, --file=FILE, --makefile=FILE &lt;br /&gt;&lt;br /&gt;将 FILE 指定为 Makefile 文件。 &lt;br /&gt;&lt;br /&gt;-h, --help &lt;br /&gt;&lt;br /&gt;打印帮助信息。 &lt;br /&gt;&lt;br /&gt;-i, --ignore-errors &lt;br /&gt;&lt;br /&gt;忽略规则命令执行过程中的错误。 &lt;br /&gt;&lt;br /&gt;-I DIR, --include-dir=DIR &lt;br /&gt;&lt;br /&gt;指定包含 Makefile 文件的搜索目录。使用多个"-I"指定目录时，搜索目录按照指定顺序进行。 &lt;br /&gt;&lt;br /&gt;-j [N], --jobs[=N] &lt;br /&gt;&lt;br /&gt;指定并行执行的命令数目。在没有指定"-j"参数的情况下，执行的命令数目将是系统允许的最大可能数目。 &lt;br /&gt;&lt;br /&gt;-k, --keep-going &lt;br /&gt;&lt;br /&gt;遇见命令执行错误时不终止 make 的执行，也就是尽可能执行所有的命令，直到出现致命错误才终止。 &lt;br /&gt;&lt;br /&gt;-l [N], --load-average[=N], --max-load[=N] &lt;br /&gt;&lt;br /&gt;如果系统负荷超过 LOAD(浮点数)，不再启动新任务。 &lt;br /&gt;&lt;br /&gt;-L, --check-symlink-times &lt;br /&gt;&lt;br /&gt;同时考察符号连接的时间戳和它所指向的目标文件的时间戳，以两者中较晚的时间戳为准。 &lt;br /&gt;&lt;br /&gt;-n, --just-print, --dry-run, --recon &lt;br /&gt;&lt;br /&gt;只打印出所要执行的命令，但并不实际执行命令。 &lt;br /&gt;&lt;br /&gt;-o FILE, --old-file=FILE, --assume-old=FILE &lt;br /&gt;&lt;br /&gt;即使相对于它的依赖已经过期也不重建 FILE 文件；同时也不重建依赖于此文件任何文件。 &lt;br /&gt;&lt;br /&gt;-p, --print-data-base &lt;br /&gt;&lt;br /&gt;命令执行之前，打印出 make 读取的 Makefile 的所有数据（包括规则和变量的值），同时打印出 make 的版本信息。如果只需要打印这些数据信息，可以使用 make -qp 命令。查看 make 执行前的预设规则和变量，可使用命令 make –p -f /dev/null 。 &lt;br /&gt;&lt;br /&gt;-q, --question &lt;br /&gt;&lt;br /&gt;"询问模式"。不运行任何命令，并且无输出，只是返回一个查询状态。返回状态为 0 表示没有目标需要重建，1 表示存在需要重建的目标，2 表示有错误发生。 &lt;br /&gt;&lt;br /&gt;-r, --no-builtin-rules &lt;br /&gt;&lt;br /&gt;取消所有内嵌的隐含规则，不过你可以在 Makefile 中使用模式规则来定义规则。同时还会取消所有支持后追规则的隐含后缀列表，同样我们也可以在 Makefile 中使用".SUFFIXES"定义我们自己的后缀规则。此选项不会取消 make 内嵌的隐含变量。 &lt;br /&gt;&lt;br /&gt;-R, --no-builtin-variables &lt;br /&gt;&lt;br /&gt;取消 make 内嵌的隐含变量，不过我们可以在 Makefile 中明确定义某些变量。注意，此选项同时打开了"-r"选项。因为隐含规则是以内嵌的隐含变量为基础的。 &lt;br /&gt;&lt;br /&gt;-s, --silent, --quiet &lt;br /&gt;&lt;br /&gt;不显示所执行的命令。 &lt;br /&gt;&lt;br /&gt;-S, --no-keep-going, --stop &lt;br /&gt;&lt;br /&gt;取消"-k"选项。在递归的 make 过程中子 make 通过 MAKEFLAGS 变量继承了上层的命令行选项。我们可以在子 make 中使用"-S"选项取消上层传递的"-k"选项，或者取消系统环境变量 MAKEFLAGS 中的"-k"选项。 &lt;br /&gt;&lt;br /&gt;-t, --touch &lt;br /&gt;&lt;br /&gt;更新所有目标文件的时间戳到当前系统时间。防止 make 对所有过时目标文件的重建。 &lt;br /&gt;&lt;br /&gt;-v, --version &lt;br /&gt;&lt;br /&gt;打印版本信息。 &lt;br /&gt;&lt;br /&gt;-w, --print-directory &lt;br /&gt;&lt;br /&gt;在 make 进入一个目录之前打印工作目录。使用"-C"选项时默认打开这个选项。 &lt;br /&gt;&lt;br /&gt;--no-print-directory &lt;br /&gt;&lt;br /&gt;取消"-w"选项。可以是用在递归的 make 调用过程中，取消"-C"参数将默认打开"-w"。 &lt;br /&gt;&lt;br /&gt;-W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE &lt;br /&gt;&lt;br /&gt;设定 FILE 文件的时间戳为当前时间，但不改变文件实际的最后修改时间。此选项主要是为实现了对所有依赖于 FILE 文件的目标的强制重建。 &lt;br /&gt;&lt;br /&gt;--warn-undefined-variables &lt;br /&gt;&lt;br /&gt;在发现 Makefile 中存在对未定义的变量进行引用时给出告警信息。此功能可以帮助我们调试一个存在多级套嵌变量引用的复杂 Makefile 。但是：我们建议在书写 Makefile 时尽量避免超过三级以上的变量套嵌引用。 &lt;br /&gt;&lt;br /&gt;configure &lt;br /&gt;&lt;br /&gt;此阶段的主要目的是生成 Makefile 文件，是最关键的运筹帷幄阶段，基本上所有可以对安装过程进行的个性化调整都集中在这一步。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;configure 脚本能够对 Makefile 中的哪些内容产生影响呢？基本上可以这么说：所有内容，包括本文最关心的 Makefile 规则与 Makefile 变量。那么又是哪些因素影响着最终生成的 Makefile 文件呢？答曰：系统环境和配置选项。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;配置选项的影响是显而易见的。但是"系统环境"的概念却很宽泛，包含很多方面内容，不过我们这里只关心环境变量，具体说来就是将来会在 Makefile 中使用到的环境变量以及与 Makefile 中的变量同名的环境变量。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;通用 configure 语法 &lt;br /&gt;&lt;br /&gt;在进一步讲述之前，先看看 configure 脚本的语法，一般有两种： &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;configure [OPTIONS] [VAR=VALUE]... &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;configure [OPTIONS] [HOST] &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;不管是哪种语法，我们都可以用 configure --help 查看所有可用的[OPTIONS]，并且通常在结尾部分还能看到这个脚本所关心的环境变量有哪些。在本文中将对这两种语法进行合并，使用下面这种简化的语法： &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;configure [OPTIONS] &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;这种语法能够被所有的 configure 脚本所识别，同时也能通过设置环境变量和使用特定的[OPTIONS]完成上述两种语法的一切功能。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;通用 configure 选项 &lt;br /&gt;&lt;br /&gt;虽然每个软件包的 configure 脚本千差万别，但是它们却都有一些共同的选项，也基本上都遵守相同的选项语法。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;脚本自身选项 &lt;br /&gt;&lt;br /&gt;--help &lt;br /&gt;&lt;br /&gt;显示帮助信息。 &lt;br /&gt;&lt;br /&gt;--version &lt;br /&gt;&lt;br /&gt;显示版本信息。 &lt;br /&gt;&lt;br /&gt;--cache-file=FILE &lt;br /&gt;&lt;br /&gt;在FILE文件中缓存测试结果(默认禁用)。 &lt;br /&gt;&lt;br /&gt;--no-create &lt;br /&gt;&lt;br /&gt;configure脚本运行结束后不输出结果文件，常用于正式编译前的测试。 &lt;br /&gt;&lt;br /&gt;--quiet, --silent &lt;br /&gt;&lt;br /&gt;不显示脚本工作期间输出的"checking ..."消息。 &lt;br /&gt;&lt;br /&gt;目录选项 &lt;br /&gt;&lt;br /&gt;--srcdir=DIR &lt;br /&gt;&lt;br /&gt;源代码文件所在目录，默认为configure脚本所在目录或其父目录。 &lt;br /&gt;&lt;br /&gt;--prefix=PREFIX &lt;br /&gt;&lt;br /&gt;体系无关文件的顶级安装目录PREFIX ，默认值一般是 /usr/local 或 /usr/local/pkgName &lt;br /&gt;&lt;br /&gt;--exec-prefix=EPREFIX &lt;br /&gt;&lt;br /&gt;体系相关文件的顶级安装目录EPREFIX ，默认值一般是 PREFIX &lt;br /&gt;&lt;br /&gt;--bindir=DIR &lt;br /&gt;&lt;br /&gt;用户可执行文件的存放目录DIR ，默认值一般是 EPREFIX/bin &lt;br /&gt;&lt;br /&gt;--sbindir=DIR &lt;br /&gt;&lt;br /&gt;系统管理员可执行目录DIR ，默认值一般是 EPREFIX/sbin &lt;br /&gt;&lt;br /&gt;--libexecdir=DIR &lt;br /&gt;&lt;br /&gt;程序可执行目录DIR ，默认值一般是 EPREFIX/libexec &lt;br /&gt;&lt;br /&gt;--datadir=DIR &lt;br /&gt;&lt;br /&gt;通用数据文件的安装目录DIR ，默认值一般是 PREFIX/share &lt;br /&gt;&lt;br /&gt;--sysconfdir=DIR &lt;br /&gt;&lt;br /&gt;只读的单一机器数据目录DIR ，默认值一般是 PREFIX/etc &lt;br /&gt;&lt;br /&gt;--sharedstatedir=DIR &lt;br /&gt;&lt;br /&gt;可写的体系无关数据目录DIR ，默认值一般是 PREFIX/com &lt;br /&gt;&lt;br /&gt;--localstatedir=DIR &lt;br /&gt;&lt;br /&gt;可写的单一机器数据目录DIR ，默认值一般是 PREFIX/var &lt;br /&gt;&lt;br /&gt;--libdir=DIR &lt;br /&gt;&lt;br /&gt;库文件的安装目录DIR ，默认值一般是 EPREFIX/lib &lt;br /&gt;&lt;br /&gt;--includedir=DIR &lt;br /&gt;&lt;br /&gt;C头文件目录DIR ，默认值一般是 PREFIX/include &lt;br /&gt;&lt;br /&gt;--oldincludedir=DIR &lt;br /&gt;&lt;br /&gt;非gcc的C头文件目录DIR ，默认值一般是 /usr/include &lt;br /&gt;&lt;br /&gt;--infodir=DIR &lt;br /&gt;&lt;br /&gt;Info文档的安装目录DIR ，默认值一般是 PREFIX/info &lt;br /&gt;&lt;br /&gt;--mandir=DIR &lt;br /&gt;&lt;br /&gt;Man文档的安装目录DIR ，默认值一般是 PREFIX/man &lt;br /&gt;&lt;br /&gt;体系结构选项 &lt;br /&gt;&lt;br /&gt;玩交叉编译的朋友对这些选项已经很熟悉了，并且对于通常的交叉编译情况而言，HOST == BUILD != TARGET 。但是对于不使用交叉编译的朋友也不必担心，将它们三个都设为相同即可。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--host=HOST &lt;br /&gt;&lt;br /&gt;运行工具链的机器，默认是 config.guess 脚本的输出结果。 &lt;br /&gt;&lt;br /&gt;--build=BUILD &lt;br /&gt;&lt;br /&gt;用来建立工具链的机器，默认值是 HOST &lt;br /&gt;&lt;br /&gt;--target=TARGET &lt;br /&gt;&lt;br /&gt;工具链所生成的二进制代码最终运行的机器，默认值是 HOST &lt;br /&gt;&lt;br /&gt;特性选项 &lt;br /&gt;&lt;br /&gt;--enable-FEATURE &lt;br /&gt;&lt;br /&gt;启用FEATURE特性 &lt;br /&gt;&lt;br /&gt;--disable-FEATURE &lt;br /&gt;&lt;br /&gt;禁用FEATURE特性 &lt;br /&gt;&lt;br /&gt;--with-PACKAGE[=DIR] &lt;br /&gt;&lt;br /&gt;启用附加软件包PACKAGE，亦可同时指定PACKAGE所在目录DIR &lt;br /&gt;&lt;br /&gt;--without-PACKAGE &lt;br /&gt;&lt;br /&gt;禁用附加软件包PACKAGE &lt;br /&gt;&lt;br /&gt;通用环境变量 &lt;br /&gt;&lt;br /&gt;除了上述通用的选项外，下列环境变量影响着最终生成的 Makefile 文件： &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CPP &lt;br /&gt;&lt;br /&gt;C预处理器命令 &lt;br /&gt;&lt;br /&gt;CXXCPP &lt;br /&gt;&lt;br /&gt;C++预处理器命令 &lt;br /&gt;&lt;br /&gt;CPPFLAGS &lt;br /&gt;&lt;br /&gt;C/C++预处理器命令行参数 &lt;br /&gt;&lt;br /&gt;CC &lt;br /&gt;&lt;br /&gt;C编译器命令 &lt;br /&gt;&lt;br /&gt;CFLAGS &lt;br /&gt;&lt;br /&gt;C编译器命令行参数 &lt;br /&gt;&lt;br /&gt;CXX &lt;br /&gt;&lt;br /&gt;C++编译器命令 &lt;br /&gt;&lt;br /&gt;CXXFLAGS &lt;br /&gt;&lt;br /&gt;C++编译器命令行参数 &lt;br /&gt;&lt;br /&gt;LDFLAGS &lt;br /&gt;&lt;br /&gt;连接器命令行参数 &lt;br /&gt;&lt;br /&gt;至于设置这些环境变量的方法，你可以将它们 export 为全局变量在全局范围内使用，也可以在命令行上使用 [VAR=VALUE]... configure [OPTIONS] 的语法局部使用。此处就不详细描述了。&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-5439534574924709022?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/5439534574924709022/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux_26.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5439534574924709022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5439534574924709022'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux_26.html' title='深入理解Linux软件包的配置、编译与安装'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-1669314399336724999</id><published>2007-09-26T15:46:00.000+08:00</published><updated>2007-09-26T15:47:33.608+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='理財'/><title type='text'>定時定額-核心基金作法</title><content type='html'>&lt;span id="fullpost"&gt;定時定額-核心基金作法&lt;br /&gt;&lt;br /&gt;買基金最穩定的作法就是定時定額，尤其是上班族特別偏好選定可以穩定成長&lt;br /&gt;的基金進行長期定時定額投資，亦是所謂的懶人投資術。&lt;br /&gt;&lt;br /&gt;只是這樣的投資方法妥當嗎？ 有無改善空間？&lt;br /&gt;&lt;br /&gt;一般所謂選定可以穩定成長的基金亦稱為核心基金&lt;br /&gt;簡單定義如下&lt;br /&gt;1.      長期趨勢向上&lt;br /&gt;2.      抗跌性要夠&lt;br /&gt;3.      持股投資比例內容無限制&lt;br /&gt;4.      平均年化報酬10%上下&lt;br /&gt;5.      基金的資歷足夠久，至少起過一個景氣循環&lt;br /&gt;這樣的基金 有很大比例是 所謂全球型基金 或者是 平衡型基金&lt;br /&gt;&lt;br /&gt;我們就來重新檢視 定時定額投資法的優點&lt;br /&gt;投資在核心基金時，是否可達到預期功效&lt;br /&gt;&lt;br /&gt;1.      強迫儲蓄 &lt;br /&gt;(每日固定扣款，優點顯而易見)&lt;br /&gt;2.      平均成本 &lt;br /&gt;(即使是核心基金，短期價格坡動難免，分期投入確實可達到&lt;br /&gt; 平均成本功效，因本質上趨勢向上可以不設停損停利)&lt;br /&gt;&lt;br /&gt;3.      享受複利&lt;br /&gt;定時定額是否可享受到複利，過去常有人提出質疑&lt;br /&gt;在 Value Averaging 這本書的作者 Michael Edleson 依美國市場進行探討&lt;br /&gt;以定期定額 與 定期定量 進行短中長期投資報酬追蹤。發現定期定額投資&lt;br /&gt;反而在長期投資項目上，投資報酬低於定期定量..&lt;br /&gt;&lt;br /&gt;探究差異原因在於，&lt;br /&gt;(1)    每月投入定額現金現值與未來值得差異&lt;br /&gt;因考量通貨膨脹率的關係，現在的 5000元會比未來的5000元 價值高&lt;br /&gt;因此每月投入 5000元 並不代表每月都投入固定等值金額去買 基金&lt;br /&gt;(2)    投資標的物 現值與未來值得差異&lt;br /&gt;既然我們選定的適核心基金，年均報酬率可能都有 5%以上，每月固定&lt;br /&gt;投入 5000元所能買到的基金單位數是越來越少，相對的累積單位數&lt;br /&gt;亦較少，複利效果亦會打折扣。&lt;br /&gt;&lt;br /&gt;因此就會有所謂修正版定時定額投資策略(Growth-Adjusted Dollar Cost Averaging)&lt;br /&gt;來輔助 修正投資核心基金時的迷思。 &lt;br /&gt;&lt;br /&gt;最簡單的作法&lt;br /&gt;1.      每年定時定額扣款金額調整 依照投資標的物去年報酬率來定&lt;br /&gt;亦就是標的物去年漲 10%，今年的定時定額 扣款金額增加 10%&lt;br /&gt;2.      上班族在強迫儲蓄前提下，亦可依照薪資調整幅度加碼。&lt;br /&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-1669314399336724999?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/1669314399336724999/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/blog-post_3060.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/1669314399336724999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/1669314399336724999'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/blog-post_3060.html' title='定時定額-核心基金作法'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-7972690759040959446</id><published>2007-09-26T15:43:00.000+08:00</published><updated>2007-09-26T15:45:48.119+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='理財'/><title type='text'>定時定額投資基金的缺陷</title><content type='html'>&lt;span id="fullpost"&gt;定時定額買基金 給小市民帶來了累績財富 無限的希望.&lt;br /&gt;定時定額帶來的優點&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;1. 平均成本&lt;br /&gt;2 強迫儲蓄,累積財富&lt;br /&gt;3 賺取複利&lt;br /&gt;&lt;/span&gt;以上策略四平八穩,有無質疑之處&lt;br /&gt;&lt;br /&gt;如果買的基金 趨勢向下 ?&lt;br /&gt;如果買的基金 趨勢向上?&lt;br /&gt;如果買的基金 盤整 ?&lt;br /&gt;&lt;br /&gt;定時定額不是一成不變的策略&lt;br /&gt;遇到以上狀況要如何調整&lt;br /&gt;有人延伸出以下&lt;br /&gt;&lt;span style="color:#cc0000;"&gt;1. 虧損不停扣&lt;br /&gt;2. 停利再續扣&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;國內基金走勢與國外走勢不同&lt;br /&gt;用同一個定時定額方式是否妥當.&lt;br /&gt;台灣是一個淺碟型市場, 與操作 美 歐 日 新興國家 又不同&lt;br /&gt;當選錯了區域(長期趨勢向下) 要不要停損換檔&lt;br /&gt;當選對了區域(長期趨勢向上) 要不要停利,要不要加碼&lt;br /&gt;&lt;br /&gt;定時定額策略 由於操作期間長,當發現策略錯誤 常在好幾年後&lt;br /&gt;因此事先想清楚 避免事後 後悔 捶胸&lt;br /&gt;&lt;br /&gt;全民基金運動 沸騰&lt;br /&gt;你跟進了嗎?&lt;br /&gt;你想清楚了嗎?&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-7972690759040959446?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/7972690759040959446/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/blog-post_2620.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/7972690759040959446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/7972690759040959446'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/blog-post_2620.html' title='定時定額投資基金的缺陷'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-1806377151901277582</id><published>2007-09-26T15:38:00.000+08:00</published><updated>2007-09-26T15:41:41.418+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='理財'/><title type='text'>定時定額-大絕招 你記熟了嗎?</title><content type='html'>定時定額 每個人都懂 ,亦是有很多巧妙運用, 你都會了嗎? 理財可不能太隨便&lt;br /&gt;&lt;br /&gt;什麼時後該出什麼招數,平常練熟了, 遇到狀況就可以馬上使出來.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;絕招一&lt;br /&gt;&lt;br /&gt;定時定額 每月扣款 須視需要 調整 月扣 1次 至 月扣 3次&lt;br /&gt;&lt;br /&gt;全球型/平衡型 月扣一次 單一國家/產業型 月扣 3次&lt;br /&gt;&lt;br /&gt;絕招二&lt;br /&gt;&lt;br /&gt;利用 定時定額 暫停扣款/恢復扣款 功能&lt;br /&gt;&lt;br /&gt;技術指標(依個人喜好 KD &gt;80 暫停扣款 , KD&lt;20 恢復扣款) 絕招三 利用 價值平均法 (Value Averaging) 衡量 每季檢視, 當偏離價值太低 買入單筆 ,當超出價值過高 贖回單筆 絕招四 如果膽小 選定時定額標的,短期走勢穩定向上 ,這樣短期投入就能看到正報酬 比較睡的著, 亦容易空出時間練其他招數.&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-1806377151901277582?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/1806377151901277582/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/blog-post_26.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/1806377151901277582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/1806377151901277582'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/blog-post_26.html' title='定時定額-大絕招 你記熟了嗎?'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-5790395721375396003</id><published>2007-09-21T23:03:00.000+08:00</published><updated>2007-09-21T23:13:11.196+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='空大'/><title type='text'>空大行程日誌</title><content type='html'>&lt;strong&gt;有關空大行程&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;有關選修科目的面班別，登錄在校本部教務處寄發的選課卡(九月十六日寄出，未收到請於十月一至十二日電洽基隆中心24629938登記補發&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;面授暨考試時間：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;第一次96年10月20，21日&lt;/p&gt;&lt;p&gt;第二次96年11月3，4日&lt;/p&gt;&lt;p&gt;期中考96年11月10，11日&lt;/p&gt;&lt;p&gt;第三次96年12月1 ，2日&lt;/p&gt;&lt;p&gt;第四次96年12月29，30日&lt;/p&gt;&lt;p&gt;期未考96年1月12，13日&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-5790395721375396003?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/5790395721375396003/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/blog-post_21.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5790395721375396003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5790395721375396003'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/blog-post_21.html' title='空大行程日誌'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-9113516556809254869</id><published>2007-09-18T18:49:00.000+08:00</published><updated>2007-09-18T18:51:02.383+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>簡單方法確保 Linux 系統中的 SSH 安全性</title><content type='html'>&lt;span class="a14c" id="zoom"&gt; &lt;p style="TEXT-INDENT: 2em"&gt;&lt;u&gt;&lt;strong&gt;【原創文章，版權所有，賽迪獨家發佈，合作網站如欲轉載，請註明出處“賽迪網”和文章作者“freedom”！謝絕非合作網站轉載，違者，賽迪網將保留追究其法律責任的權利！】&lt;/strong&gt;&lt;/u&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;SSH對於遠程管理一台伺服器來說是一個好方法。然而，SSH仍然存在著諸多問題。伺服器和客戶端的通信是安全的，不過這並不意味著涉及到的主機也是安全的。向外部世界打開一個SSH服務也就意味著允許強力攻擊。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;我們可以採取一些極為簡單的方法來真正地強化經由SSH的遠程訪問，特別是我們不能將這種服務與源端口的一個有限數量相聯繫時。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;先說一件重要的事情，sshd_config。在Ubuntu中，這通常在/etc/ssh中可以找到，它可以用於配置大量的特性。最簡單的往往是最好的。限制可以通過SSH登錄的用戶是一個首要的原則。這可以用如下兩種方法完成：根據用戶或者根據組。AllowGroups允許一個組的任何經鑒定的用戶通過SSH訪問伺服器。不過，一個更加精細的方法是使用AllowUsers選項。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;另一個簡單的方法是將監聽端口從22號端口移到某個其他的隨機指定的端口。這就減少了顯示SSHD運行狀態掃描的可能性。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;我們還可以禁用對根的訪問，並禁用密碼驗證而只使用密鑰驗證。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;下一步就是使用一個稱為Denyhosts的小工具，大家可以從http://denyhosts.sourceforge.net/下載它。我們一定要保證啟用/etc/apt/source.list中的資源，然後鍵入下面的命令： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;center&gt;&lt;ccid_nobr /&gt;&lt;table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="code" style="FONT-SIZE: 9pt" bgcolor="#e6e6e6"&gt;&lt;pre&gt;&lt;ccid_code /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install denyhosts&lt;/code /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/ccid_nobr /&gt;&lt;/center&gt;&lt;p style="TEXT-INDENT: 2em"&gt;DenyHosts意在由Linux系統管理員運行，以幫助其挫敗對SSH伺服器的攻擊（也稱為基於字典的攻擊或強力攻擊）的企圖。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;DenyHosts充當著一個對SSH和其他服務的動態阻擊器，它依靠/etc/hosts.deny和 hosts.allow進行工作，並能夠以動態方式構建重復地與我們的伺服器連接的主機列表。默認情況下，這項服務會阻止來自那些不斷地試圖與我們的主機連接並實施訪問的IP地址源。Denyhosts的處理在/etc/denyhosts.conf中進行配置。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;我們還可以通過Iptables（請參看筆者在《網管員世界》上的《Iptables阻止強力攻擊》）進行連接速率的限制，而且我們還應該在伺服器上部署防火牆。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;一旦這些佈置停當，我們就會確信自己在一台面向公眾的主機上擁有了一個更加安全的SSH。(責任編輯：李磊) &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-9113516556809254869?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/9113516556809254869/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux-ssh.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/9113516556809254869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/9113516556809254869'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux-ssh.html' title='簡單方法確保 Linux 系統中的 SSH 安全性'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-2781137891554143108</id><published>2007-09-15T23:59:00.000+08:00</published><updated>2007-09-16T00:08:05.498+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='理財'/><title type='text'>每次股災，都是一種淬鍊</title><content type='html'>&lt;s副標：每次股災，都是一種淬鍊&lt;br /&gt;&lt;br /&gt;在本次股災期間，《今周刊》與「台北金融發展基金會」合作，委託政大統計諮詢中心進行基金投資行為大調查，數據顯示，國人對基金投資的觀念雖然趨於成熟，但仍有部分瑕疵需要改進。&lt;br /&gt;&lt;br /&gt;據調查，在過去一年，每四位基金投資人就有三位能夠獲利，然而，相較於過去的全球股市普遍上漲，在後股災時代，你需要更精確的資產配置。透過股災、發現錯誤；修正錯誤，重新布局。從正面的角度解讀股災，你會發現，雖然讓你的投資小跌一跤，但卻也透露出令你富足一生的玄機。&lt;br /&gt;&lt;br /&gt;「你看，這些區域都是當今地球上經濟前景最棒的市場，而且，每一檔基金都是我用四四三三法則辛苦篩選出來的優質基金。」躊躇猶豫了好一陣子，俞詩維這回終於下定決心，一口氣，單筆投資了六檔基金。時間是七月下旬。&lt;br /&gt;&lt;br /&gt;電腦螢幕顯示出他的投資明細，果然，無論是台股、拉丁美洲、韓國、東協等地，都被視為最具成長力道的市場，而他所投資的標的，也的確是在各區域分類當中表現相對良好的基金。接下來，俞詩維的右手食指往螢幕右方緩緩移動，在盡頭處，滑鼠指標遇到了這樣一串殘酷數字：短短二十天內，總體基金淨值已經慘跌兩成以上。&lt;br /&gt;&lt;br /&gt;問題出在哪裡？時不我與，剛好買在次級房貸股災前的最後高點，這當然是問題之一，但俞詩維卻有更深刻的體認：「後來我才發現，原來，我的錢全都集中壓在新興市場。」他自我反省，當時會在高點進場，是因為聽到太多身邊朋友賺錢的故事，忍不住的結果，不但買在高點，「而且有點腦充血的現象，一心只想要短期獲利，所以眼裡只看到最會賺錢的新興市場，完全忘了風險。」&lt;br /&gt;&lt;br /&gt;一場股災，讓俞詩維的基金投資跌了一跤，幸運的，這是有價值的一跤。今天，他終於深刻體認到什麼叫作「波動風險」。&lt;br /&gt;&lt;br /&gt;■重新認識波動風險 七五％投資人未考慮風險因素&lt;br /&gt;&lt;br /&gt;什麼是波動風險？簡單地說，就是「短時間內市場異常變動」的風險。乍聽之下似是想當然耳，投資嘛！本來就是有漲有跌，有急漲也會急跌，這個道理連投資菜鳥都知道。可惜，簡單的道理往往容易被人遺忘，九月初，美國《商業周刊》封面標題是這樣為次級房貸風暴寫下注腳：「在到處都是金錢的年代，專家們忘記了最簡單的一件事——派對總是會結束的。」&lt;br /&gt;&lt;br /&gt;檢視股災，因為忘記這是個會波動的市場，專家們忽視房地產景氣衰退對相關商品價格的向下撩撥力道。美國財經官員不斷強調次級房貸的金額不高，卻忘了市場價格波動並非單純決定於理性基本面，否則，價格波動又怎會釀成一場股災？忘了「連菜鳥都懂」的波動風險，美國聯準會（Fed）也被迫忘記情勢燃眉的通膨壓力，利率態度只能由升轉降；歐洲央行被迫釋出四兆台幣，花上比九一一事件更多的資金代價，勉力支撐羸弱的市場信心…&lt;br /&gt;&lt;br /&gt;俞詩維的「好險」，值得國內所有投資人警惕，在《今周刊》與「台北金融研究發展基金會」合作，委託政大統計諮詢中心日前所進行的「基金投資行為調查」當中發現，在台灣，有將近七五％的基金投資人，選擇基金時並未考慮波動風險。&lt;br /&gt;&lt;br /&gt;就像多數的投信投顧業的專家一樣，寶源投顧研究部協理林鴻胤也認為，股災後是投資人進場布局的最好時機，不過，他的理由不只是從危機入市撿便宜的價值投資法則出發，「重點在於，投資人這個時候最能體會風險，最能把波動風險當成一回事。」林鴻胤強調，只有認清風險存在的事實，才能冷靜思考降低風險的方法，接下來，你會接納一些聽來無趣的投資真理，而這些不太起眼的投資真理，卻能夠讓你安安穩穩富足一生。&lt;br /&gt;&lt;br /&gt;在台北市經營牙醫診所的陳醫師，過去也曾在一九九八年金融風暴、二○○二年網路泡沫災難當中賠錢出場，「面對投資市場，要永遠抱持謙卑的態度！」他語重心長地舉例，投資就像投手，再怎麼厲害，也不能保證下一球不會失投、不會被打全壘打，能做的，就是永遠謹慎地投出手中的每一球。除了順便讚美一下台灣之光王建民，他也提出自己這波股災未受傷的原因，只不過，聽來真的有些無趣：「之前的經驗告訴我，投資賺錢這件事，不能用太多的資金。」&lt;br /&gt;&lt;br /&gt;雖然無趣，但不妨細細思考陳醫師的投資邏輯，可以發現，因為看清了風險，才能開始認真思考現金與投資額的適當配置比重。而把這個最簡單的配置觀念加以延伸，就是眾多專家一致認同的克制波動風險最佳法則——資產配置。&lt;br /&gt;&lt;br /&gt;在基金理財領域中，這是個常被提到的說法：國外專業機構曾對美國退休基金進行研究，發現一九七七至一九八七年間，美國退休基金所獲得的投資報酬，竟有九一．五％是歸功於資產配置，至於選股對績效的影響比重不到五％。如果說，波動風險是消滅投資報酬的最大殺手，那麼，從美國退休基金的經驗可知，資產配置就是對抗這個績效殺手的最強防禦。&lt;br /&gt;&lt;br /&gt;■重視資產配置 股債雙向布局 抗跌力道強勁&lt;br /&gt;&lt;br /&gt;如果說，股災讓投資人重新認識波動風險，那麼，認識波動風險所帶給投資人的第一堂課，就是重新思考資產配置的重要性。「兩個月前，我們的業務要和客戶討論資產配置，根本沒人聽得下去，因為當時的市場氣氛太樂觀了。」德盛安聯二○二○目標基金經理人朱彥忠的說法，印證股災前投資人對風險的普遍忽略；而德盛安聯二○一五、二○二○、二○三○等三檔目標基金的整體表現，則印證資產配置對於減緩波動風險的正面價值…不同的股債配置，明顯展現不同程度的抗跌力道，以七月二十六日至八月十七日股災期間的淨值跌幅來看，持股比重最高的二○三○基金，淨值跌幅為七．七％，二○二○基金跌幅為三．九％，至於股債配置絕對保守的二○一五基金，股災期間則僅有一．七％的淨值衰退。以上數據的重點，不在於三檔基金表現是否優於大盤或其他基金，而是可以清楚發現，專家們老生常談的資產配置，的確是對抗波動風險的最佳方法。&lt;br /&gt;&lt;br /&gt;除了股、債兩種工具的配置之外，富蘭克林投顧資深經理羅尤美則從基金的投資市場範圍來解釋資產配置的抗跌功能。股災期間，美國雖是禍首，但美國股票型基金的跌幅並不特別嚴重，同樣爆出次級房貸重大地雷的歐洲，基金跌幅亦相對較輕，事實上，被認為適合當作基金投資「核心部位」的歐洲、美國及全球股票型等三種基金，股災期間的跌幅多半都能控制在一成以內…&lt;br /&gt;&lt;br /&gt;操作的理性與非理性，原來就是取決於投資目的是否明確。如果你在股災期間曾因非理性恐慌而錯殺投資部位，那麼，採取目標導向的投資策略，就是這波股災帶給你的最佳啟示。&lt;br /&gt;&lt;br /&gt;聯傑財務顧問執行長蕭碧華說：「確立投資目標是小額投資致富的第一條件。」某種程度上，基金像是磚石，而投資目標則是你不同階段的施工方向，今年打基礎、明年砌牆面，慢慢的，循序構築屬於自己的財富人生。回頭想想專家們怎麼提醒投資人的股災教訓？因為重新認識風險，所以此時最能接納資產配置觀念，既然資產配置是完成投資目標的最佳方式，那麼，此刻的確就是投資人勾勒人生財富工程圖、擬定投資目標、展開富足人生的最佳時點。（更多精采文章請見《今周刊》559期）&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-2781137891554143108?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/2781137891554143108/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/blog-post_2714.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/2781137891554143108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/2781137891554143108'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/blog-post_2714.html' title='每次股災，都是一種淬鍊'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-3032936080672590178</id><published>2007-09-15T23:53:00.000+08:00</published><updated>2007-09-15T23:54:27.929+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='理財'/><title type='text'>活用定時定額方法 增加絕對金額</title><content type='html'>◆蕭碧燕小檔案&lt;br /&gt;&lt;br /&gt;經歷︰安泰投顧理財諮詢部副總&lt;br /&gt;&lt;br /&gt;現任︰中華民國證券投資信託暨顧問商業同業公會祕書長&lt;br /&gt;&lt;br /&gt;美國次級房貸危機牽動全球資本市場激烈波動，台股跟著震盪起伏，許多投資人的風險意識瞬間升高。然而，在變動下唯有退場才能避開投資風險嗎？&lt;br /&gt;&lt;br /&gt;我認為，風險的定義要回歸到資產配置。但是資產配置不應該只看股債比，或是年輕人就要衝、衝、衝，年紀大的就要保守投資這種粗淺的..年齡區分法。&lt;br /&gt;&lt;br /&gt;我常常在演講的時候強調，「.不懂的東西不要碰」，因為這才是你的投資風險！&lt;br /&gt;&lt;br /&gt;而且.........，投資人.....要破除股債比的迷思，依照自己的情況做資產配置。&lt;br /&gt;&lt;br /&gt;◆用現金定存避險&lt;br /&gt;&lt;br /&gt;～以股票穩健獲利&lt;br /&gt;&lt;br /&gt;很多人覺得奇怪，為什麼我的資產組合沒有配.....置債券型基金？其實，我自己的投資組合是以「現金定存避險、股票穩健獲利、基金積極操作」..為準則。&lt;br /&gt;&lt;br /&gt;其中，避險部....分，我是以每月總支出再乘以12個月生活費的金額，將其放在定存做為最保守的投資。&lt;br /&gt;&lt;br /&gt;至於，穩健投資的部位主要是股票持有。因為我對股票研究不深，但是分析別人投資股票失利，最主要都是住到「套房」或「違建」.。套房指的是追高，結果慘遭套牢；違建就是投機買到地雷股。&lt;br /&gt;&lt;br /&gt;所以，我只買龍頭股，這樣就不會碰到「違建」...；那又為了怕住到「套房」，就一定要收房租，因此我都買高股息概念股，而且要配現金，最好是10％以上高現金殖利率的股票才是投資首選。&lt;br /&gt;&lt;br /&gt;去年下半年，我以39元買進散裝航運龍頭裕民（2606），由於裕民今年每股稅後盈餘預估可達10元，又配發5元現金股利，現在股價果真一路漲到超過100元。&lt;br /&gt;&lt;br /&gt;其他買進的產業龍頭股，前幾年不太動，今年都成了飆股。其實，穩健型股票平時可以用收房租的心態投資，享受它的高現金股利，一旦起漲就可以賣掉賺取資本利得。&lt;br /&gt;&lt;br /&gt;◆持股定期汰弱扶強&lt;br /&gt;&lt;br /&gt;～每年穩健獲利10％以上&lt;br /&gt;&lt;br /&gt;用高現金配股的條件篩選，..選股變得很簡單，只要1年檢視1次手中持股，將配發現金股利太少的股票踢掉，即使大盤不佳，每年也可以穩健獲利10％到15％。&lt;br /&gt;&lt;br /&gt;至於買賣點，我有幾個觀察技術指標的祕訣。買進點以周KD值來看，殺到20低檔區就下手，而當K線往下滑，D線還在上升之際開始脫手，提前避開死亡交叉點.。&lt;br /&gt;&lt;br /&gt;而且，以目前主要賺取資本利得的市場中，也不一定參加除權息，避免增加稅額負擔。&lt;br /&gt;&lt;br /&gt;另外，只要大盤...指數的.季線乖離率超過10，就應該分批下車，例如台股這波由9,800點往下修正時，季線乖離率就高達13。&lt;br /&gt;&lt;br /&gt;此外，我也會保留部分現金，讓自己在遇到好的投資標的時，不會因為沒有資本而扼腕，所以現金定存、股票占了我自己資產配置的50％，以達到降低風險又能穩健獲利的效果，剩下的50％就是我最懂、也最積極操作的基金。&lt;br /&gt;&lt;br /&gt;我一直認為，風險控制應該以你對產品的熟悉度來區分，所以我最積極投資的就是基金，而且是利用「單筆投資定.....時....定額化」..的方式，避免一般定時定額獲利太慢的問題，該怎麼做呢？&lt;br /&gt;&lt;br /&gt;◆3個步驟&lt;br /&gt;&lt;br /&gt;～增加獲利 減低風險&lt;br /&gt;&lt;br /&gt;〈Step1〉不要去想報酬率，而是要看到底賺了多少錢！舉例來說，如果拿3,000元投資定時定額，年初買進拉丁美洲基金，年中報酬率漲了超過40％，你這時候想賣，但卻因為獲利的絕對金額只有幾千元，而選擇繼續保留，可惜的是，這一點獲利就在目前這波跌勢中又吐了回去。&lt;br /&gt;&lt;br /&gt;因此，投資人看獲利不要只是考量報酬率，而是要看絕對金額。&lt;br /&gt;&lt;br /&gt;〈Step2〉放大定時投資金額&lt;br /&gt;&lt;br /&gt;為了賺到絕對金額，最快的方法是放大你的定.......時投資金額。例如，1期投資5萬元，報酬率要50％才獲利2.5萬元；..........但是投資100萬，只要報酬率5％，就能賺到5萬元。定期投資金額放大，絕對金額相對拉高，這也就是為什麼有錢人可以不用拚高投報率，卻能持續錢滾錢的原因。&lt;br /&gt;&lt;br /&gt;〈Step3〉增加扣款頻率&lt;br /&gt;&lt;br /&gt;基於金額累積快速的概念，投資人也可以增加扣款頻率，1個月扣5,000元，不如1個月扣3次5,000元，既可快速累積投資金額，而且同時用時間攤提法，風險曲線也會愈來愈平緩，兼具避險的功用。&lt;br /&gt;&lt;br /&gt;◆先布區塊 再布產業&lt;br /&gt;&lt;br /&gt;～波動愈大 愈壓重金&lt;br /&gt;&lt;br /&gt;在定時定額的投資選擇上，我是以「先....布....區塊、再..布..產業」的方式全部持有，而且「波動愈大、金額愈大、操作愈頻繁」。&lt;br /&gt;&lt;br /&gt;例如：我先持有亞洲、東歐、拉美3塊新興市場基金各1....檔，成熟型市場的部分則是把美國、日本以1.檔全球型基金來取代，因為看好歐洲後勢，所以另外拉1檔歐洲基金出來。&lt;br /&gt;&lt;br /&gt;唯一的單一國家就只有台股，台股基金之前......占整體基金投資的比重約25％，今年則拉高到50％，這樣就等於把新興市場、成熟市場以及最能掌握脈動的市場全部布滿。&lt;br /&gt;&lt;br /&gt;另外，針對波動最大的能源基金和礦業基金壓上重本，只要報酬率超過40％就贖回，因為這類基金受到消息面影響大，買賣起始點很難抓，單筆投資難度很高，不如以單筆投資定.......時定額化的方式來回操作，較能賺到絕對金額。&lt;br /&gt;&lt;br /&gt;其實，定時定額的基本精神是強迫儲蓄，是從零存整付的觀念衍.生出來的，但儲蓄方法可以變通。&lt;br /&gt;&lt;br /&gt;如何用同一筆錢創造更高的報酬率？只要善用熟悉度控制風險，搭配適當的操作方式，投資也能變得很簡單，報酬才能真正落袋。&lt;br /&gt;&lt;br /&gt;◆顛覆傳統的風險觀念&lt;br /&gt;&lt;br /&gt;1. 打破資產配置股債比定律&lt;br /&gt;&lt;br /&gt;2. 打破股票風險高、基金較穩健的刻板印象&lt;br /&gt;&lt;br /&gt;3. 不以年齡來區分保守型、積極型投資人&lt;br /&gt;&lt;br /&gt;4. 以自己最熟悉的產品控制風險&lt;br /&gt;&lt;br /&gt;5. 波動愈大的基金，投資愈大&lt;br /&gt;&lt;br /&gt;◆蕭碧燕的資產配置組合&lt;br /&gt;&lt;br /&gt;◇保守型：現金 50%&lt;br /&gt;&lt;br /&gt;1. 每月生活費×12個月（定存）&lt;br /&gt;&lt;br /&gt;2. 依自己情況保留部分現金&lt;br /&gt;&lt;br /&gt;◇穩健型：股票&lt;br /&gt;&lt;br /&gt;1. 選擇高現金股利之產業龍頭股&lt;br /&gt;&lt;br /&gt;2. 周KD值到20買進，K線下滑、D線仍上升時脫手，避開死亡交叉點3. 季線乖離率超過10時分批下車&lt;br /&gt;&lt;br /&gt;4. 1年檢視1次手中持股&lt;br /&gt;&lt;br /&gt;5. 蕭碧燕目前持股為高股息的產業龍頭股&lt;br /&gt;&lt;br /&gt;◇積極型：共同基金 50%&lt;br /&gt;&lt;br /&gt;1. 以定時定額為主，單筆為輔&lt;br /&gt;&lt;br /&gt;2. 先布區塊、再布產業&lt;br /&gt;&lt;br /&gt;3. 加大投資金額，或增加扣款頻率&lt;br /&gt;&lt;br /&gt;4. 波動愈大、金額愈大、操作愈頻繁&lt;br /&gt;&lt;br /&gt;5. 報酬率超過40％就贖回&lt;br /&gt;&lt;br /&gt;6. 蕭碧燕目前持有的定時定額基金：&lt;br /&gt;&lt;br /&gt;A、成熟市場&lt;br /&gt;&lt;br /&gt;-美國、日本以1檔全球型基金代替&lt;br /&gt;&lt;br /&gt;-看好後勢發展，歐洲個別配置1檔&lt;br /&gt;&lt;br /&gt;B、新興市場&lt;br /&gt;&lt;br /&gt;-亞洲3檔&lt;br /&gt;&lt;br /&gt;-東歐、拉美各1檔&lt;br /&gt;&lt;br /&gt;C、波動較大的市場&lt;br /&gt;&lt;br /&gt;-能源、礦業基金各1檔，但定時扣款加碼1倍&lt;br /&gt;&lt;br /&gt;D、台股市場&lt;br /&gt;&lt;br /&gt;-往年投資占定時定額基金投資總額約25％，今年加碼至50％，共持有17檔台股基金。&lt;br /&gt;&lt;br /&gt;整理：方沛晶&lt;br /&gt;&lt;br /&gt;口述：蕭碧燕 整理：方沛晶&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-3032936080672590178?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/3032936080672590178/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/blog-post_15.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/3032936080672590178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/3032936080672590178'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/blog-post_15.html' title='活用定時定額方法 增加絕對金額'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-5654750009433497316</id><published>2007-09-13T12:20:00.000+08:00</published><updated>2007-09-13T12:21:09.535+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>新手看招：Linux作業系統備份後的恢復方法</title><content type='html'>&lt;span class="a14c" id="zoom"&gt; &lt;p style="TEXT-INDENT: 2em"&gt;如果你的Linux系統出現故障了，但只要tar和gzip還能用，你就可以憑藉那些備份來恢復系統。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;以運行級別1啟動Linux，挂上“/usr”分區和“backup”分區。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;“cd /”。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;“tar zxvf /opt/backup/system/RfL4.0/Bate/1st/bin.tgz”，把文件“/opt/backup/system/RfL4.0/Bate/1st/bin.tgz”解壓縮和反歸檔到當前目錄裏。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;“tar zxvf /opt/backup/system/RfL4.0/Bate/1st/boot.tgz”。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;... &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;“tar zxvf /opt/backup/system/RfL4.0/Bate/1st/var.tgz”。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;這樣就OK了。如果系統不能引導，看前面重建引導的方法。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;如果你有幸安裝了多個Linux，那麼即使一個Linux徹底壞了也不怕。你可以在一個還能正常運行的Linux中用命令“mkfs.ext3 /dev/分區編號”把壞Linux的分區格了，再把這個分區挂入這個好的系統的某個目錄，進那個目錄，然後解壓縮和反歸檔那些備份文件，最後重建引導。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;前天我用這個辦法在朋友的硬盤上種了兩份Linux。 &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-5654750009433497316?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/5654750009433497316/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux_3802.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5654750009433497316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5654750009433497316'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux_3802.html' title='新手看招：Linux作業系統備份後的恢復方法'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-5122329025280992961</id><published>2007-09-13T00:30:00.000+08:00</published><updated>2007-09-13T00:31:26.048+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Linux作業系統發行版製作簡要過程說明</title><content type='html'>&lt;span class="a14c" id="zoom"&gt; &lt;p style="TEXT-INDENT: 2em"&gt;1.項目整體分析 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;製作Linux發佈的目的是為了在系統中能夠快速，正確地建立Linux系統環境。製作Linux發佈的主要工作是決定各種軟體的去留，因為有了 RPM(RedHat Package Manager)包對其提供優良的管理能力，所以以目前比較成熟的RedHat Linux發佈程式作為藍本，以RPM包作為基本的制定單元，以需求為原則對其進行取捨，得到適合實際需要的Linux系統。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;由此，項目自然而然的以分析RedHat Linux的光碟安裝系統為起點，在掌握了其結構和行為的基礎上，在包一級（結構部分）和代碼一級（行為部分）進行修改，同時建立相應的測試環境，以便對修改進行及時的規範。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2.項目分步驟實施細節 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2.1對Linux光碟安裝系統的分析 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;A 結構部分 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;在安裝光碟中，主要的目錄結構和文件大致如下： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;images/ 此目錄下包含了製作啟動盤的映像文件（文件尾碼img）， &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;其中boot.img是當安裝介質為CD-ROM時負責引導系統的映像文件 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;bootnet.img是當安裝介質為FTP,NFS等時負責引導系統的映像文件 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;driver.img是由一些特殊設備驅動程式模組組成的映像文件，在當前內核不支援這些設備的情況下，提供了對它們進行訪問的一種方法 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;其中，boot.img映像文件中主要包含以下文件： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;boot.img &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----vmlinuz Linux內核 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----ldlinux.sys 引導Linux的系統文件 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----syslinux.cfg Linux內核引導參數配置文件 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----initrd.img 記憶體虛擬文件系統映像文件 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----*.msg文件 引導時的各種提示資訊文件 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;其中，initrd.img為Linux ext2文件系統，構成如下： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;initrd.img &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----/bin &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----/dev &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----/etc &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----/module &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----/sbin ------ loader &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;安裝程式裝載器 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----/tmp &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----/var &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;可執行文件/sbin/loader的任務是判斷安裝介質的有效性，並從中執行安裝程式。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;其實正是boot.img，在系統啟動時被執行，經解析之後在記憶體建立起了Linux內核,並根據配置文件syslinux.cfg裝載虛擬文件系統，形成了完整的Linux System，為後續的工作提供了必要的作業系統環境。Boot.img映像的文件系統類型為msdos，而其中的initrd.img映像的文件系統類型必為Linux系統自己的ext2，所以對於它們的解析操作是不同的，具體請參考附錄A 。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;RedHat/ 此目錄是RedHat Linux發佈的核心目錄，主要的目錄結構都在這裡，其中 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;RPMS/ 包含了RedHat Linux發佈的主要部分，即以RPM包的形式將Linux系統中的二進位可執行文件，配置文件，文檔等等組織在一起，形成能完成一定功能的比較獨立的套裝軟體（文件尾碼rpm）。這個目錄就是把這些套裝軟體都集合在一起，形成了RedHat Linux發佈。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;base/ 包含了在安裝過程中要用到的描述組織結構和安裝行為的所有文件，其中comps，hdlist和hdlist2是描述RPM包組織結構的文件。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;comps 此文件把各個RPM包按一定的原則組織成若干組，即components,這樣在安裝過程中就不必對每一個包做出取捨，而以組為單位。comps文件為簡單文本格式，它的結構如下所示： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;4 表示RPM包的版本號，當前為4 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;1 base { } &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;base是此component名，{…}中是此component中所包含的RPM包 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;的名稱列表，1表示在安裝中默認為選中，即默認安裝。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;0 –hide IDS sensor{ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;snort &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;libpcap &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;} &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;表示IDS sensor組中包含有snort和lipcap這兩個RPM包。0表示 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;這個組在安裝中默認為不選中即默認不安裝，並且由—hide指出 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;不在用戶介面上顯示此組。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;hdlist和hdlist2 這兩個文件維護從RPM包名到真實包文件名的映射過程，例如從snort這個RPM包名到真實包文件名snort-1.8.1- 1.1.2.i386.rpm的映射。這兩個文件是用特殊的程式生成的，無法用簡單的方法察看其中的內容和結構。具體的生成方法請參考附錄D。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;stage2.img , hdstg1.img , hdstg2.img , netstg1.img 和netstg2.img 是描述安裝行為的映像文件，其中 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;stage2.img 是當安裝介質為CD-ROM時的安裝程式映像文件 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;hdstg1.img 是當安裝介質為HardDisk時的安裝程式映像文件 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;hdstg2.img 是當安裝介質為HardDisk時的安裝程式映像文件 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;netstg1.img 是當安裝介質為FTP,NFS時的安裝程式映像文件 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;netstg2.img 是當安裝介質為FTP,NFS時的安裝程式映像文件 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;這裡主要討論stage2.img的內容 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;stage2.img &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----/etc &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----/modules &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----/proc &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----/usr----/bin----anaconda &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;安裝程式主執行文件 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;||------/lib-----/anaconda &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;安裝程式腳本文件目錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| |----/installclasses &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| |----/iw &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| |----/texttw &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| |----*.py &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| |------/share---/anaconda &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;安裝程式資源文件目錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| |----/help &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| |----/pixmaps &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;如上所示，stage2.img映像文件中的主要部分是安裝程式anaconda，它的主執行體是/usr/bin下的anaconda，由其調用的大量例程分佈在/usr/lib/anaconda下，而安裝過程中要用到的資源文件分佈在/usr/share/anaconda下。 stage2.img 的解析方法請參考附錄B。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;B 行為部分 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;RedHat 7.1的安裝程式被命名為anaconda。如前所述，當boot.img所代表的啟動介質被系統引導之後，在記憶體中就建立了一個完整的Linux系統（包括Linux內核和一個記憶體虛擬文件系統），之後便執行文件系統中存在的loader命令，從適當的介質中執行安裝程式(例：安裝介質是CD- ROM,就解析CD-ROM上的stage2.img，並從中執行安裝程式)，即執行anaconda，完成Linux系統的安裝任務。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;此次利用RedHat 7.1的安裝程式源代碼的SRPM包形式：anaconda-7.1-5.src.rpm來獲得anaconda的源程式，經解包後在/usr/src/redhat/SOURCES/anaconda-7.1形成了源代碼樹。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;anaconda-7.1 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|-------------------/bootdisk &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;啟動盤目錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|-------------------/docs &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;文檔目錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|-------------------/help &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;安裝過程幫助系統目錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|-------------------/installclasses &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;安裝類型分類目錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|-------------------/iw &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;安裝各步驟響應目錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|-------------------/loader &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;安裝程式裝載器目錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|-------------------/pixmap &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;圖形資源目錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|-------------------/utils &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;工具目錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|-------------------*.py &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;各Python腳本文件 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;分析如下： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;anaconda安裝程式主要用Python語言寫成，它是一種解釋性的，面向對象的腳本語言。源文件尾碼為.py，也可生成可執行的字節碼，尾碼為.pyc或.pyo。其中： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;installclasses/ 子目錄中各文件定義了在安裝過程中用戶可選擇的安裝類型，通常由四個文件workstation.py , server.py , laptop.py和custom.py來描述workstation(工作站)安裝類型,server(伺服器)安裝類型,laptop(膝上型電腦) 安裝類型和custom(自定義)安裝類型。每個腳本文件的內部，則是根據自己安裝類型的特點對安裝步驟，分區策略以及包的取捨做出了不同的方案。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;iw/ 子目錄中各文件定義了在圖形介面安裝狀態時各步驟對Next(下一步)和Prev(上一步)的響應函數。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;loader/ 安裝程式裝載器的源代碼目錄，用C語言寫成。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;pixmap/ 圖形資源目錄，包括安裝過程中使用到的所有位圖，圖標。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;utils/ 安裝程式實用工具目錄。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;anaconda 是安裝程式的主執行文件，它建立了Python語言的運行環境，提供了程式的入口點並以模組的方式將各個子系統結合在一起。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;gui.py 定義了安裝程式圖形介面使用的各種窗口類，包括MessageWindow,ProgressWindow,WaitWindow, ExeceptWindow等，和控制這些窗口及圖形介面行為的InstallInterface, InstallControlWindow, InstallControlState類。總之，控制gui。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;todo.py 定義了安裝程式的各種行為函數，它是圖形介面背後真正進行各項操作的函數集合。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;harddrive.py 定義了當安裝介質為硬盤時，系統該如何找到安裝程式的光碟映像，並從中執行程式。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;安裝程式源代碼的編譯由make和make install組成，完成後在/usr/src/RedHat目錄下形成了如下目錄結構： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;instimage &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|------/etc &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|------/usr &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|------/bin &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|------/sbin &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|------/lib &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| |------/anaconda &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| | |------installclasses &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| | |------iw &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| | |------texttw &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| | |------*.py &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| | &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| |------/anaconda-runtime &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| |------/boot/loader &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|------/share------/anaconda &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|------/help &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|------/pixmaps &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;此目錄結構基本與stage2.img的文件結構相同。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2.2調試環境的建立： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;C 對源程式的修改 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;在分析完安裝程式的基本構成之後，就要建立相應的調試環境。建立此環境的目的是為了可以方便地對修改過的安裝程式及裁減後的RPM包進行隨時的確認。顯然，可以選用CD-ROM或本地硬盤作為調試介質，下表比較了兩者的差別： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;CDROM 硬盤 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;對應的安裝介面 圖形介面 功能表介面 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;對應的映像文件 stage2.img *.iso中的hdstg1.img , hdstg2.img &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;優點 圖形介面，直接使用映像文件stage2.img 隨改隨調，調試週期短，效率高 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;缺點 每次改動都要求刻盤，調試效率低 功能表介面，每次調試都要求提供光碟映像文件*.iso,效率上打折扣 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;在兩者各有優缺點的情況下，考慮折衷的方案，即為了首先保證調試的效率，採用硬盤作為調試介質，但對應的映像文件選取stage2.img，這樣能達到效率最大化，同時調試介面採取圖形方式。採用此方案時，須修改源代碼，以達到預期的效果。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;從前面對安裝系統的分析，可以看出在initrd.img中的/sbin/loader程式負責判斷安裝介質的有效性，並從中執行安裝程式。所以要首先修改它的源代碼文件loader.c，從中找出硬盤安裝時默認讀出光碟映像文件*.iso的函數setupIsoImages,並註釋掉其中在硬盤目錄中尋找映像文件*.iso的相關操作，具體對應Line 582 至 Line590行中包含sprintf和if(){}迴圈的語句，以避免打開子目錄，並在其後加入mountLoopback (&amp;quot;/tmp/hdimage/RedHat/base/stage2.img&amp;quot;,&amp;quot;/mnt/runtime&amp;quot;, &amp;quot;loop0&amp;quot;);一句以便實現直接使用stage2.img的目的，並註釋掉其後從errno=0開始的代碼，經過整個while迴圈到 closedir(dir)，但保留umount(“/tmp/hdimage”)；註釋掉if(!net) return NULL;一句。以上操作目的是防止程式讀出光碟映像文件*.iso。在loader.c的主函數main()中的結尾部分，註釋掉if (!FL_TESTING(flags)) { 和 }的條件判斷的兩條語句，讓程式毫無疑問地執行硬盤上的安裝程式。至此，對loader.c修改完畢。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;同時還要對Python腳本的一些相關文件進行修改以保證對stage2.img文件的支援。具體的，在harddrive.py的類 class HardDriveInstallMethod中，註釋掉函數 mountMedia(self, cdNum)中的所有內容並加Pass語句的方法使此函數失效，同樣方法處理umountMedia函數，mountDirectory函數和 umountDirectory函數，為了保險起見，在其他函數中註釋掉有關上面函數的調用。並在類的構造函數（初始化）中的# Go ahead…語句之前加self.tree=”/tmp/hdimage/”語句，並註釋掉後面的所有語句。這樣做仍然是要保證廢棄iso映像轉而對 stage2.img實現控制。不僅如此，最好還註釋掉todo.py中的Line1781至Line1783調用 self.method.systemMounted一段，以確保不出差錯。接著進行make和make install,重新編譯程式，使修改生效，並把新的loader程式從編譯的目標目錄中copy到boot.img中initrd.img中的相應目錄並覆蓋舊的loader文件。為了啟動時的快速，修改boot.img中的syslinux.cfg文件，去掉啟動提示，延時和其他Linux啟動選項，修改後的syslinux.cfg文件，請參考附錄F &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;最後，把boot.img做成啟動盤，方法請參考附錄G。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;D 建立硬盤介質中的調試目錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;在硬盤的Linux分區中建立形如RedHat安裝光碟目錄結構的調試目錄及相關文件，如下所示： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----/images &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| |------boot.img &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----/RedHat &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----/base &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|　　 　　|------comps , hdlist , hdlist2,stage2.img &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;|----/RPMS &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;| 　　|----*.rpm &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;建立這種目錄結構和相關文件的原因是在安裝程式中已經以代碼的形式確定了它們的命名及結構。其中，對boot.img和stage2.img的相關修改如前所述，而涉及到對comps,hdlist,hdlist2的修改，則需在後續的裁剪過程中確定。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;至此，調試環境建立完畢。現在可以用做好的啟動盤來引導系統，並且可以從指定的硬盤上測試安裝程式和RPM包的正確性。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2.3對安裝步驟的簡化 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;在對RPM 包的剪裁進行之前，還要對原有的安裝步驟做出簡化，去掉一些與系統需求大致無關的項目，使安裝者可以集中精力地配置Sensor的主要參數，忽略諸如對鍵盤，滑鼠，和多國語言的配置。具體的如下所示： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;原有的安裝步驟有： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;1．安裝語言選擇 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2．鍵盤配置 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;3．滑鼠配置 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;4．歡迎資訊 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;5．安裝類型選擇（包括安裝或升級，安裝部分又包括workstation，server，laptop,custom四種類型） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;6．選擇分區方式（自動分區，手動分區，專業分區） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;7．選擇以上部分或全部分區格式化 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;8．Lilo作業系統引導器配置 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;9．網卡及網路配置 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;10．防火牆配置 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;11．語言配置 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;12．時區配置 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;13．賬戶配置 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;14．認證配置 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;15．包組及單RPM包選擇 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;16．包獨立性檢查 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;17．X-Window配置 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;18．安裝前確認 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;19．安裝過程 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;20．製作啟動盤 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;21．安裝完畢確認 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;在這些安裝步驟中很多都是在確定了RPM包組及調試完成後不必要存在的，所以去掉第1，2，3，4，7，8，10，11，14，16，17和第20項安裝步驟，所有去掉步驟的相關設置都採取默認的設置值，如第7步採取分區全部格式化的方案，第8步，採取Lilo放置在MBR上，default boot 為Linux的設置等等，並修改第5步，去掉升級類型和安裝類型中的所有4種既定類型，添加IDS sensor類型。修改完成以後的安裝步驟如下所示： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;1．安裝類型選擇（現有的為IDS sensor一種） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2．選擇分區方式（自動分區，手動分區，專業分區） &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;3．網卡及網路配置 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;4．時區配置 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;5．賬戶配置 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;6．包組及單RPM包選擇 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;7．安裝過程 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;8．安裝完畢確認 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;為此，需要修改Python腳本語言 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;... 在安裝程式運行之初，需要先禁止掉安裝語言選擇，鍵盤配置，滑鼠配置和歡迎資訊，在anaconda中在判斷語言是否有效之前即Line491 if lang:之前加上以下四句: &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[aidcode] 　　instClass.addToSkipList(&amp;quot;language&amp;quot;); 　　instClass.addToSkipList(&amp;quot;keyboard&amp;quot;); 　　instClass.addToSkipList(&amp;quot;mouse&amp;quot;); 　　instClass.addToSkipList(&amp;quot;welcome&amp;quot;); [/aidcode] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;並在gui.py中的類class InstallInterface的run函數中註釋掉Line371至Line371，即在commonSteps結構中除保留( InstallPathWindow, &amp;quot;installtype&amp;quot; )外，註釋掉( LanguageWindow, &amp;quot;language&amp;quot; )，( KeyboardWindow, &amp;quot;keyboard&amp;quot; )，( MouseWindow, &amp;quot;mouse&amp;quot; )和( WelcomeWindow, &amp;quot;welcome&amp;quot; ) &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;...對安裝類型進行精簡。在installclasses目錄下去掉upgrateonly.py , workstation.py , server.py , laptop.py和custom.py即去掉升級類型和安裝類型中的所有4種既定類型, 添加IDS sensor類型，即在目錄中添加sensor.py文件，文件的具體內容請參考附錄E。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;除此之外，還要修改iw/installpath_gui.py腳本文件，以便在圖形介面上不顯示Install和Upgrate圖標和選項，只顯示 IDS Sensor項目。具體的，註釋掉Line223,Line 227,Line 233和Line 234代碼，即在類class InstallPathWindow中的getScreen函數的最後部分不執行顯示。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;... 去掉其他多餘步驟，主要修改iw/installpath_gui.py腳本文件。註釋掉類class InstallPathWindow初始化函數__init__裏結構self.installSteps中的( FormatWindow, &amp;quot;format&amp;quot; ) , ( FirewallWindow, &amp;quot;firewall&amp;quot; ) , ( LanguageSupportWindow, &amp;quot;languagesupport&amp;quot; ) , ( AuthWindow, &amp;quot;authentication&amp;quot; ) , ( UnresolvedDependenciesWindow, &amp;quot;dependencies&amp;quot; ) , ( XConfigWindow, &amp;quot;xconfig&amp;quot; ) , ( BootdiskWindow, &amp;quot;bootdisk&amp;quot; )，即對應著去掉的第7，10，11，14，16，17和第20步驟。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;當這三步完成後，進行make和make install,重新編譯程式，使修改生效，並把這些文件Copy至stage2.img中的相關位置，替換掉舊文件。這樣就完成了對安裝步驟的簡化。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2.4對RPM 包的剪裁 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;對RPM包的裁剪依這次的需求進行。項目整體分析時已做出說明，製作目的是為了在系統前端Sensor 中能夠快速，正確地建立運行Snort的Linux系統環境。所以只需保留Linux基本系統和運行snort所需的環境即可。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;Linux基本系統的RPM包組成在comps文件中的base部分中有詳細的描述，所以就以它為藍本，去掉除base以外的所有component,並去掉base中以下不必要的RPM包： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[aidcode] 　　apmd 　 　 ash 　　autoconfig　 　dhcpcd　 dosfstools 　ed　　eject　　gdm　　 gettext 　　gpm gruff ksymoops lokkit mailcap mailx man mktemp mouseconfig ncurses openldap popt procmail pump raidtool readline redhat-logos redhat-release rootfiles sendmail syslinux utemper words [/aidcode] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;在comps文件中增加IDS Sensor component並在此組中添加必要的RPM包，如snort-1.8.1就需要snort , libpcap , mysql , openssl , openssl-clients , perl等RPM包，除此之外，為了方便調試，也保留了一些用於操作和診斷的RPM包，如tcpdump , iputils , zip等，完成的comps請參考附錄C。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;同時，在/RPM目錄中依照上面所有確認保留的RPM包名稱，刪除不予保留的各RPM文件（文件尾碼.rpm）。此時在/base中的 comps文件和在/RPM中的各rpm文件都已剪裁完成，可以利用genhdlist生成hdlist和hdlist2文件了，genhdlist 在anaconda-7.1的源代碼中的utils目錄裏。具體生成方法見附錄D。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;3. 存在的問題及今後目標 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;此次對NetCop Linux發佈的製作是以RPM包作為裁剪單元進行的，所以必然存在很大缺陷，即對RPM包的內部毫無辦法，無法去掉RPM包內部對需求無用的大量文件並且無法對內核，腳本文件等做出制定修改。所以，下一步所要做的工作，是逐一打開每一個候選的RPM包，依需求對包內的每一個文件做出修改或丟棄，這樣才能做出真正適合sensor的Linux發佈，無疑，工作量是巨大的。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;4. 原始資料及參考文獻 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[aidcode] 　　Bootdisk-HOWTO 　　CDROM-HOWTO 　　CD-Writing-HOWTO 　　Distribution-HOWTO 　　HP-HOWTO 　　KickStart-HOWTO 　　Linux-From-Scratch-HOWTO 　　RedHat-CD-HOWTO 　　RPM-HOWTO 　　http://mail.y-min.or.jp/~nob/ml/linuxppc-jp-dev/199902/msg00150.html [/aidcode] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;附錄 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;附錄A boot.img和initrd.img的解析過程 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;1．首先建立兩個映像文件解析後的裝載點（mount point）： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[aidcode] 　　mkdir /mnt/boot /mnt/initrd [/aidcode] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2．寫shell腳本進行解析和還原： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;解析腳本命名為up &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[aidcode] 　　#！/bin/sh 　　mount -o loop -t msdos boot.img /mnt/boot 　　gzip -cd /mnt/boot/initrd.img &amp;gt; /tmp/initrd.ext2 　　mount -o loop –t ext2 /tmp/initrd.ext2 /mnt/initrd [/aidcode] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;還原腳本命名為down &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[aidcode] 　　#!/bin/sh 　　umount /mnt/initrd 　　gzip -c9 /tmp/initrd.ext2 &amp;gt; /mnt/boot/initrd.img 　　umount /mnt/boot [/aidcode] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;附錄B stage2.img解析過程 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;1．首先建立映像文件解析後的裝載點（mount point）： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[aidcode] 　　mkdir /mnt/stage2 [/aidcode] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;2．寫shell腳本進行解析和還原： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;解析腳本命名為up2 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[aidcode] 　　#!/bin/sh 　　mount -o loop stage2.img /mnt/stage2 [/aidcode] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;還原腳本命名為down2 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[aidcode] 　　#!/bin/sh 　　umount /mnt/stage2 [/aidcode] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;附錄C comps文件清單 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[aidcode] 4 1 Base { MAKEDEV SysVinit anacron at basesystem bash bdflush bzip2 chkconfig console-tools cpio cracklib cracklib-dicts crontabs cyrus-sasl openssl db1 db2 db3 dev devfsd diffutils e2fsprogs file filesystem fileutils findutils gawk glib glibc glibc-common grep gzip hdparm hotplug lilo info initscripts kbdconfig kernel krb5-libs kudzu less libstdc++ libtermcap logrotate losetup mingetty mkbootdisk mkinitrd modutils mount net-tools newt ntsysv pam passwd pciutils popt procps psmisc pwdb quota rpm sed setserial setup setuptool sh-utils shadow-utils slang slocate sysklogd tar termcap textutils time timeconfig tmpwatch util-linux vim-common vim-minimal vixie-cron which zlib } 1 --hide IDS Sensor { iptables iputils libpcap mysql openssh openssh-clients openssl perl rdate snort tcpdump traceroute unzip zip } [/aidcode] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;附錄D hdlist和hdlist2生成方 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;假設在/tmp/cdimage/RedHat/RPMS目錄下收錄著RPM包的話，則通過使用 [aidcode] 　　genhdlist /tmp/cdimage/ [/aidcode] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;生成hdlist和hdlist2文件，文件的生成位置在目錄/tmp/cdimage/RedHat/base/下 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;附錄E sensor.py文件清單 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[aidcode] 　　from installclass import BaseInstallClass 　　from translate import * 　　from installclass import FSEDIT_CLEAR_ALL 　　import os 　　import iutil 　　class InstallClass(BaseInstallClass): 　　name = N_(&amp;quot;IDS Sensor&amp;quot;) 　　pixmap = &amp;quot;sensor.png&amp;quot; 　　sortPriority = 10 　　def __init__(self, expert): BaseInstallClass.__init__(self) self.setGroups([&amp;quot;IDS Sensor&amp;quot;]) self.addToSkipList(&amp;quot;lilo&amp;quot;) self.addNewPartition('/boot', (48, -1, 0), (None, -1, 0), (0,0)) self.addNewPartition('/', (256, -1, 0), (None, -1, 0), (0,0)) self.addNewPartition('/usr', (512, -1, 1), (None, -1, 0), (0,0)) self.addNewPartition('/var', (256, -1, 0), (None, -1, 0), (0,0)) self.addNewPartition('/home',(512, -1, 1), (None, -1, 0), (0,0)) self.setClearParts(FSEDIT_CLEAR_ALL, warningText = N_(&amp;quot;Automatic partitioning will erase ALL DATA on your hard &amp;quot; &amp;quot;drive to make room for your Linux installation.&amp;quot;)) # self.addNewPartition('swap', (64, 256, 1), (None, -1, 0), (0,0)) # 2.4 kernel requires more swap, so base amount we try to get # on amount of memory (minswap, maxswap) = iutil.swapSuggestion() self.addNewPartition('swap', (minswap, maxswap, 1), (None, -1, 0), (0,0)) [/aidcode] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;附錄F syslinux.cfg文件清單 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[aidcode] 　　label linux 　　kernel vmlinuz 　　append initrd=initrd.img lang=us devfs=nomount vga=788 [/aidcode] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;附錄G boot.img製作啟動盤方法 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[aidcode] 　　cat boot.img &amp;gt; /dev/fd0 [/aidcode] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;或 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[aidcode] 　　dd if=boot.img of=/dev/fd0 bs=1440 [/aidcode] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;附錄H Linux光碟映像製作方法 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;在Linux下光碟映像的製作用mkisofs命令，具體的，假設在/tmp/cdimage/目錄下收錄著將要被製作的光碟內容，則執行 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;[aidcode] 　　mkisofs –v –r –T –J –V “NetCop Linux” –b images/boot.img 　　 -o /tmp/NetCopLinux.iso [/aidcode] &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;即可在/tmp目錄下做出一命名為NetCopLinux.iso的光碟映像文件，它以/tmp/cdimage/images/boot.img 作為光碟啟動文件。(T002) &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;test&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12154567-5122329025280992961?l=hon0612.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hon0612.blogspot.com/feeds/5122329025280992961/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux_13.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5122329025280992961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12154567/posts/default/5122329025280992961'/><link rel='alternate' type='text/html' href='http://hon0612.blogspot.com/2007/09/linux_13.html' title='Linux作業系統發行版製作簡要過程說明'/><author><name>Michael</name><uri>http://www.blogger.com/profile/12845592629723281873</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/-azyoqIrCAZk/TnGbTjbuWXI/AAAAAAAAAV4/MTBt8mPdelE/s220/260953_1527460532_405340901_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12154567.post-8399223728560515725</id><published>2007-09-12T23:45:00.000+08:00</published><updated>2007-09-12T23:46:42.191+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>老手經驗談 介紹UNIX高手的十大習慣</title><content type='html'>&lt;span class="a14c" id="zoom"&gt; &lt;p style="TEXT-INDENT: 2em"&gt;當您經常使用某個系統時，往往會陷入某種固定的使用模式。有時，您沒有養成以盡可能最好的方式做事的習慣。有時，您的不良習慣甚至會導致出現混亂。糾正此類缺點的最佳方法之一，就是有意識地採用抵制這些壞習慣的好習慣。本文提出了 10 個值得採用的 UNIX 命令行習慣——幫助您克服許多常見使用怪癖，並在該過程中提高命令行工作效率的好習慣。下面列出了這 10 個好習慣，之後對進行了更詳細的描述。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;在單個命令中創建目錄樹&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;清單 1 演示了最常見的 UNIX 壞習慣之一：一次定義一個目錄樹。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;清單 1. 壞習慣 1 的示例：單獨定義每個目錄樹 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ mkdir tmp &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ cd tmp &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~/tmp $ mkdir a &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~/tmp $ cd a &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~/tmp/a $ mkdir b &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~/tmp/a $ cd b &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~/tmp/a/b/ $ mkdir c &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~/tmp/a/b/ $ cd c &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~/tmp/a/b/c $ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;使用 mkdir 的 -p 選項並在單個命令中創建所有父目錄及其子目錄要容易得多。但是即使對於知道此選項的管理員，他們在命令行上創建子目錄時也仍然束縛于逐步創建每級子目錄。花時間有意識地養成這個好習慣是值得的： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;清單 2. 好習慣 1 的示例：使用一個命令來定義目錄樹 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ mkdir -p tmp/a/b/c &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;您可以使用此選項來創建整個複雜的目錄樹（在腳本中使用是非常理想的），而不只是創建簡單的層次結構。例如： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;清單 3. 好習慣 1 的另一個示例：使用一個命令來定義複雜的目錄樹 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a} &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;過去，單獨定義目錄的唯一藉口是您的 mkdir 實現不支援此選項，但是在大多數系統上不再是這樣了。IBM、AIX®、mkdir、GNU mkdir 和其他遵守單一 UNIX 規範 (Single UNIX Specification) 的系統現在都具有此選項。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;對於仍然缺乏該功能的少數系統，您可以使用 mkdirhier 腳本（請參見參考資料），此腳本是執行相同功能的 mkdir 的包裝： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ mkdirhier project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a} &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;更改路徑；不要移動存檔&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;另一個不良的使用模式是將 .tar 存檔文件移動到某個目錄，因為該目錄恰好是您希望在其中提取 .tar 文件的目錄。其實您根本不需要這樣做。您可以隨心所欲地將任何 .tar 存檔文件解壓縮到任何目錄——這就是 -C 選項的用途。在解壓縮某個存檔文件時，使用 -C 選項來指定要在其中解壓縮該文件的目錄： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;清單 4. 好習慣 2 的示例：使用選項 -C 來解壓縮 .tar 存檔文件 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ tar xvf -C tmp/a/b/c newarc.tar.gz &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;相對於將存檔文件移動到您希望在其中解壓縮它的位置，切換到該目錄，然後才解壓縮它，養成使用 -C 的習慣則更加可取——當存檔文件位於其他某個位置時尤其如此。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;將命令與控制操作符組合使用&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;您可能已經知道，在大多數 Shell 中，您可以在單個命令行上通過在命令之間放置一個分號 (;) 來組合命令。該分號是 Shell 控制操作符，雖然它對於在單個命令行上將離散的命令串聯起來很有用，但它並不適用於所有情況。例如，假設您使用分號來組合兩個命令，其中第二個命令的正確執行完全依賴於第一個命令的成功完成。如果第一個命令未按您預期的那樣退出，第二個命令仍然會運行——結果會導致失敗。相反，應該使用更適當的控制操作符（本文將描述其中的部分操作符）。只要您的 Shell 支援它們，就值得養成使用它們的習慣。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;僅當另一個命令返回零退出狀態時才運行某個命令 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;使用 &amp;amp;&amp;amp; 控制操作符來組合兩個命令，以便僅當 第一個命令返回零退出狀態時才運行第二個命令。換句話說，如果第一個命令運行成功，則第二個命令將運行。如果第一個命令失敗，則第二個命令根本就不運行。例如： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;清單 5. 好習慣 3 的示例：將命令與控制操作符組合使用 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ cd tmp/a/b/c &amp;amp;&amp;amp; tar xvf ~/archive.tar &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;在此例中，存檔的內容將提取到 ~/tmp/a/b/c 目錄中，除非該目錄不存在。如果該目錄不存在，則 tar 命令不會運行，因此不會提取任何內容。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;僅當另一個命令返回非零退出狀態時才運行某個命令 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;類似地，|| 控制操作符分隔兩個命令，並且僅當第一個命令返回非零退出狀態時才運行第二個命令。換句話說，如果第一個命令成功，則第二個命令不會運行。如果第一個命令失敗，則第二個命令才會 運行。在測試某個給定目錄是否存在時，通常使用此操作符，如果該目錄不存在，則創建它： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;清單 6. 好習慣 3 的另一個示例：將命令與控制操作符組合使用 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ cd tmp/a/b/c || mkdir -p tmp/a/b/c &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;您還可以組合使用本部分中描述的控制操作符。每個操作符都影響最後的命令運行： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;清單 7. 好習慣 3 的組合示例：將命令與控制操作符組合使用 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ cd tmp/a/b/c || mkdir -p tmp/a/b/c &amp;amp;&amp;amp; tar xvf -C tmp/a/b/c ~/archive.tar &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;謹慎引用變數&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;始終要謹慎使用 Shell 擴展和變數名稱。一般最好將變數調用包括在雙引號中，除非您有不這樣做的足夠理由。類似地，如果您直接在字母數字文本後面使用變數名稱，則還要確保將該變數名稱包括在方括弧 ([]) 中，以使其與周圍的文本區分開來。否則，Shell 將把尾隨文本解釋為變數名稱的一部分——並且很可能返回一個空值。清單 8 提供了變數的各種引用和非引用及其影響的示例。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;清單 8. 好習慣 4 的示例：引用（和非引用）變數 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ ls tmp/ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;a b &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ VAR=&amp;quot;tmp/*&amp;quot; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ echo $VAR &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;tmp/a tmp/b &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ echo &amp;quot;$VAR&amp;quot; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;tmp/* &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ echo $VARa &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ echo &amp;quot;$VARa&amp;quot; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ echo &amp;quot;${VAR}a&amp;quot; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;tmp/*a &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ echo ${VAR}a &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;tmp/a &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;使用轉義序列來管理較長的輸入&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;您或許看到過使用反斜杠 (\) 來將較長的行延續到下一行的代碼示例，並且您知道大多數 Shell 都將您通過反斜杠聯接的後續行上鍵入的內容視為單個長行。然而，您可能沒有在命令行中像通常那樣利用此功能。如果您的終端無法正確處理多行回繞，或者您的命令行比通常小（例如在提示符下有長路經的時候），反斜杠就特別有用。反斜杠對於了解鍵入的長輸入行的含義也非常有用，如以下示例所示： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;清單 9. 好習慣 5 的示例：將反斜杠用於長輸入 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ cd tmp/a/b/c || \ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;gt; mkdir -p tmp/a/b/c &amp;amp;&amp;amp; \ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;gt; tar xvf -C tmp/a/b/c ~/archive.tar &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;或者，也可以使用以下配置： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;清單 10. 好習慣 5 的替代示例：將反斜杠用於長輸入 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ cd tmp/a/b/c \ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;gt; || \ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;gt; mkdir -p tmp/a/b/c \ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;gt; &amp;amp;&amp;amp; \ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;gt; tar xvf -C tmp/a/b/c ~/archive.tar &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;然而，當您將輸入行劃分到多行上時，Shell 始終將其視為單個連續的行，因為它總是刪除所有反斜杠和額外的空格。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;注意：在大多數 Shell 中，當您按向上箭頭鍵時，整個多行輸入將重繪到單個長輸入行上。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;在列表中對命令分組&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;大多數 Shell 都具有在列表中對命令分組的方法，以便您能將它們的合計輸出向下傳遞到某個管道，或者將其任何部分或全部流重定向到相同的地方。您一般可以通過在某個 Subshell 中運行一個命令列表或通過在當前 Shell 中運行一個命令列表來實現此目的。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;在 Subshell 中運行命令列表&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;使用括弧將命令列表包括在單個組中。這樣做將在一個新的 Subshell 中運行命令，並允許您重定向或收集整組命令的輸出，如以下示例所示： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;清單 11. 好習慣 6 的示例：在 Subshell 中運行命令列表 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ ( cd tmp/a/b/c/ || mkdir -p tmp/a/b/c &amp;amp;&amp;amp; \ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;gt; VAR=$PWD; cd ~; tar xvf -C $VAR archive.tar ) \ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;gt; | mailx admin -S &amp;quot;Archive contents&amp;quot; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;在此示例中，該存檔的內容將提取到 tmp/a/b/c/ 目錄中，同時將分組命令的輸出（包括所提取文件的列表）通過郵件發送到地址 admin。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;當您在命令列表中重新定義環境變數，並且您不希望將那些定義應用於當前 Shell 時，使用 Subshell 更可取。 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;span class="a14c" id="zoom"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&lt;b&gt;在當前 Shell 中運行命令列表&lt;/b&gt; &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;將命令列表用大括弧 ({}) 括起來，以在當前 Shell 中運行。確保在括弧與實際命令之間包括空格，否則 Shell 可能無法正確解釋括弧。此外，還要確保列表中的最後一個命令以分號結尾，如以下示例所示： &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em" /&gt;&lt;p style="TEXT-INDENT: 2em"&gt;清單 12. 好習慣 6 的另一個示例：在當前 Shell 中運行命令列表 &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;~ $ { cp ${VAR}a . &amp;amp;&amp;amp; chown -R guest.guest a &amp;amp;&amp;amp; \ &lt;/p&gt;&lt;p style="TEXT-INDENT: 2em"&gt;&amp;gt; tar cvf newarchive.tar a; } | ma
