chroot.xml 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  3. "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  4. <!ENTITY % general-entities SYSTEM "../general.ent">
  5. %general-entities;
  6. ]>
  7. <sect1 id="ch-system-chroot">
  8. <?dbhtml filename="chroot.html"?>
  9. <title>进入 Chroot 环境</title>
  10. <!--para>It is time to enter the chroot environment to begin building and
  11. installing the final LFS system. As user <systemitem
  12. class="username">root</systemitem>, run the following command to enter the
  13. realm that is, at the moment, populated with only the temporary tools:</para-->
  14. <para>现在到了进入 chroot 环境,并开始构建和安装最终的 LFS 系统的时候。
  15. 以 <systemitem class="username">root</systemitem> 身份,
  16. 执行以下命令,进入这个目前只包含临时工具的空间:</para>
  17. <screen role="nodump"><userinput>chroot "$LFS" /tools/bin/env -i \
  18. HOME=/root \
  19. TERM="$TERM" \
  20. PS1='(lfs chroot) \u:\w\$ ' \
  21. PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
  22. /tools/bin/bash --login +h</userinput></screen>
  23. <!--para>The <parameter>-i</parameter> option given to the <command>env</command>
  24. command will clear all variables of the chroot environment. After that, only
  25. the <envar>HOME</envar>, <envar>TERM</envar>, <envar>PS1</envar>, and
  26. <envar>PATH</envar> variables are set again. The
  27. <parameter>TERM=$TERM</parameter> construct will set the <envar>TERM</envar>
  28. variable inside chroot to the same value as outside chroot. This variable is
  29. needed for programs like <command>vim</command> and <command>less</command>
  30. to operate properly. If other variables are needed, such as
  31. <envar>CFLAGS</envar> or <envar>CXXFLAGS</envar>, this is a good place to set
  32. them again.</para-->
  33. <para>传递给 <command>env</command> 的 <parameter>-i</parameter>
  34. 参数会清除 chroot 环境中的所有环境变量。
  35. 随后,只重新设定 <envar>HOME</envar>、<envar>TERM</envar>、
  36. <envar>PS1</envar> 和 <envar>PATH</envar> 变量。
  37. 参数 <parameter>TERM=$TERM</parameter> 将 chroot 环境中的
  38. <envar>TERM</envar> 变量设为和 chroot 环境外相同的值,
  39. 许多程序需要这个变量才能正常工作,例如 <command>vim</command>
  40. 和 <command>less</command>。如果需要设定其他变量,例如
  41. <envar>CFLAGS</envar> 或 <envar>CXXFLAGS</envar>,
  42. 在这里顺便设定比较合适。</para>
  43. <!--para>From this point on, there is no need to use the
  44. <envar>LFS</envar> variable anymore, because all work will be restricted
  45. to the LFS file system. This is because the Bash shell is told that
  46. <filename class="directory">$LFS</filename> is now the root
  47. (<filename class="directory">/</filename>) directory.</para-->
  48. <para>从现在开始,就不再需要使用 <envar>LFS</envar> 环境变量,
  49. 因为所有工作都被局限在 LFS 文件系统内。这是由于 Bash 被告知
  50. <filename class="directory">$LFS</filename> 现在是根目录
  51. (<filename class="directory">/</filename>)。</para>
  52. <!--para>Notice that <filename class="directory">/tools/bin</filename> comes last
  53. in the <envar>PATH</envar>. This means that a temporary tool will no longer be
  54. used once its final version is installed. This occurs when the shell does not
  55. <quote>remember</quote> the locations of executed binaries&mdash;for this
  56. reason, hashing is switched off by passing the <parameter>+h</parameter> option
  57. to <command>bash</command>.</para-->
  58. <para>注意到 <filename class="directory">/tools/bin</filename>
  59. 处于 <envar>PATH</envar> 的末尾,
  60. 这意味着一旦安装了某个工具的最终版本,就不再使用对应的临时工具。
  61. 这还需要保证 shell 不 <quote>记忆</quote> 执行过的程序的位置
  62. —— 因此需要传递 <parameter>+h</parameter> 参数给
  63. <command>bash</command> 以关闭散列功能。</para>
  64. <!--para>Note that the <command>bash</command> prompt will say
  65. <computeroutput>I have no name!</computeroutput> This is normal because the
  66. <filename>/etc/passwd</filename> file has not been created yet.</para-->
  67. <para>注意 <command>bash</command> 的提示符会包含
  68. <computeroutput>I have no name!</computeroutput> 。
  69. 这是正常的,因为现在还没有创建 <filename>/etc/passwd</filename> 文件。
  70. </para>
  71. <note>
  72. <!--para>It is important that all the commands throughout the remainder of this
  73. chapter and the following chapters are run from within the chroot
  74. environment. If you leave this environment for any reason (rebooting for
  75. example), ensure that the virtual kernel filesystems are mounted as
  76. explained in <xref linkend="ch-system-bindmount"/> and <xref
  77. linkend="ch-system-kernfsmount"/> and enter chroot again before continuing
  78. with the installation.</para-->
  79. <para>本章剩余部分和后续各章中的命令都要在 chroot 环境中运行。
  80. 如果您因为一些原因(如重新启动计算机)离开了该环境,
  81. 必须确认虚拟内核文件系统如 <xref linkend="ch-system-bindmount"/>
  82. 和 <xref linkend="ch-system-kernfsmount"/> 所述挂载好,
  83. 然后重新进入 chroot 环境,才能继续安装 LFS 。</para>
  84. </note>
  85. </sect1>