source: chapter07/chroot.xml@ febac51

Last change on this file since febac51 was febac51, checked in by Xi Ruoyao <xry111@…>, 10 months ago

cross-ng: chapter 7: adjust introduction for cross build

  • Property mode set to 100644
File size: 3.5 KB
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "" [
4 <!ENTITY % general-entities SYSTEM "../general.ent">
5 %general-entities;
8<sect1 id="ch-tools-chroot">
9 <?dbhtml filename="env.html"?>
11 <title>Setting up the Environment</title>
13 <para>The standard I/O streams of the initial shell process is connected
14 with <filename>/dev/console</filename>. However, the testsuite of some
15 packages may expect the standard I/O streams to be connected with a
16 <quote>real</quote> TTY device node. Spawn a new shell process on the
17 TTY device with <command>agetty</command>:</para>
19<screen role="nodump"><userinput>agetty -n -l /bin/bash <replaceable>tty0</replaceable></userinput></screen>
21 <para>If you are working via a serial console, replace
22 <replaceable>tty0</replaceable> with the name of the serial console
23 device node, for example <literal>ttyS0</literal>.</para>
25 <para>The command above spawns a new shell process on the TTY device
26 specified in the command, and the initial shell process will run in
27 background as an init process with very limited functions. The new shell
28 process will output:</para>
30<screen role="nodump"><computeroutput>bash: cannot set terminal process group (-1): Inappropriate ioctl for device
31bash: no job control in this shell</computeroutput></screen>
33 <para>This is normal because the shell is not assigned with a
34 controlling terminal yet. Now set up controlling terminal and
35 environment variables:</para>
37<screen><userinput>exec setsid -c /usr/bin/env -i \
38 HOME=/root \
39 TERM="$TERM" \
40 PS1='(lfs) \u:\w\$ ' \
41 PATH=/usr/bin:/usr/sbin \
42 /bin/bash --login</userinput></screen>
44 <para>The command replace the current shell process with a new shell
45 process, with controlling terminal set up.</para>
47 <para>The <parameter>-i</parameter> option given to the <command>env</command>
48 command will clear all variables of the environment. After that, only
49 the <envar>HOME</envar>, <envar>TERM</envar>, <envar>PS1</envar>, and
50 <envar>PATH</envar> variables are set again. The
51 <parameter>TERM=$TERM</parameter> construct will set the <envar>TERM</envar>
52 variable to the default value specified by <command>agetty</command>. This variable is
53 needed for programs like <command>vim</command> and <command>less</command>
54 to operate properly. If other variables are desired, such as
55 <envar>CFLAGS</envar> or <envar>CXXFLAGS</envar>, this is a good place to set
56 them again.</para>
58 <para>Notice that <filename class="directory">/tools/bin</filename> is not
59 in the <envar>PATH</envar>. This means that the cross toolchain will no longer be
60 used on the target machine.</para>
62 <para>Note that the <command>bash</command> prompt will say
63 <computeroutput>I have no name!</computeroutput> This is normal because the
64 <filename>/etc/passwd</filename> file has not been created yet.</para>
66 <note>
67 <para>It is important that all the commands throughout the remainder of this
68 chapter and the following chapters are run from within the environment
69 we've set. If you leave this environment for any reason (rebooting for
70 example), ensure that the virtual kernel filesystems are mounted as
71 explained in <xref linkend="ch-tools-kernfsmount"/> and
72 <xref linkend="ch-tools-devadjust"/> and set up the environment again before
73 continuing with the installation.</para>
74 </note>
Note: See TracBrowser for help on using the repository browser.