Kill MAKEDEV, /stand, and other useless cruft.

Spell out "2."
This commit is contained in:
Tom Rhodes 2006-06-06 23:44:32 +00:00
parent 526168e0dc
commit b5640145e2
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=28058

View file

@ -712,21 +712,13 @@
In some cases <command>make buildworld</command> will check to see if
these users or groups exist.</para>
<para>A recent example of this is when the
<para>An example of this is when the
<username>smmsp</username> user was added. Users had the
installation process fail for them when
&man.mtree.8; was trying to create
<filename>/var/spool/clientmqueue</filename>.</para>
<para>The solution is to examine
<filename>/usr/src/etc/group</filename> and compare its list of
groups with your own. If there are any groups in the new file that
are not in your file then copy them over. Similarly, you should
rename any groups in <filename>/etc/group</filename> which have
the same GID but a different name to those in
<filename>/usr/src/etc/group</filename>.</para>
<para>Since 4.6-RELEASE you can run &man.mergemaster.8; in
<para>The solution is to run &man.mergemaster.8; in
pre-buildworld mode by providing the <option>-p</option> option.
This will compare only those files that are essential for the success
of <maketarget>buildworld</maketarget> or
@ -779,7 +771,7 @@
mode.</para>
<para>Alternatively, reboot the system, and at the boot prompt,
enter the <option>-s</option> flag. The system will then boot
select the <quote>single user</quote> option. The system will then boot
single user. At the shell prompt you should then run:</para>
<screen>&prompt.root; <userinput>fsck -p</userinput>
@ -920,19 +912,16 @@ Script done, &hellip;</screen>
<screen>&prompt.root; <userinput>make <replaceable>target</replaceable></userinput></screen>
<para>Beginning with version 2.2.5 of &os; (actually, it was
first created on the &os.current; branch, and then retrofitted to
&os.stable; midway between 2.2.2 and 2.2.5) the
<maketarget>world</maketarget> target has been split in
two: <maketarget>buildworld</maketarget> and
<maketarget>installworld</maketarget>.</para>
<para>Where <replaceable>target</replaceable> will be one of
many build options. The first target should always be
<makevar>buildworld</makevar>.</para>
<para>As the names imply, <maketarget>buildworld</maketarget>
builds a complete new tree under <filename>/usr/obj</filename>,
and <maketarget>installworld</maketarget> installs this tree on
and <maketarget>installworld</maketarget>, another target, installs this tree on
the current machine.</para>
<para>This is very useful for 2 reasons. First, it allows you
<para>Having separate options is very useful for two reasons. First, it allows you
to do the build safe in the knowledge that no components of
your running system will be affected. The build is
<quote>self hosted</quote>. Because of this, you can safely
@ -958,7 +947,7 @@ Script done, &hellip;</screen>
<screen>&prompt.root; <userinput>make buildworld</userinput></screen>
<para>It is now possible to specify a <option>-j</option> option to
<para>It is possible to specify a <option>-j</option> option to
<command>make</command> which will cause it to spawn several
simultaneous processes. This is most useful on multi-CPU machines.
However, since much of the compiling process is IO bound rather
@ -1164,7 +1153,7 @@ Script done, &hellip;</screen>
<para>After &man.mergemaster.8; is done with the system files you will be
prompted for other options. &man.mergemaster.8; may ask if you want to rebuild
the password file and/or run &man.MAKEDEV.8; if you run a FreeBSD version prior to 5.0, and will finish up with an option to
the password file and will finish up with an option to
remove left-over temporary files.</para>
</sect3>
@ -1182,8 +1171,7 @@ Script done, &hellip;</screen>
not in <filename>/usr/src/etc</filename>.</para>
<para>If you are using &man.mergemaster.8; (as recommended),
you can skip forward to the <link linkend="update-dev">next
section</link>.</para>
you can skip this section.</para>
<para>The simplest way to do this by hand is to install the
files into a new directory, and then work through them looking
@ -1329,101 +1317,6 @@ Script done, &hellip;</screen>
</tip>
</sect3>
</sect2>
<sect2 id="update-dev">
<title>Update <filename>/dev</filename></title>
<note>
<indexterm><primary>DEVFS</primary></indexterm>
<para>If you are running FreeBSD&nbsp;5.0 or later you can safely
skip this section. These versions use &man.devfs.5; to
allocate device nodes transparently for the user.</para>
</note>
<para>In most cases, the &man.mergemaster.8; tool will realize when
it is necessary to update the device nodes, and offer to complete it
automatically. These instructions tell how to update the device
nodes manually.</para>
<para>For safety's sake, this is a multi-step process.</para>
<procedure>
<step>
<para>Copy <filename>/var/tmp/root/dev/MAKEDEV</filename> to
<filename>/dev</filename>:</para>
<screen>&prompt.root; <userinput>cp /var/tmp/root/dev/MAKEDEV /dev</userinput></screen>
<indexterm>
<primary><filename>MAKEDEV</filename></primary>
</indexterm>
<para>If you used &man.mergemaster.8; to
update <filename>/etc</filename>, then your
<filename>MAKEDEV</filename> script should have been updated
already, though it cannot hurt to check (with &man.diff.1;)
and copy it manually if necessary.</para>
</step>
<step>
<para>Now, take a snapshot of your current
<filename>/dev</filename>. This snapshot needs to contain the
permissions, ownerships, major and minor numbers of each filename,
but it should not contain the time stamps. The easiest way to do
this is to use &man.awk.1; to strip out some of the
information:</para>
<screen>&prompt.root; <userinput>cd /dev</userinput>
&prompt.root; <userinput>ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' &gt; /var/tmp/dev.out</userinput></screen>
</step>
<step>
<para>Remake all the device nodes:</para>
<screen>&prompt.root; <userinput>sh MAKEDEV all</userinput></screen>
</step>
<step>
<para>Write another snapshot of the directory, this time to
<filename>/var/tmp/dev2.out</filename>. Now look through these
two files for any device node that you missed creating. There should
not be any, but it is better to be safe than sorry.</para>
<screen>&prompt.root; <userinput>diff /var/tmp/dev.out /var/tmp/dev2.out</userinput></screen>
<para>You are most likely to notice disk slice discrepancies which
will involve commands such as:</para>
<screen>&prompt.root; <userinput>sh MAKEDEV sd0s1</userinput></screen>
<para>to recreate the slice entries. Your precise circumstances may
vary.</para>
</step>
</procedure>
</sect2>
<sect2>
<title>Update <filename>/stand</filename></title>
<note>
<para>This step is included only for completeness. It can safely be
omitted. If you are using FreeBSD&nbsp;5.2 or later, the
<filename>/rescue</filename> directory is automatically updated
for the user with current, statically compiled binaries during
<command>make installworld</command>, thus obsoleting the need
to update <filename>/stand</filename> (which does not exist at
all on &os;&nbsp;6.0 and later).</para>
</note>
<para>For the sake of completeness, you may want to update the files in
<filename>/stand</filename> as well. These files consist of hard
links to the <filename>/stand/sysinstall</filename> binary. This
binary should be statically linked, so that it can work when no other
file systems (and in particular <filename>/usr</filename>) have been
mounted.</para>
<screen>&prompt.root; <userinput>cd /usr/src/release/sysinstall</userinput>
&prompt.root; <userinput>make all install</userinput></screen>
</sect2>
<sect2>
<title>Rebooting</title>
@ -1572,9 +1465,6 @@ Script done, &hellip;</screen>
&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>make -DNO_CLEAN all</userinput></screen>
<note><para>On &os;&nbsp;5.X and older, use
<makevar>-DNOCLEAN</makevar> instead.</para></note>
<para>This will not undo the work of the previous
<command>make buildworld</command>.</para>