source: chapter07/chroot.xml@ 9813d3d9

xry111/clfs-ng
Last change on this file since 9813d3d9 was b59b371, checked in by Xi Ruoyao <xry111@…>, 22 months ago

Merge remote-tracking branch 'origin/trunk' into xry111/clfs-ng

  • Property mode set to 100644
File size: 3.9 KB
RevLine 
[fcc02767]1<?xml version="1.0" encoding="ISO-8859-1"?>
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
8<sect1 id="ch-tools-chroot">
[febac51]9 <?dbhtml filename="env.html"?>
[fcc02767]10
[febac51]11 <title>Setting up the Environment</title>
[fcc02767]12
[a08f031]13 <para>The current shell is also the <command>init</command> process,
14 so exiting from it will cause kernel panic. Prevent exiting from the
15 shell accidentally:</para>
16
17<screen role="nodump"><userinput>enable -n exit
18readonly IGNOREEOF=1000</userinput></screen>
19
[febac51]20 <para>The standard I/O streams of the initial shell process is connected
21 with <filename>/dev/console</filename>. However, the testsuite of some
22 packages may expect the standard I/O streams to be connected with a
23 <quote>real</quote> TTY device node. Spawn a new shell process on the
24 TTY device with <command>agetty</command>:</para>
[fcc02767]25
[febac51]26<screen role="nodump"><userinput>agetty -n -l /bin/bash <replaceable>tty0</replaceable></userinput></screen>
27
28 <para>If you are working via a serial console, replace
29 <replaceable>tty0</replaceable> with the name of the serial console
30 device node, for example <literal>ttyS0</literal>.</para>
31
32 <para>The command above spawns a new shell process on the TTY device
33 specified in the command, and the initial shell process will run in
34 background as an init process with very limited functions. The new shell
35 process will output:</para>
36
37<screen role="nodump"><computeroutput>bash: cannot set terminal process group (-1): Inappropriate ioctl for device
38bash: no job control in this shell</computeroutput></screen>
39
40 <para>This is normal because the shell is not assigned with a
41 controlling terminal yet. Now set up controlling terminal and
42 environment variables:</para>
43
44<screen><userinput>exec setsid -c /usr/bin/env -i \
[fcc02767]45 HOME=/root \
46 TERM="$TERM" \
[febac51]47 PS1='(lfs) \u:\w\$ ' \
[d7a9421]48 PATH=/usr/bin:/usr/sbin \
[490dc153]49 /bin/bash --login</userinput></screen>
[fcc02767]50
[febac51]51 <para>The command replace the current shell process with a new shell
52 process, with controlling terminal set up.</para>
53
[fcc02767]54 <para>The <parameter>-i</parameter> option given to the <command>env</command>
[b59b371]55 command will clear all the variables in the environment. After that, only
[fcc02767]56 the <envar>HOME</envar>, <envar>TERM</envar>, <envar>PS1</envar>, and
57 <envar>PATH</envar> variables are set again. The
58 <parameter>TERM=$TERM</parameter> construct will set the <envar>TERM</envar>
[febac51]59 variable to the default value specified by <command>agetty</command>. This variable is
[ebecd08]60 needed so programs like <command>vim</command> and <command>less</command>
61 can operate properly. If other variables are desired, such as
[fcc02767]62 <envar>CFLAGS</envar> or <envar>CXXFLAGS</envar>, this is a good place to set
[ebecd08]63 them.</para>
[fcc02767]64
65 <para>Notice that <filename class="directory">/tools/bin</filename> is not
[9174a66]66 in the <envar>PATH</envar>. This means that the cross toolchain will no longer be
[ebecd08]67 used.</para>
[fcc02767]68
69 <para>Note that the <command>bash</command> prompt will say
70 <computeroutput>I have no name!</computeroutput> This is normal because the
71 <filename>/etc/passwd</filename> file has not been created yet.</para>
72
[e8f1927]73 <para>Now set up a temporary hostname, which is required by test suite of
74 some packages:</para>
75
76<screen><userinput>hostname lfs</userinput></screen>
77
[fcc02767]78 <note>
79 <para>It is important that all the commands throughout the remainder of this
[febac51]80 chapter and the following chapters are run from within the environment
81 we've set. If you leave this environment for any reason (rebooting for
[fcc02767]82 example), ensure that the virtual kernel filesystems are mounted as
[febac51]83 explained in <xref linkend="ch-tools-kernfsmount"/> and
84 <xref linkend="ch-tools-devadjust"/> and set up the environment again before
85 continuing with the installation.</para>
[fcc02767]86 </note>
87
88</sect1>
Note: See TracBrowser for help on using the repository browser.