diff options
Diffstat (limited to 'chapter06/createfiles.xml')
-rw-r--r-- | chapter06/createfiles.xml | 116 |
1 files changed, 115 insertions, 1 deletions
diff --git a/chapter06/createfiles.xml b/chapter06/createfiles.xml index ae22a241d..0cfc7596f 100644 --- a/chapter06/createfiles.xml +++ b/chapter06/createfiles.xml @@ -8,7 +8,31 @@ <sect1 id="ch-system-createfiles"> <?dbhtml filename="createfiles.html"?> - <title>Creating Essential Symlinks</title> + <title>Creating Essential Files and Symlinks</title> + + <indexterm zone="ch-system-createfiles"> + <primary sortas="e-/etc/passwd">/etc/passwd</primary> + </indexterm> + + <indexterm zone="ch-system-createfiles"> + <primary sortas="e-/etc/group">/etc/group</primary> + </indexterm> + + <indexterm zone="ch-system-createfiles"> + <primary sortas="e-/var/run/utmp">/var/run/utmp</primary> + </indexterm> + + <indexterm zone="ch-system-createfiles"> + <primary sortas="e-/var/log/btmp">/var/log/btmp</primary> + </indexterm> + + <indexterm zone="ch-system-createfiles"> + <primary sortas="e-/var/log/lastlog">/var/log/lastlog</primary> + </indexterm> + + <indexterm zone="ch-system-createfiles"> + <primary sortas="e-/var/log/wtmp">/var/log/wtmp</primary> + </indexterm> <para>Some programs use hard-wired paths to programs which do not exist yet. In order to satisfy these programs, create a number of symbolic links which will be @@ -20,4 +44,94 @@ ln -sv /tools/bin/perl /usr/bin ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib ln -sv bash /bin/sh</userinput></screen> + <para>A proper Linux system maintains a list of the mounted file systems in + the file <filename>/etc/mtab</filename>. Normally, this file would be + created when we mount a new file system. Since we will not be mounting any + file systems inside our chroot environment, create an empty file for + utilities that expect the presence of <filename>/etc/mtab</filename>:</para> + +<screen><userinput>touch /etc/mtab</userinput></screen> + + <para>In order for user <systemitem class="username">root</systemitem> to be + able to login and for the name <quote>root</quote> to be recognized, there + must be relevant entries in the <filename>/etc/passwd</filename> and + <filename>/etc/group</filename> files.</para> + + <para>Create the <filename>/etc/passwd</filename> file by running the following + command:</para> + +<screen><userinput>cat > /etc/passwd << "EOF" +<literal>root:x:0:0:root:/root:/bin/bash</literal> +EOF</userinput></screen> + + <para>The actual password for <systemitem class="username">root</systemitem> + (the <quote>x</quote> used here is just a placeholder) will be set later.</para> + + <para>Create the <filename>/etc/group</filename> file by running the following + command:</para> + +<screen><userinput>cat > /etc/group << "EOF" +<literal>root:x:0: +bin:x:1: +sys:x:2: +kmem:x:3: +tty:x:4: +tape:x:5: +daemon:x:6: +floppy:x:7: +disk:x:8: +lp:x:9: +dialout:x:10: +audio:x:11: +video:x:12: +utmp:x:13: +usb:x:14: +cdrom:x:15:</literal> +EOF</userinput></screen> + + <para>The created groups are not part of any standard—they are groups + decided on in part by the requirements of the Udev configuration in this + chapter, and in part by common convention employed by a number of existing + Linux distributions. The Linux Standard Base (LSB, available at <ulink + url="http://www.linuxbase.org"/>) recommends only that, besides the group + <systemitem class="groupname">root</systemitem> with a Group ID (GID) of 0, + a group <systemitem class="groupname">bin</systemitem> with a GID of 1 be + present. All other group names and GIDs can be chosen freely by the system + administrator since well-written programs do not depend on GID numbers, but + rather use the group's name.</para> + + <para>To remove the <quote>I have no name!</quote> prompt, start a new + shell. Since a full Glibc was installed in <xref + linkend="chapter-temporary-tools"/> and the + <filename>/etc/passwd</filename> and <filename>/etc/group</filename> + files have been created, user name and group name resolution will now + work.</para> + +<screen role="nodump"><userinput>exec /tools/bin/bash --login +h</userinput></screen> + + <para>Note the use of the <parameter>+h</parameter> directive. This tells + <command>bash</command> not to use its internal path hashing. Without this + directive, <command>bash</command> would remember the paths to binaries it has + executed. To ensure the use of the newly compiled binaries as soon as they are + installed, the <parameter>+h</parameter> directive will be used for the duration + of this chapter.</para> + + <para>The <command>login</command>, <command>agetty</command>, and + <command>init</command> programs (and others) use a number of log + files to record information such as who was logged into the system and + when. However, these programs will not write to the log files if they + do not already exist. Initialize the log files and give them + proper permissions:</para> + +<screen><userinput>touch /var/run/utmp /var/log/{btmp,lastlog,wtmp} +chgrp -v utmp /var/run/utmp /var/log/lastlog +chmod -v 664 /var/run/utmp /var/log/lastlog</userinput></screen> + + <para>The <filename>/var/run/utmp</filename> file records the users + that are currently logged in. The <filename>/var/log/wtmp</filename> + file records all logins and logouts. The + <filename>/var/log/lastlog</filename> file records when + each user last logged in. The <filename>/var/log/btmp</filename> file + records the bad login attempts.</para> + </sect1> |