1
0
Quellcode durchsuchen

Change stripping in Chapter 6 to not require logout.

was r11408.
Bruce Dubbs vor 6 Jahren
Ursprung
Commit
7a55b6e701

+ 10 - 0
chapter01/changelog.xml

@@ -41,6 +41,16 @@
     <listitem revision="sysv"> or <listitem revision="systemd"> as
     appropriate for the entry or if needed the entire day's listitem.
 -->
+    <listitem>
+      <para>2018-05-07</para>
+      <itemizedlist>
+        <listitem>
+            <para>[bdubbs] - 修改第 6 章中移除调试符号的过程,
+            以避免登出。</para>
+        </listitem>
+      </itemizedlist>
+    </listitem>
+
     <listitem>
       <para>2018-05-05</para>
       <itemizedlist>

+ 5 - 3
chapter06/revisedchroot.xml

@@ -14,10 +14,13 @@
 
 <screen><userinput>rm -rf /tmp/*</userinput></screen>
 
-  <para>从现在起,在退出并重新进入 chroot 环境时,
+  <para>现在需要登出,并使用新的 chroot 命令行重新进入 chroot 环境。
+  从现在起,在退出并重新进入 chroot 环境时,
   要使用下面的修改过的 chroot 命令:</para>
 
-<screen role="nodump"><userinput>chroot "$LFS" /usr/bin/env -i          \
+<screen role="nodump"><userinput>logout
+
+chroot "$LFS" /usr/bin/env -i          \
     HOME=/root TERM="$TERM"            \
     PS1='(lfs chroot) \u:\w\$ '        \
     PATH=/bin:/usr/bin:/sbin:/usr/sbin \
@@ -57,7 +60,6 @@ rm -f /usr/lib/libbz2.a
 rm -f /usr/lib/lib{com_err,e2p,ext2fs,ss}.a
 rm -f /usr/lib/libltdl.a
 rm -f /usr/lib/libfl.a
-rm -f /usr/lib/libfl_pic.a
 rm -f /usr/lib/libz.a</userinput></screen>
 
   <para>/usr/lib 和 /usr/libexec 目录中还有一些扩展名为 .la 的文件。

+ 6 - 18
chapter06/strippingagain.xml

@@ -73,27 +73,15 @@ unset LIB save_lib save_usrlib</userinput></screen>
   <xref linkend="ch-system-chroot" role=","/> first exit from
   chroot:</para-->
   <para>在移除调试符号前,必须特别小心,
-	  保证没有需要移除调试符号的二进制程序还在运行。
-	  如果不确定是否使用 <xref linkend="ch-system-chroot"/>
-	  中的命令进入了 chroot 环境,首先退出 chroot 环境:</para>
+	  保证没有需要移除调试符号的二进制程序还在运行:</para>
 
-<screen role="nodump"><userinput>logout</userinput></screen>
-
-  <para>然后再执行以下命令重新进入:</para>
-
-<screen role="nodump"><userinput>chroot $LFS /tools/bin/env -i          \
-    HOME=/root TERM=$TERM              \
-    PS1='(lfs chroot) \u:\w\$ '        \
-    PATH=/bin:/usr/bin:/sbin:/usr/sbin \
-    /tools/bin/bash --login</userinput></screen>
 
+<screen role="nodump"><userinput>exec /tools/bin/bash</userinput></screen>
+  
   <note><title>译注</title>
-	  <para>注意这里使用了 /tools/bin/bash 而不是 /bin/bash ,
-		  因为 /bin 中的 bash 二进制文件将会被移除调试符号。
-		  在 <xref linkend="ch-system-bash"/> 中我们执行了新编译的
-		  /bin/bash ,因此必须退出 chroot 环境,再以 /tools/bin/bash
-		  为 shell 重新进入。之后使用的 /tools/bin/find 和
-		  /tools/bin/strip 同理。</para>
+  <para>注意这里使用 /tools/bin/bash 代替当前运行的 /bin/bash ,
+  因为 /bin/bash 二进制文件将会被移除调试符号。
+  之后使用的 /tools/bin/find 和 /tools/bin/strip 同理。</para>
   </note>
 
   <para>现在即可安全地移除程序和库的调试符号:</para>

+ 117 - 0
chapter06/strippingagain.xml.orig

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+  <!ENTITY % general-entities SYSTEM "../general.ent">
+  %general-entities;
+]>
+
+<sect1 id="ch-system-strippingagain">
+  <?dbhtml filename="strippingagain.html"?>
+
+  <title>再次移除调试符号</title>
+
+  <!--para>This section is optional.  If the intended user is not a 
+  programmer and does not plan to do
+  any debugging on the system software, the system size can be decreased
+  by about 90 MB by removing the debugging symbols from binaries and
+  libraries. This causes no inconvenience other than not being able to
+  debug the software fully anymore.</para-->
+  <para>本节是可选的。如果系统不是为程序员设计的,
+	  也没有调试系统软件的计划,可以通过从二进制程序和库移除调试符号,
+	  将系统的体积减小约 90 MB 。除了无法再调试全部软件外,
+	  这不会造成任何不便。</para>
+
+  <!--para>Most people who use the commands mentioned below do not
+  experience any difficulties. However, it is easy to make a typo and
+  render the new system unusable, so before running the
+  <command>strip</command> commands, it is a good idea to make a
+  backup of the LFS system in its current state.</para-->
+  <para>大多数使用以下命令的用户不会遇到什么困难,但如果打错了命令,
+	  很容易导致新系统无法使用。因此,在运行 <command>strip</command>
+	  命令前,最好备份 LFS 系统的当前状态。</para>
+
+  <!--para>First place the debugging symbols for selected libraries 
+  in separate files.  This debugging information is needed if running 
+  regression tests that use <ulink  -->
+  <para>首先将一些库的调试符号保存在单独的文件中,在 BLFS 中,
+  如果使用 <ulink
+  url='&blfs-book;/general/valgrind.html'>valgrind</ulink> 或 <ulink 
+  url='&blfs-book;/general/gdb.html'>gdb</ulink> 运行退化测试,
+  则需要这些调试信息的存在。
+  </para>
+
+<!-- also of interest are libgfortan, libgo, libgomp, and libobjc from gcc -->
+
+<!--<screen><userinput>save_lib="ld-2.25.so libc-2.25.so libpthread-2.25.so libthread_db-1.0.so"-->
+<screen><userinput>save_lib="ld-&glibc-version;.so libc-&glibc-version;.so libpthread-&glibc-version;.so libthread_db-&libthread_db-version;.so"
+
+cd /lib
+
+for LIB in $save_lib; do
+    objcopy --only-keep-debug $LIB $LIB.dbg 
+    strip --strip-unneeded $LIB
+    objcopy --add-gnu-debuglink=$LIB.dbg $LIB 
+done    
+
+save_usrlib="libquadmath.so.&libquadmath-version; libstdc++.so.&libstdcpp-version;
+             libmpx.so.&libmpx-version; libmpxwrappers.so.&libmpxwrap-version; libitm.so.&libitm-version;
+             libatomic.so.&libatomic-version;" <!-- libcilkrts.so.&libcilkrts-version;-->
+
+cd /usr/lib
+
+for LIB in $save_usrlib; do
+    objcopy --only-keep-debug $LIB $LIB.dbg
+    strip --strip-unneeded $LIB
+    objcopy --add-gnu-debuglink=$LIB.dbg $LIB
+done
+
+unset LIB save_lib save_usrlib</userinput></screen>
+
+  <!--para>Before performing the stripping, take special care to ensure that
+  none of the binaries that are about to be stripped are running. If
+  unsure whether the user entered chroot with the command given in
+  <xref linkend="ch-system-chroot" role=","/> first exit from
+  chroot:</para-->
+  <para>在移除调试符号前,必须特别小心,
+	  保证没有需要移除调试符号的二进制程序还在运行。
+	  如果不确定是否使用 <xref linkend="ch-system-chroot"/>
+	  中的命令进入了 chroot 环境,首先退出 chroot 环境:</para>
+
+<screen role="nodump"><userinput>logout</userinput></screen>
+
+  <para>然后再执行以下命令重新进入:</para>
+
+<screen role="nodump"><userinput>chroot $LFS /tools/bin/env -i          \
+    HOME=/root TERM=$TERM              \
+    PS1='(lfs chroot) \u:\w\$ '        \
+    PATH=/bin:/usr/bin:/sbin:/usr/sbin \
+    /tools/bin/bash --login</userinput></screen>
+
+  <note><title>译注</title>
+	  <para>注意这里使用了 /tools/bin/bash 而不是 /bin/bash ,
+		  因为 /bin 中的 bash 二进制文件将会被移除调试符号。
+		  在 <xref linkend="ch-system-bash"/> 中我们执行了新编译的
+		  /bin/bash ,因此必须退出 chroot 环境,再以 /tools/bin/bash
+		  为 shell 重新进入。之后使用的 /tools/bin/find 和
+		  /tools/bin/strip 同理。</para>
+  </note>
+
+  <para>现在即可安全地移除程序和库的调试符号:</para>
+
+<screen><userinput>/tools/bin/find /usr/lib -type f -name \*.a \
+   -exec /tools/bin/strip --strip-debug {} ';'
+
+/tools/bin/find /lib /usr/lib -type f \( -name \*.so* -a ! -name \*dbg \) \
+   -exec /tools/bin/strip --strip-unneeded {} ';'
+
+/tools/bin/find /{bin,sbin} /usr/{bin,sbin,libexec} -type f \
+    -exec /tools/bin/strip --strip-all {} ';'</userinput></screen>
+
+  <!--para>A large number of files will be reported as having their file
+  format not recognized. These warnings can be safely ignored. These
+  warnings indicate that those files are scripts instead of
+  binaries.</para-->
+  <para>这里会有很多文件被报告为格式无法识别,这些警告可以安全地忽略。
+	  它们表明那些文件是脚本文件,而不是二进制文件。</para>
+
+</sect1>

+ 42 - 0
chapter06/strippingagain.xml.rej

@@ -0,0 +1,42 @@
+--- chapter06/strippingagain.xml
++++ chapter06/strippingagain.xml
+@@ -67,33 +67,15 @@ done
+ 
+ unset LIB save_lib save_usrlib</userinput></screen>
+ 
+-  <!--para>Before performing the stripping, take special care to ensure that
+-  none of the binaries that are about to be stripped are running. If
+-  unsure whether the user entered chroot with the command given in
+-  <xref linkend="ch-system-chroot" role=","/> first exit from
+-  chroot:</para-->
+   <para>在移除调试符号前,必须特别小心,
+-	  保证没有需要移除调试符号的二进制程序还在运行。
+-	  如果不确定是否使用 <xref linkend="ch-system-chroot"/>
+-	  中的命令进入了 chroot 环境,首先退出 chroot 环境:</para>
+-
+-<screen role="nodump"><userinput>logout</userinput></screen>
+-
+-  <para>然后再执行下列命令重新进入:</para>
+-
+-<screen role="nodump"><userinput>chroot $LFS /tools/bin/env -i          \
+-    HOME=/root TERM=$TERM              \
+-    PS1='(lfs chroot) \u:\w\$ '        \
+-    PATH=/bin:/usr/bin:/sbin:/usr/sbin \
+-    /tools/bin/bash --login</userinput></screen>
++	  保证没有需要移除调试符号的二进制程序还在运行:</para>
+ 
++<screen role="nodump"><userinput>exec /tools/bin/bash</userinput></screen>
++  
+   <note><title>译注</title>
+-	  <para>注意这里使用了 /tools/bin/bash 而不是 /bin/bash ,
+-		  因为 /bin 中的 bash 二进制文件将会被移除调试符号。
+-		  在 <xref linkend="ch-system-bash"/> 中我们执行了新编译的
+-		  /bin/bash ,因此必须退出 chroot 环境,再以 /tools/bin/bash
+-		  为 shell 重新进入。之后使用的 /tools/bin/find 和
+-		  /tools/bin/strip 同理。</para>
++	  <para>注意这里使用 /tools/bin/bash 代替当前运行的 /bin/bash ,
++		  因为 /bin/bash 二进制文件将会被移除调试符号。
++		  之后使用的 /tools/bin/find 和 /tools/bin/strip 同理。</para>
+   </note>
+ 
+   <para>现在即可安全地移除程序和库的调试符号:</para>

+ 3 - 3
general.ent

@@ -1,13 +1,13 @@
-<!ENTITY version         "SVN-20180505">
+<!ENTITY version         "SVN-20180507">
 <!ENTITY short-version   "svn">  <!-- Used below in &blfs-book; 
                                       Change to x.y for release but not -rc releases -->
 <!ENTITY generic-version "development"> <!-- Use "development"  or "x.y[-pre{x}]" -->
 
-<!ENTITY versiond        "20180505-systemd">
+<!ENTITY versiond        "20180507-systemd">
 <!ENTITY short-versiond  "systemd">
 <!ENTITY generic-versiond "systemd"> 
 
-<!ENTITY releasedate     "2018 年 5 月 5 日">
+<!ENTITY releasedate     "2018 年 5 月 7 日">
 
 <!ENTITY copyrightdate   "1999-2018"><!-- jhalfs needs a literal dash, not &ndash; -->
 <!ENTITY milestone       "8.3">