?? 8.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0063)http://qref.sourceforge.net/Debian/reference/ch-tips.zh-cn.html -->
<HTML><HEAD><TITLE>Debian 參考手冊 - Debian技巧</TITLE>
<META http-equiv=content-type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.3790.118" name=GENERATOR></HEAD>
<BODY><A name=ch-tips></A>
<HR>
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-kernel.zh-cn.html">上一頁</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/reference.zh-cn.html#contents">目錄</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-preface.zh-cn.html">1</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-system.zh-cn.html">2</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-install.zh-cn.html">3</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-tutorial.zh-cn.html">4</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-woody.zh-cn.html">5</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-package.zh-cn.html">6</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-kernel.zh-cn.html">7</A> ]
[ 8 ] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-tune.zh-cn.html">9</A> ] [
<A
href="http://qref.sourceforge.net/Debian/reference/ch-gateway.zh-cn.html">10</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-edit.zh-cn.html">11</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-vcs.zh-cn.html">12</A> ] [
<A
href="http://qref.sourceforge.net/Debian/reference/ch-program.zh-cn.html">13</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-gnupg.zh-cn.html">14</A> ]
[ <A
href="http://qref.sourceforge.net/Debian/reference/ch-support.zh-cn.html">15</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ap-appendix.zh-cn.html">A</A>
] [ <A
href="http://qref.sourceforge.net/Debian/reference/ch-tune.zh-cn.html">下一頁</A> ]
<HR>
<H1>Debian 參考手冊 <BR>第 8 章 - Debian技巧 </H1>
<HR>
<A name=s-booting></A>
<H2>8.1 啟動系統</H2>
<P>參閱LDP <CODE><A
href="http://www.tldp.org/HOWTO/BootPrompt-HOWTO.html">BootPrompt-HOWTO</A></CODE>獲得有關系統提示的詳細信息。
<HR>
<A name=s-crackroot></A>
<H3>8.1.1 “我忘了root密碼!”(1)</H3>
<P>只要能訪問控制臺鍵盤,不需要root密碼就可以啟動系統登錄到root帳號。(假設BIOS或<CODE>lilo</CODE>之類的啟動引導器在啟動時不需要密碼。)
<P>整個過程不需要另外的啟動盤或對BIOS設置進行修改。在此,“Linux”僅是一個標簽,它代表啟動Debian默認安裝的Linux內核。
<P>在<CODE>lilo</CODE>啟動屏幕中,一但出現<SAMP>boot:</SAMP>(對某些系統而言,必須按下shift鍵以阻止自動啟動),就輸入:
<PRE> boot: Linux init=/bin/sh
</PRE>
<P>它會指示系統啟動內核后運行<CODE>/bin/sh</CODE>而不是<CODE>init</CODE>。現在你已獲得root特權和root
shell。由于當前<CODE>/</CODE>是以只讀方式掛載,而其它的硬盤分區均未掛載,故你必須完成下列步驟才能獲得一個有適當功能的系統。 <PRE> init-2.03# mount -n -o remount,rw /
init-2.03# mount -avt nonfs,noproc,nosmbfs
init-2.03# cd /etc
init-2.03# vi passwd
init-2.03# vi shadow
</PRE>
<P>(如果在<CODE>/etc/passwd</CODE>文件中所有用戶的第二個域的數據為“x”,就表明系統使用了影子密碼,必須編輯<CODE>/etc/shadow</CODE>。)要刪除root密碼,請編輯密碼文件中第二個數據域,將它設置為空白。重啟系統不用密碼就能登錄到root。當系統啟動進入runlevel
1時,Debian(至少是Potato以后的版本)需要密碼,一些較老的版本則不需要。
<P>在<CODE>/bin</CODE>下裝一個小編輯器是個好習慣,因為有時<CODE>/usr</CODE>是無法訪問的(參閱<A
href="http://qref.sourceforge.net/Debian/reference/ch-edit.zh-cn.html#s-bin-editor">應急的編輯器,
第 11.2 節</A>)。
<P>如果安裝<CODE>sash</CODE>軟件包,當系統無法啟動時,還可執行: <PRE> boot: Linux init=/bin/sash
</PRE>
<P>當<CODE>/bin/sh</CODE>不可用時,<CODE>sash</CODE>可作為<CODE>sh</CODE>的交互式替代品,它是靜態鏈接,內建了許多標準工具(在系統提示符下輸入“help”可獲得參考列表)。
<HR>
<A name=s-crackroot2></A>
<H3>8.1.2 “我忘了root密碼!”(2)</H3>
<P>從急救盤啟動系統。假設<CODE><VAR>/dev/hda3</VAR></CODE>是原始root分區,可用下面的方法編輯密碼文件,與上述方法一樣容易。
<PRE> # mkdir <VAR>fixit</VAR>
# mount <VAR>/dev/hda3</VAR> <VAR>fixit</VAR>
# cd <VAR>fixit</VAR>/etc
# vi shadow
# vi passwd
</PRE>
<P>與上面的方法相比,該方法的好處在于不需要知道<CODE>lilo</CODE>密碼(如果有的話)。但如果系統沒有預先設置為從軟盤或CD啟動,就需要訪問BIOS的權限。
<HR>
<A name=s-dead-lilo></A>
<H3>8.1.3 無法啟動系統</H3>
<P>沒在安裝過程中制作啟動盤?沒關系。如果<CODE>lilo</CODE>損壞了,從Debian安裝套件中拿出啟動盤,用它來啟動系統。假設你的root分區在<CODE><VAR>/dev/hda12</VAR></CODE>,你想進入runlevel
3,在啟動提示符后輸入: <PRE> boot: rescue root=<VAR>/dev/hda12</VAR> 3
</PRE>
<P>接下來,系統使用軟盤上的內核啟動,你可登錄到一個幾乎擁有全部功能的系統了。(可能有少量特性或模塊不可用。)
<P>如果系統崩潰,亦可參閱<A
href="http://qref.sourceforge.net/Debian/reference/ch-package.zh-cn.html#s-un-bootable">為無法啟動的系統安裝軟件包,
第 6.3.6 節</A>。
<P>如果想做張自定義啟動盤,參閱急救盤中的<CODE>readme.txt</CODE>文檔。
<HR>
<A name=s-no-x-start></A>
<H3>8.1.4 “我不想直接啟動到X!”</H3>
<P>玩<SAMP>unstable/sid</SAMP>很有趣,但在啟動進程中執行不穩定的<CODE>xdm</CODE>、<CODE>gdm</CODE>、<CODE>kdm</CODE>和<CODE>wdm</CODE>會讓你焦頭爛額。
<P>首先,在啟動提示符后輸入如下指令獲得root shell: <PRE> boot: <VAR>Linux</VAR> vga=normal s
</PRE>
<P>其中,<VAR>Linux</VAR>代表你要啟動的內核鏡像,“vga=normal”告訴lilo在普通VGA屏幕下運行,“s”(或“S”)是傳給<CODE>init</CODE>的參數,告訴它進入單用戶模式。在提示符后輸入root密碼。
<P>有多種方法禁用X啟動deaemons:
<UL>
<LI>run <SAMP>update-rc.d <VAR>?</VAR>dm stop 99 1 2 3 4 5 6</SAMP> </LI></UL>
<UL>
<LI>insert "exit 0" at the start of all
<CODE>/etc/init.d/<VAR>?</VAR>dm</CODE> files. </LI></UL>
<UL>
<LI>rename all <CODE>/etc/rc<VAR>2</VAR>.d/S99<VAR>?</VAR>dm</CODE> files to
<CODE>/etc/rc2.d/K99<VAR>?</VAR>dm</CODE>. </LI></UL>
<UL>
<LI>remove all <CODE>/etc/rc<VAR>2</VAR>.d/S99<VAR>?</VAR>dm</CODE> files.
</LI></UL>
<UL>
<LI>run <SAMP>:>/etc/X11/default-display-manager</SAMP> </LI></UL>
<P>其中,<CODE>rc<VAR>2</VAR>.d</CODE>必須與<CODE>/etc/inittab</CODE>中指定的runlevel一致。<CODE><VAR>?</VAR>dm</CODE>表示所有的<CODE>xdm</CODE>、<CODE>gdm</CODE>、<CODE>kdm</CODE>和<CODE>wdm</CODE>。
<P>在Debian下只有第一種方法“最正確”。最后一種方法比較簡單但只適用于Debian,而且還需要使用<CODE>dpkg-reconfigure</CODE>重新設置一次。其它方法都是通用的中止daemons的方法。
<P>你仍可在任何控制臺shell中輸入<CODE>startx</CODE>啟動X。
<HR>
<A name=s-bootprompt></A>
<H3>8.1.5 其它用于啟動提示符的技巧</H3>
<P>使用<CODE>lilo</CODE>啟動提示符,可指定系統啟動到特定的runlevel和配置。詳情參閱<CODE><A
href="http://www.tldp.org/HOWTO/BootPrompt-HOWTO.html">BootPrompt-HOWTO</A></CODE>
(LDP)。
<P>如果希望系統啟動到runlevel 4,可以<CODE>lilo</CODE>啟動提示符后輸入: <PRE> boot: Linux 4
</PRE>
<P>如果希望系統啟動到正常功能的單用戶模式,而且你知道root密碼,可在<CODE>lilo</CODE>啟動提示符后輸入下列任一參數。 <PRE> boot: Linux S
boot: Linux 1
boot: Linux -s
</PRE>
<P>如果希望系統以少于實際內存數的內存啟動(也就是說機器有64MB內存,只分配48MB給系統使用),在<CODE>lilo</CODE>啟動提示符后輸入: <PRE> boot: Linux mem=48M
</PRE>
<P>注意,不要指定大于實際內存數的內存,否則內核會崩潰。如果你有多于64MB的內存,如128MB,應在系統啟動時執行<SAMP>mem=128M</SAMP>或在<CODE>/etc/lilo.conf</CODE>中添加類似的命令行,否則舊內核或使用舊BIOS的主板將無法使用大于64MB的內存。
<HR>
<A name=s-bootgrub></A>
<H3>8.1.6 如何設置啟動參數(GRUB)</H3>
<P>GRUB是Hurd項目開發的新型啟動管理器,比Lilo更靈活,不過啟動參數也與之稍有不同。 <PRE> grub> find /vmlinuz
grub> root (hd0,0)
grub> kernel /vmlinuz root=/dev/hda1
grub> initrd /initrd
grub> boot
</PRE>
<P>請注意Hurd中的設備名: <PRE> HURD/GRUB Linux MSDOS/Windows
(fd0) /dev/fd0 A:
(hd0,1) /dev/hda1 C: (usually)
(hd0,4) /dev/hda4 F: (usually)
(hd1,4) /dev/hdb4 ?
</PRE>
<P>詳情參閱<CODE>/usr/share/doc/grub/README.Debian</CODE>和<CODE>/usr/share/doc/grub-doc/html/</CODE>。
<HR>
<A name=s8.2></A>
<H2>8.2 活動記錄</H2>
<HR>
<A name=s-script></A>
<H3>8.2.1 記錄shell活動</H3>
<P>比起普通的個人電腦環境,Unix環境的系統管理包含了更多細致的任務。必須掌握所有基本的配置方法以便進行系統故障恢復。基于X的GUI配置工具看上去又好又方便,但不適用于緊急狀況。
<P>記錄shell活動是個好習慣,特別是root用戶。
<P>Emacs:使用<SAMP>M-x shell</SAMP>在緩沖區中開始記錄,使用<SAMP>C-x C-w</SAMP>將緩沖區中的記錄寫入文件。
<P>Shell:使用<CODE>screen</CODE>命令和“^A H”,參閱<A
href="http://qref.sourceforge.net/Debian/reference/ch-tips.zh-cn.html#s-screen">用<CODE>screen</CODE>來定制控制臺,
第 8.6.26 節</A>或<CODE>script</CODE>命令: <PRE> $ script
Script started, file is typescript
... do whatever ...
Control-D
$ col -bx <typescript >savefile
$ vi savefile
</PRE>
<P>還可使用下面的方法: <PRE> $ bash -i 2>&1 | tee typescript
</PRE>
<HR>
<A name=s8.2.2></A>
<H3>8.2.2 記錄X活動</H3>
<P>如果需要X應用程序的活動記錄圖,包括xterm屏顯,可使用<CODE>gimp</CODE>(GUI)。它可以對每個窗口或整個屏幕進行拍照。還可以使用<CODE>xwd</CODE>(<CODE>xbase-clients</CODE>)、<CODE>import</CODE>(<CODE>imagemagick</CODE>)或<CODE>scrot</CODE>(<CODE>scrot</CODE>)。
<HR>
<A name=s-archiving></A>
<H2>8.3 拷貝及創建子目錄</H2>
<HR>
<A name=s8.3.1></A>
<H3>8.3.1 拷貝整個子目錄的基本命令</H3>
<P>如果想重新整理文件組織結構,可使用下面的方法移動文件及文件鏈接: <PRE> 標準方法:
# cp -a /source/directory /dest/directory # requires GNU cp
# (cd /source/directory && tar cf - . ) | \
(cd /dest/directory && tar xvfp - )
如果包含硬鏈接,則需要更嚴謹的方法:
# cd /path/to/old/directory
# find . -depth -print0 | afio -p -xv -0a /mount/point/of/new/directory
如果是遠程操作:
# (cd /source/directory && tar cf - . ) | \
ssh user@host.dom (cd /dest/directory && tar xvfp - )
如果沒有鏈接文件:
# scp -pr user1@host1.dom:/source/directory \
user2@host2.dom:/dest/directory
</PRE>
<P>其中,<CODE>scp</CODE> <==> <CODE>rcp</CODE>,<CODE>ssh</CODE> <==>
<CODE>rsh</CODE>。
<P>下面的有關拷貝整個子目錄的信息由Manoj Srivastava
<srivasta@debian.org>發表于debian-user@lists.debian.org。
<HR>
<A name=s8.3.2></A>
<H3>8.3.2 <CODE>cp</CODE></H3>
<P>傳統上,<CODE>cp</CODE>并不能真正完成這個任務,因為它既沒對符號鏈接進行區別對待,又不能保存硬鏈接。另一件需要注意的事就是稀疏文件(有洞的文件)。
<P>GNU
<CODE>cp</CODE>克服了這缺陷,然而對于非GNU系統,<CODE>cp</CODE>仍存在問題。而且使用<CODE>cp</CODE>無法生成小巧輕便的文檔包。
<PRE> % cp -a . newdir
</PRE>
<HR>
<A name=s8.3.3></A>
<H3>8.3.3 <CODE>tar</CODE></H3>
<P>Tar克服了<CODE>cp</CODE>在處理符號鏈接時出現的問題,然而,<CODE>cpio</CODE>可以處理特殊文件,傳統的<CODE>tar</CODE>卻不行。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -