Skip to contentSkip to conversation

Add translations in zh_CN/admin-guide/

PATCH Applied Wu XiangCheng 3 participants 11 messages Mar 18, 2021 – Mar 25, 2021

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

v2 cover Add translations in zh_CN/admin-guide/

Hi all,

This set of patches aims to add some translations in zh_CN/admin-guide/ about issues or bugs.

And please notice that, since each patch needs to modify their own entry in the same index.rst, patches of this set need to be applied in order.

- V2

- Add zh_CN/admin-guide/tainted-kernels.rst
- Add zh_CN/admin-guide/init.rst
- Pick Alex Shi's Reviewed-by tag for [Patch 3~4/6]
- No more new changes will be added to this set, that's all

- V1
<https://lore.kernel.org/linux-doc/[email protected]/>

- Re-manage the patch thread
- Add zh_CN/admin-guide/security-bugs.rst

    <https://lore.kernel.org/linux-doc/2552eb0fb4ddea81f80d020c69b7b7a3699dd93a.1615950640.git.bobwxc@email.cn/>

- Modify one word in [Patch 3/4] under Alex Shi's suggestion
- Pick Alex Shi's Reviewed-by tag for [Patch 1~2/6]

- V0

- Add zh_CN/admin-guide/reporting-issues.rst

    <https://lore.kernel.org/linux-doc/20210315110119.GA9524@mipc/>
  - Add zh_CN/admin-guide/bug-bisect.rst
    <https://lore.kernel.org/linux-doc/b032e8ab75e91b37ae88f2c80102ab6dde1bfa45.1615909052.git.bobwxc@email.cn/>
  - Add zh_CN/admin-guide/bug-hunting.rst
    <https://lore.kernel.org/linux-doc/20210317030323.GA20733@mipc/>

Thanks!

Wu XiangCheng (6):
docs/zh_CN: Add zh_CN/admin-guide/reporting-issues docs/zh_CN: Add zh_CN/admin-guide/bug-bisect.rst docs/zh_CN: Add zh_CN/admin-guide/bug-hunting.rst docs/zh_CN: Add zh_CN/admin-guide/security-bugs.rst docs/zh_CN: Add zh_CN/admin-guide/tainted-kernels.rst docs/zh_CN: Add zh_CN/admin-guide/init.rst

 .../zh_CN/admin-guide/bug-bisect.rst          |   81 ++
 .../zh_CN/admin-guide/bug-hunting.rst         |  340 +++++
 .../translations/zh_CN/admin-guide/index.rst  |   11 +-
 .../translations/zh_CN/admin-guide/init.rst   |   54 +
 .../zh_CN/admin-guide/reporting-issues.rst    | 1269 +++++++++++++++++
 .../zh_CN/admin-guide/security-bugs.rst       |   74 +
 .../zh_CN/admin-guide/tainted-kernels.rst     |  157 ++
 7 files changed, 1983 insertions(+), 3 deletions(-)
 create mode 100644 Documentation/translations/zh_CN/admin-guide/bug-bisect.rst
 create mode 100644 Documentation/translations/zh_CN/admin-guide/bug-hunting.rst
 create mode 100644 Documentation/translations/zh_CN/admin-guide/init.rst
 create mode 100644 Documentation/translations/zh_CN/admin-guide/reporting-issues.rst
 create mode 100644 Documentation/translations/zh_CN/admin-guide/security-bugs.rst
 create mode 100644 Documentation/translations/zh_CN/admin-guide/tainted-kernels.rst
Signature · 1 line
2.20.1
#1 lore raw

PATCH v2 1/6 docs/zh_CN: Add zh_CN/admin-guide/reporting-issues

Add translation zh_CN/admin-guide/reporting-issues.rst, and link it to zh_CN/admin-guide/index.rst.

---
 .../translations/zh_CN/admin-guide/index.rst  |    5 +
 .../zh_CN/admin-guide/reporting-issues.rst    | 1269 +++++++++++++++++
 2 files changed, 1274 insertions(+)
 create mode 100644 Documentation/translations/zh_CN/admin-guide/reporting-issues.rst
Documentation/translations/zh_CN/admin-guide/index.rst +5 -0
index a716a48c8018..fe2abc3fec86 100644
@@ -32,6 +32,11 @@ Todolist:
 
 下面的一组文档,针对的是试图跟踪问题和bug的用户。
 
+.. toctree::
+   :maxdepth: 1
+
+   reporting-issues
+
 Todolist:
 
    reporting-bugs
Documentation/translations/zh_CN/admin-guide/reporting-issues.rst new file +1269 -0

1,269 lines not on this page · raw message

Signature · 1 line
2.20.1
#2 lore raw

PATCH v2 2/6 docs/zh_CN: Add zh_CN/admin-guide/bug-bisect.rst

In reply to Wu XiangCheng

Add translation zh_CN/admin-guide/bug-bisect.rst, and link it to zh_CN/admin-guide/index.rst while clean its todo entry.

---
 .../zh_CN/admin-guide/bug-bisect.rst          | 81 +++++++++++++++++++
 .../translations/zh_CN/admin-guide/index.rst  |  2 +-
 2 files changed, 82 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/admin-guide/bug-bisect.rst
Documentation/translations/zh_CN/admin-guide/bug-bisect.rst new file +81 -0
new file mode 100644
index 000000000000..662eb5b46e84
@@ -0,0 +1,81 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: :doc:`../../../admin-guide/bug-bisect`
+
+:译者:
+
+ 吴想成 Wu XiangCheng <[email protected]>
+
+二分(bisect)缺陷
++++++++++++++++++++
+
+(英文版)最后更新:2016年10月28日
+
+引言
+=====
+
+始终尝试由来自kernel.org的源代码构建的最新内核。如果您没有信心这样做,请将
+错误报告给您的发行版供应商,而不是内核开发人员。
+
+找到缺陷(bug)并不总是那么容易,不过仍然得去找。如果你找不到它,不要放弃。
+尽可能多的向相关维护人员报告您发现的信息。请参阅MAINTAINERS文件以了解您所
+关注的子系统的维护人员。
+
+在提交错误报告之前,请阅读“Documentation/admin-guide/reporting-issues.rst”。
+
+设备未出现(Devices not appearing)
+====================================
+
+这通常是由udev/systemd引起的。在将其归咎于内核之前先检查一下。
+
+查找导致缺陷的补丁
+===================
+
+使用 ``git`` 提供的工具可以很容易地找到缺陷,只要缺陷是可复现的。
+
+操作步骤:
+
+- 从git源代码构建内核
+- 以此开始二分 [#f1]_::
+
+	$ git bisect start
+
+- 标记损坏的变更集::
+
+	$ git bisect bad [commit]
+
+- 标记正常工作的变更集::
+
+	$ git bisect good [commit]
+
+- 重新构建内核并测试
+- 使用以下任一与git bisect进行交互::
+
+	$ git bisect good
+
+  或::
+
+	$ git bisect bad
+
+  这取决于您测试的变更集上是否有缺陷
+- 在一些交互之后,git bisect将给出可能导致缺陷的变更集。
+
+- 例如,如果您知道当前版本有问题,而4.8版本是正常的,则可以执行以下操作::
+
+	$ git bisect start
+	$ git bisect bad                 # Current version is bad
+	$ git bisect good v4.8
+
+
+.. [#f1] 您可以(可选地)在开始git bisect的时候提供good或bad参数
+         ``git bisect start [BAD] [GOOD]``
+
+如需进一步参考,请阅读:
+
+- ``git-bisect`` 的手册页
+- `Fighting regressions with git bisect(用git bisect解决回归)
+  <https://www.kernel.org/pub/software/scm/git/docs/git-bisect-lk2009.html>`_
+- `Fully automated bisecting with "git bisect run"(使用git bisect run
+  来全自动二分) <https://lwn.net/Articles/317154>`_
+- `Using Git bisect to figure out when brokenness was introduced
+  (使用Git二分来找出何时引入了错误) <http://webchick.net/node/99>`_
Documentation/translations/zh_CN/admin-guide/index.rst +1 -1
index fe2abc3fec86..7dc3540629f0 100644
@@ -36,13 +36,13 @@ Todolist:
    :maxdepth: 1
 
    reporting-issues
+   bug-bisect
 
 Todolist:
 
    reporting-bugs
    security-bugs
    bug-hunting
-   bug-bisect
    tainted-kernels
    ramoops
    dynamic-debug-howto
Signature · 1 line
2.20.1
#3 lore raw

PATCH v2 3/6 docs/zh_CN: Add zh_CN/admin-guide/bug-hunting.rst

In reply to Wu XiangCheng

Add translation zh_CN/admin-guide/bug-hunting.rst, and link it to zh_CN/admin-guide/index.rst while clean its todo entry.

---
 .../zh_CN/admin-guide/bug-hunting.rst         | 340 ++++++++++++++++++
 .../translations/zh_CN/admin-guide/index.rst  |   2 +-
 2 files changed, 341 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/admin-guide/bug-hunting.rst
Documentation/translations/zh_CN/admin-guide/bug-hunting.rst new file +340 -0
new file mode 100644
index 000000000000..decb9b26d2f1
@@ -0,0 +1,340 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: :doc:`../../../admin-guide/bug-hunting`
+
+:译者:
+
+ 吴想成 Wu XiangCheng <[email protected]>
+
+追踪缺陷
+=========
+
+内核错误报告通常附带如下堆栈转储::
+
+	------------[ cut here ]------------
+	WARNING: CPU: 1 PID: 28102 at kernel/module.c:1108 module_put+0x57/0x70
+	Modules linked in: dvb_usb_gp8psk(-) dvb_usb dvb_core nvidia_drm(PO) nvidia_modeset(PO) snd_hda_codec_hdmi snd_hda_intel snd_hda_codec snd_hwdep snd_hda_core snd_pcm snd_timer snd soundcore nvidia(PO) [last unloaded: rc_core]
+	CPU: 1 PID: 28102 Comm: rmmod Tainted: P        WC O 4.8.4-build.1 #1
+	Hardware name: MSI MS-7309/MS-7309, BIOS V1.12 02/23/2009
+	 00000000 c12ba080 00000000 00000000 c103ed6a c1616014 00000001 00006dc6
+	 c1615862 00000454 c109e8a7 c109e8a7 00000009 ffffffff 00000000 f13f6a10
+	 f5f5a600 c103ee33 00000009 00000000 00000000 c109e8a7 f80ca4d0 c109f617
+	Call Trace:
+	 [<c12ba080>] ? dump_stack+0x44/0x64
+	 [<c103ed6a>] ? __warn+0xfa/0x120
+	 [<c109e8a7>] ? module_put+0x57/0x70
+	 [<c109e8a7>] ? module_put+0x57/0x70
+	 [<c103ee33>] ? warn_slowpath_null+0x23/0x30
+	 [<c109e8a7>] ? module_put+0x57/0x70
+	 [<f80ca4d0>] ? gp8psk_fe_set_frontend+0x460/0x460 [dvb_usb_gp8psk]
+	 [<c109f617>] ? symbol_put_addr+0x27/0x50
+	 [<f80bc9ca>] ? dvb_usb_adapter_frontend_exit+0x3a/0x70 [dvb_usb]
+	 [<f80bb3bf>] ? dvb_usb_exit+0x2f/0xd0 [dvb_usb]
+	 [<c13d03bc>] ? usb_disable_endpoint+0x7c/0xb0
+	 [<f80bb48a>] ? dvb_usb_device_exit+0x2a/0x50 [dvb_usb]
+	 [<c13d2882>] ? usb_unbind_interface+0x62/0x250
+	 [<c136b514>] ? __pm_runtime_idle+0x44/0x70
+	 [<c13620d8>] ? __device_release_driver+0x78/0x120
+	 [<c1362907>] ? driver_detach+0x87/0x90
+	 [<c1361c48>] ? bus_remove_driver+0x38/0x90
+	 [<c13d1c18>] ? usb_deregister+0x58/0xb0
+	 [<c109fbb0>] ? SyS_delete_module+0x130/0x1f0
+	 [<c1055654>] ? task_work_run+0x64/0x80
+	 [<c1000fa5>] ? exit_to_usermode_loop+0x85/0x90
+	 [<c10013f0>] ? do_fast_syscall_32+0x80/0x130
+	 [<c1549f43>] ? sysenter_past_esp+0x40/0x6a
+	---[ end trace 6ebc60ef3981792f ]---
+
+这样的堆栈跟踪提供了足够的信息来识别内核源代码中发生错误的那一行。根据问题的
+严重性,它还可能包含 **“Oops”** 一词,比如::
+
+	BUG: unable to handle kernel NULL pointer dereference at   (null)
+	IP: [<c06969d4>] iret_exc+0x7d0/0xa59
+	*pdpt = 000000002258a001 *pde = 0000000000000000
+	Oops: 0002 [#1] PREEMPT SMP
+	...
+
+尽管有 **Oops** 或其他类型的堆栈跟踪,但通常需要找到出问题的行来识别和处理缺
+陷。在本章中,我们将参考“Oops”来了解需要分析的各种堆栈跟踪。
+
+如果内核是用 ``CONFIG_DEBUG_INFO`` 编译的,那么可以使用文件:
+`scripts/decode_stacktrace.sh` 。
+
+链接的模块
+-----------
+
+受到污染或正在加载/卸载的模块用“(…)”标记,污染标志在
+`Documentation/admin-guide/tainted-kernels.rst` 文件中进行了描述,“正在被加
+载”用“+”标注,“正在被卸载”用“-”标注。
+
+
+Oops消息在哪?
+---------------
+
+通常,Oops文本由klogd从内核缓冲区读取,然后交给 ``syslogd`` ,后者将其写入
+syslog文件,通常是 ``/var/log/messages`` (取决于 ``/etc/syslog.conf`` )。
+在使用systemd的系统上,它也可以由 ``journald`` 守护进程存储,并通过运行
+``journalctl`` 命令进行访问。
+
+有时 ``klogd`` 会挂掉,这种情况下您可以运行 ``dmesg > file`` 从内核缓冲区
+读取数据并保存它。或者您可以 ``cat /proc/kmsg > file`` ,但是您必须适时
+中断以停止传输,因为 ``kmsg`` 是一个“永无止境的文件”。
+
+如果机器严重崩溃,无法输入命令或磁盘不可用,那还有三个选项:
+
+(1) 手动复制屏幕上的文本,并在机器重新启动后输入。很难受,但这是突然崩溃下
+    唯一的选择。或者你可以用数码相机拍下屏幕——虽然不那么好,但总比什么都没
+    有好。如果消息滚动超出控制台顶部,使用更高分辨率(例如 ``vga=791`` )
+    引导启动将允许您阅读更多文本。(警告:这需要 ``vesafb`` ,因此对“早期”
+    的Oppses没有帮助)
+
+(2) 从串口终端启动(参见
+    :ref:`Documentation/admin-guide/serial-console.rst <serial_console>` ),
+    在另一台机器上运行调制解调器然后用你喜欢的通信程序捕获输出。
+    Minicom运行良好。
+
+(3) 使用Kdump(参阅 Documentation/admin-guide/kdump/kdump.rst ),使用
+    Documentation/admin-guide/kdump/gdbmacros.txt 中的dmesg gdbmacro从旧内存
+    中提取内核环形缓冲区。
+
+找到缺陷位置
+-------------
+
+如果你能指出缺陷在内核源代码中的位置,则报告缺陷的效果会非常好。这有两种方法。
+通常来说使用 ``gdb`` 会比较容易,不过内核需要用调试信息来预编译。
+
+gdb
+^^^^
+
+GNU 调试器(GNU debugger, ``gdb`` )是从 ``vmlinux`` 文件中找出OOPS的确切
+文件和行号的最佳方法。
+
+在使用 ``CONFIG_DEBUG_INFO`` 编译的内核上使用gdb效果最好。可通过运行以下命令
+进行设置::
+
+  $ ./scripts/config -d COMPILE_TEST -e DEBUG_KERNEL -e DEBUG_INFO
+
+在用 ``CONFIG_DEBUG_INFO`` 编译的内核上,你可以直接从OOPS复制EIP值::
+
+ EIP:    0060:[<c021e50e>]    Not tainted VLI
+
+并使用GDB来将其翻译成可读形式::
+
+  $ gdb vmlinux
+  (gdb) l *0xc021e50e
+
+如果没有启用 ``CONFIG_DEBUG_INFO`` ,则使用OOPS的函数偏移::
+
+ EIP is at vt_ioctl+0xda8/0x1482
+
+并在启用 ``CONFIG_DEBUG_INFO`` 的情况下重新编译内核::
+
+  $ ./scripts/config -d COMPILE_TEST -e DEBUG_KERNEL -e DEBUG_INFO
+  $ make vmlinux
+  $ gdb vmlinux
+  (gdb) l *vt_ioctl+0xda8
+  0x1888 is in vt_ioctl (drivers/tty/vt/vt_ioctl.c:293).
+  288	{
+  289		struct vc_data *vc = NULL;
+  290		int ret = 0;
+  291
+  292		console_lock();
+  293		if (VT_BUSY(vc_num))
+  294			ret = -EBUSY;
+  295		else if (vc_num)
+  296			vc = vc_deallocate(vc_num);
+  297		console_unlock();
+
+或者若您想要更详细的显示::
+
+  (gdb) p vt_ioctl
+  $1 = {int (struct tty_struct *, unsigned int, unsigned long)} 0xae0 <vt_ioctl>
+  (gdb) l *0xae0+0xda8
+
+您也可以使用对象文件作为替代::
+
+  $ make drivers/tty/
+  $ gdb drivers/tty/vt/vt_ioctl.o
+  (gdb) l *vt_ioctl+0xda8
+
+如果你有调用跟踪,类似::
+
+     Call Trace:
+      [<ffffffff8802c8e9>] :jbd:log_wait_commit+0xa3/0xf5
+      [<ffffffff810482d9>] autoremove_wake_function+0x0/0x2e
+      [<ffffffff8802770b>] :jbd:journal_stop+0x1be/0x1ee
+      ...
+
+这表明问题可能在 :jbd: 模块中。您可以在gdb中加载该模块并列出相关代码::
+
+  $ gdb fs/jbd/jbd.ko
+  (gdb) l *log_wait_commit+0xa3
+
+.. note::
+
+     您还可以对堆栈跟踪处的任何函数调用执行相同的操作,例如::
+
+	 [<f80bc9ca>] ? dvb_usb_adapter_frontend_exit+0x3a/0x70 [dvb_usb]
+
+     上述调用发生的位置可以通过以下方式看到::
+
+	$ gdb drivers/media/usb/dvb-usb/dvb-usb.o
+	(gdb) l *dvb_usb_adapter_frontend_exit+0x3a
+
+objdump
+^^^^^^^^
+
+要调试内核,请使用objdump并从崩溃输出中查找十六进制偏移,以找到有效的代码/汇
+编行。如果没有调试符号,您将看到所示例程的汇编程序代码,但是如果内核有调试
+符号,C代码也将可见(调试符号可以在内核配置菜单的hacking项中启用)。例如::
+
+    $ objdump -r -S -l --disassemble net/dccp/ipv4.o
+
+.. note::
+
+   您需要处于内核树的顶层以便此获得您的C文件。
+
+如果您无法访问源代码,仍然可以使用以下方法调试一些崩溃转储(如Dave Miller的
+示例崩溃转储输出所示)::
+
+     EIP is at 	+0x14/0x4c0
+      ...
+     Code: 44 24 04 e8 6f 05 00 00 e9 e8 fe ff ff 8d 76 00 8d bc 27 00 00
+     00 00 55 57  56 53 81 ec bc 00 00 00 8b ac 24 d0 00 00 00 8b 5d 08
+     <8b> 83 3c 01 00 00 89 44  24 14 8b 45 28 85 c0 89 44 24 18 0f 85
+
+     Put the bytes into a "foo.s" file like this:
+
+            .text
+            .globl foo
+     foo:
+            .byte  .... /* bytes from Code: part of OOPS dump */
+
+     Compile it with "gcc -c -o foo.o foo.s" then look at the output of
+     "objdump --disassemble foo.o".
+
+     Output:
+
+     ip_queue_xmit:
+         push       %ebp
+         push       %edi
+         push       %esi
+         push       %ebx
+         sub        $0xbc, %esp
+         mov        0xd0(%esp), %ebp        ! %ebp = arg0 (skb)
+         mov        0x8(%ebp), %ebx         ! %ebx = skb->sk
+         mov        0x13c(%ebx), %eax       ! %eax = inet_sk(sk)->opt
+
+`scripts/decodecode` 文件可以用来自动完成大部分工作,这取决于正在调试的CPU
+体系结构。
+
+报告缺陷
+---------
+
+一旦你通过定位缺陷找到了其发生的地方,你可以尝试自己修复它或者向上游报告它。
+
+为了向上游报告,您应该找出用于开发受影响代码的邮件列表。这可以使用 ``get_maintainer.pl`` 。
+
+
+例如,您在gspca的sonixj.c文件中发现一个缺陷,则可以通过以下方法找到它的维护者::
+
+	$ ./scripts/get_maintainer.pl -f drivers/media/usb/gspca/sonixj.c
+	Hans Verkuil <[email protected]> (odd fixer:GSPCA USB WEBCAM DRIVER,commit_signer:1/1=100%)
+	Mauro Carvalho Chehab <[email protected]> (maintainer:MEDIA INPUT INFRASTRUCTURE (V4L/DVB),commit_signer:1/1=100%)
+	Tejun Heo <[email protected]> (commit_signer:1/1=100%)
+	Bhaktipriya Shridhar <[email protected]> (commit_signer:1/1=100%,authored:1/1=100%,added_lines:4/4=100%,removed_lines:9/9=100%)
+	[email protected] (open list:GSPCA USB WEBCAM DRIVER)
+	[email protected] (open list)
+
+请注意它将指出:
+
+- 最后接触源代码的开发人员(如果这是在git树中完成的)。在上面的例子中是Tejun
+  和Bhaktipriya(在这个特定的案例中,没有人真正参与这个文件的开发);
+- 驱动维护人员(Hans Verkuil);
+- 子系统维护人员(Mauro Carvalho Chehab);
+- 驱动程序和/或子系统邮件列表([email protected]);
+- Linux内核邮件列表([email protected])。
+
+通常,修复缺陷的最快方法是将它报告给用于开发相关代码的邮件列表(linux-media
+ML),抄送驱动程序维护者(Hans)。
+
+如果你完全不知道该把报告寄给谁,且 ``get_maintainer.pl`` 也没有提供任何有用
+的信息,请发送到[email protected]。
+
+感谢您的帮助,这使Linux尽可能稳定:-)
+
+修复缺陷
+---------
+
+如果你懂得编程,你不仅可以通过报告错误来帮助我们,还可以提供一个解决方案。
+毕竟,开源就是分享你的工作,你不想因为你的天才而被认可吗?
+
+如果你决定这样做,请在制定解决方案后将其提交到上游。
+
+请务必阅读
+:ref:`Documentation/process/submitting-patches.rst <submittingpatches>` ,
+以帮助您的代码被接受。
+
+
+---------------------------------------------------------------------------
+
+用 ``klogd`` 进行Oops跟踪的注意事项
+------------------------------------
+
+为了帮助Linus和其他内核开发人员, ``klogd`` 对保护故障的处理提供了大量支持。
+为了完整支持地址解析,至少应该使用 ``sysklogd`` 包的1.3-pl3版本。
+
+当发生保护故障时, ``klogd`` 守护进程会自动将内核日志消息中的重要地址转换为
+它们的等效符号。然后通过 ``klogd`` 使用的任何报告机制来转发这个已翻译的内核
+消息。保护错误消息可以直接从消息文件中剪切出来并转发给内核开发人员。
+
+``klogd`` 执行两种类型的地址解析,静态翻译和动态翻译。静态翻译使用System.map
+文件。为了进行静态转换, ``klogd`` 守护进程必须能够在守护进程初始化时找到系
+统映射文件。有关 ``klogd`` 如何搜索映射文件的信息,请参见klogd手册页。
+
+当使用内核可加载模块时,动态地址转换非常重要。由于内核模块的内存是从内核的
+动态内存池中分配的,因此无论是模块的开头还是模块中的函数和符号都没有固定的
+位置。
+
+内核支持系统调用,允许程序确定加载哪些模块及其在内存中的位置。klogd守护进程
+使用这些系统调用构建了一个符号表,可用于调试可加载内核模块中发生的保护错误。
+
+klogd至少会提供产生保护故障的模块的名称。如果可加载模块的开发人员选择从模块
+导出符号信息,则可能会有其他可用的符号信息。
+
+由于内核模块环境可以是动态的,因此当模块环境发生变化时,必须有一种通知
+``klogd`` 守护进程的机制。有一些可用的命令行选项允许klogd向当前正在执行的守
+护进程发出信号示意应该刷新符号信息。有关更多信息,请参阅 ``klogd`` 手册页。
+
+sysklogd发行版附带了一个补丁,它修改了 ``modules-2.0.0`` 包,以便在加载或
+卸载模块时自动向klogd发送信号。应用此补丁基本上可无缝支持调试内核可加载模块
+发生的保护故障。
+
+以下是 ``klogd`` 处理的可加载模块中的保护故障示例::
+
+	Aug 29 09:51:01 blizard kernel: Unable to handle kernel paging request at virtual address f15e97cc
+	Aug 29 09:51:01 blizard kernel: current->tss.cr3 = 0062d000, %cr3 = 0062d000
+	Aug 29 09:51:01 blizard kernel: *pde = 00000000
+	Aug 29 09:51:01 blizard kernel: Oops: 0002
+	Aug 29 09:51:01 blizard kernel: CPU:    0
+	Aug 29 09:51:01 blizard kernel: EIP:    0010:[oops:_oops+16/3868]
+	Aug 29 09:51:01 blizard kernel: EFLAGS: 00010212
+	Aug 29 09:51:01 blizard kernel: eax: 315e97cc   ebx: 003a6f80   ecx: 001be77b   edx: 00237c0c
+	Aug 29 09:51:01 blizard kernel: esi: 00000000   edi: bffffdb3   ebp: 00589f90   esp: 00589f8c
+	Aug 29 09:51:01 blizard kernel: ds: 0018   es: 0018   fs: 002b   gs: 002b   ss: 0018
+	Aug 29 09:51:01 blizard kernel: Process oops_test (pid: 3374, process nr: 21, stackpage=00589000)
+	Aug 29 09:51:01 blizard kernel: Stack: 315e97cc 00589f98 0100b0b4 bffffed4 0012e38e 00240c64 003a6f80 00000001
+	Aug 29 09:51:01 blizard kernel:        00000000 00237810 bfffff00 0010a7fa 00000003 00000001 00000000 bfffff00
+	Aug 29 09:51:01 blizard kernel:        bffffdb3 bffffed4 ffffffda 0000002b 0007002b 0000002b 0000002b 00000036
+	Aug 29 09:51:01 blizard kernel: Call Trace: [oops:_oops_ioctl+48/80] [_sys_ioctl+254/272] [_system_call+82/128]
+	Aug 29 09:51:01 blizard kernel: Code: c7 00 05 00 00 00 eb 08 90 90 90 90 90 90 90 90 89 ec 5d c3
+
+---------------------------------------------------------------------------
+
+::
+
+  Dr. G.W. Wettstein           Oncology Research Div. Computing Facility
+  Roger Maris Cancer Center    INTERNET: [email protected]
+  820 4th St. N.
+  Fargo, ND  58122
+  Phone: 701-234-7556
Documentation/translations/zh_CN/admin-guide/index.rst +1 -1
index 7dc3540629f0..d487e8adb804 100644
@@ -36,13 +36,13 @@ Todolist:
    :maxdepth: 1
 
    reporting-issues
+   bug-hunting
    bug-bisect
 
 Todolist:
 
    reporting-bugs
    security-bugs
-   bug-hunting
    tainted-kernels
    ramoops
    dynamic-debug-howto
Signature · 1 line
2.20.1
#4 lore raw

PATCH v2 4/6 docs/zh_CN: Add zh_CN/admin-guide/security-bugs.rst

In reply to Wu XiangCheng

Add translation zh_CN/admin-guide/security-bugs.rst, and link it to zh_CN/admin-guide/index.rst while clean its todo entry.

---
 .../translations/zh_CN/admin-guide/index.rst  |  2 +-
 .../zh_CN/admin-guide/security-bugs.rst       | 74 +++++++++++++++++++
 2 files changed, 75 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/admin-guide/security-bugs.rst
Documentation/translations/zh_CN/admin-guide/index.rst +1 -1
index d487e8adb804..9669b32e90ef 100644
@@ -36,13 +36,13 @@ Todolist:
    :maxdepth: 1
 
    reporting-issues
+   security-bugs
    bug-hunting
    bug-bisect
 
 Todolist:
 
    reporting-bugs
-   security-bugs
    tainted-kernels
    ramoops
    dynamic-debug-howto
Documentation/translations/zh_CN/admin-guide/security-bugs.rst new file +74 -0

74 lines not on this page · raw message

Signature · 1 line
2.20.1
#5 lore raw

PATCH v2 5/6 docs/zh_CN: Add zh_CN/admin-guide/tainted-kernels.rst

In reply to Wu XiangCheng

Add translation zh_CN/admin-guide/tainted-kernels.rst, and link it to zh_CN/admin-guide/index.rst while clean its todo entry.

---
 .../translations/zh_CN/admin-guide/index.rst  |   2 +-
 .../zh_CN/admin-guide/tainted-kernels.rst     | 157 ++++++++++++++++++
 2 files changed, 158 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/admin-guide/tainted-kernels.rst
Documentation/translations/zh_CN/admin-guide/index.rst +1 -1
index 9669b32e90ef..a671d16710f3 100644
@@ -39,11 +39,11 @@ Todolist:
    security-bugs
    bug-hunting
    bug-bisect
+   tainted-kernels
 
 Todolist:
 
    reporting-bugs
-   tainted-kernels
    ramoops
    dynamic-debug-howto
    init
Documentation/translations/zh_CN/admin-guide/tainted-kernels.rst new file +157 -0

157 lines not on this page · raw message

Signature · 1 line
2.20.1
Reviewed-by on v2 5/6
#6 lore raw

Re: [PATCH v2 5/6] docs/zh_CN: Add zh_CN/admin-guide/tainted-kernels.rst

Quoted 191 lines · Wu XiangCheng

Add translation zh_CN/admin-guide/tainted-kernels.rst, and link it to zh_CN/admin-guide/index.rst while clean its todo entry.

---
 .../translations/zh_CN/admin-guide/index.rst  |   2 +-
 .../zh_CN/admin-guide/tainted-kernels.rst     | 157 ++++++++++++++++++
 2 files changed, 158 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/admin-guide/tainted-kernels.rst
Documentation/translations/zh_CN/admin-guide/index.rst +1 -1
index 9669b32e90ef..a671d16710f3 100644
@@ -39,11 +39,11 @@ Todolist:
    security-bugs
    bug-hunting
    bug-bisect
+   tainted-kernels
 
 Todolist:
 
    reporting-bugs
-   tainted-kernels
    ramoops
    dynamic-debug-howto
    init
Documentation/translations/zh_CN/admin-guide/tainted-kernels.rst new file +157 -0
new file mode 100644
index 000000000000..bc51d7cff9b0
@@ -0,0 +1,157 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: :doc:`../../../admin-guide/tainted-kernels`
+
+:译者:
+
+ 吴想成 Wu XiangCheng <[email protected]>
+
+受污染的内核
+-------------
+
+当发生一些在稍后调查问题时可能相关的事件时,内核会将自己标记为“受污染
+(tainted)”的。不用太过担心,大多数情况下运行受污染的内核没有问题;这些信息
+主要在有人想调查某个问题时才有意义的,因为问题的真正原因可能是导致内核受污染
+的事件。这就是为什么来自受污染内核的缺陷报告常常被开发人员忽略,因此请尝试用
+未受污染的内核重现问题。
+
+请注意,即使在您消除导致污染的原因(亦即卸载专有内核模块)之后,内核仍将保持
+污染状态,以表示内核仍然不可信。这也是为什么内核在注意到内部问题(“kernel
+bug”)、可恢复错误(“kernel oops”)或不可恢复错误(“kernel panic”)时会打印
+受污染状态,并将有关此的调试信息写入日志 ``dmesg`` 输出。也可以通过
+``/proc/`` 中的文件在运行时检查受污染的状态。
+
+
+BUG、Oops或Panics消息中的污染标志
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+在顶部以“CPU:”开头的一行中可以找到受污染的状态;内核是否受到污染和原因会显示
+在进程ID(“PID:”)和触发事件命令的缩写名称(“Comm:”)之后::
+
+	BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
+	Oops: 0002 [#1] SMP PTI
+	CPU: 0 PID: 4424 Comm: insmod Tainted: P        W  O      4.20.0-0.rc6.fc30 #1
+	Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
+	RIP: 0010:my_oops_init+0x13/0x1000 [kpanic]
+	[...]
+
+如果内核在事件发生时没有被污染,您将在那里看到“Not-tainted:”;如果被污染,那
+么它将是“Tainted:”以及字母或空格。在上面的例子中,它看起来是这样的::
+
+	Tainted: P        W  O
+
+下表解释了这些字符的含义。在本例中,由于加载了专有模块( ``P`` ),出现了
+警告( ``W`` ),并且加载了外部构建的模块( ``O`` ),所以内核早些时候受到
+了污染。要解码其他字符,请使用下表。
+
+
+解码运行时的污染状态
+~~~~~~~~~~~~~~~~~~~~~
+
+在运行时,您可以通过读取 ``cat /proc/sys/kernel/tainted`` 来查询受污染状态。
+如果返回 ``0`` ,则内核没有受到污染;任何其他数字都表示受到污染的原因。解码
+这个数字的最简单方法是使用脚本  ``tools/debugging/kernel-chktaint`` ,您的
+发行版可能会将其作为名为 ``linux-tools`` 或 ``kernel-tools`` 的包的一部分提
+供;如果没有,您可以从
+`git.kernel.org <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint>`_
+网站下载此脚本并用 ``sh kernel-chktaint`` 执行,它会在上面引用的日志中有类似
+语句的机器上打印这样的内容::
+
+	Kernel is Tainted for following reasons:
+	 * Proprietary module was loaded (#0)
+	 * Kernel issued warning (#9)
+	 * Externally-built ('out-of-tree') module was loaded  (#12)
+	See Documentation/admin-guide/tainted-kernels.rst in the Linux kernel or
+	 https://www.kernel.org/doc/html/latest/admin-guide/tainted-kernels.html for
+	 a more details explanation of the various taint flags.
+	Raw taint value as int/string: 4609/'P        W  O     '
+
+你也可以试着自己解码这个数字。如果内核被污染的原因只有一个,那么这很简单,
+在本例中您可以通过下表找到数字。如果你需要解码有多个原因的数字,因为它是一
+个位域(bitfield),其中每个位表示一个特定类型的污染的存在或不存在,最好让
+前面提到的脚本来处理。但是如果您需要快速看一下,可以使用这个shell命令来检查
+设置了哪些位::
+
+	$ for i in $(seq 18); do echo $(($i-1)) $(($(cat /proc/sys/kernel/tainted)>>($i-1)&1));done
+
+污染状态代码表
+~~~~~~~~~~~~~~~
+
+===  =====  ======  ========================================================
+ 位  日志     数字  内核被污染的原因
+===  =====  ======  ========================================================
+  0   G/P        1  已加载专用模块
+  1   _/F        2  模块被强制加载
+  2   _/S        4  内核运行在不合规范的系统上
+  3   _/R        8  模块被强制卸载
+  4   _/M       16  处理器报告了机器检测异常(MCE)
+  5   _/B       32  引用了错误的页或某些意外的页标志
+  6   _/U       64  用户空间应用程序请求的污染
+  7   _/D      128  内核最近死机了,即曾出现OOPS或BUG
+  8   _/A      256  ACPI表被用户覆盖
+  9   _/W      512  内核发出警告
+ 10   _/C     1024  已加载staging驱动程序
+ 11   _/I     2048  已应用平台固件缺陷的解决方案
+ 12   _/O     4096  已加载外部构建(“树外”)模块
+ 13   _/E     8192  已加载未签名的模块
+ 14   _/L    16384  发生软锁定
+ 15   _/K    32768  内核已实时打补丁
+ 16   _/X    65536  备用污染,为发行版定义并使用
+ 17   _/T   131072  内核是用结构随机化插件构建的
+===  =====  ======  ========================================================
+
+注:字符 ``_`` 表示空白,以便于阅读表。
+
+污染的更详细解释
+~~~~~~~~~~~~~~~~~
+
+ 0)  ``G`` 加载的所有模块都有GPL或兼容许可证, ``P`` 加载了任何专有模块。
+     没有MODULE_LICENSE(模块许可证)或MODULE_LICENSE未被insmod认可为GPL
+     兼容的模块被认为是专有的。
+
+
+ 1)  ``F`` 任何模块被 ``insmod -f`` 强制加载, ``' '`` 所有模块正常加载。
+
+ 2)  ``S`` 内核运行在不合规范的处理器或系统上:硬件已运行在不受支持的配置中,
+     因此无法保证正确执行。内核将被污染,例如:
+
+     - 在x86上:PAE是通过intel CPU(如Pentium M)上的forcepae强制执行的,这些
+       CPU不报告PAE,但可能有功能实现,SMP内核在非官方支持的SMP Athlon CPU上
+       运行,MSR被暴露到用户空间中。
+     - 在arm上:在某些CPU(如Keystone 2)上运行的内核,没有启用某些内核特性。
+     - 在arm64上:CPU之间存在不匹配的硬件特性,引导加载程序以不同的模式引导CPU。
+     - 某些驱动程序正在被用在不受支持的体系结构上(例如x86_64以外的其他系统
+       上的scsi/snic,非x86/x86_64/itanium上的scsi/ips,已经损坏了arm64上
+       irqchip/irq-gic的固件设置…)。
+
+ 3)  ``R`` 模块被 ``rmmod -f`` 强制卸载, ``' '`` 所有模块都正常卸载。
+
+ 4)  ``M`` 任何处理器报告了机器检测异常, ``' '`` 未发生机器检测异常。
+
+ 5)  ``B`` 页面释放函数发现错误的页面引用或某些意外的页面标志。这表示硬件问题
+     或内核错误;日志中应该有其他信息指示发生此污染的原因。
+
+ 6)  ``U`` 用户或用户应用程序特意请求设置受污染标志,否则应为 ``' '`` 。
+
+ 7)  ``D`` 内核最近死机了,即出现了OOPS或BUG。
+
+ 8)  ``A`` ACPI表被重写。
+
+ 9)  ``W`` 内核之前已发出过警告(尽管有些警告可能会设置更具体的污染标志)。
+
+ 10) ``C`` 已加载staging驱动程序。
+
+ 11) ``I`` 内核正在处理平台固件(BIOS或类似软件)中的严重错误。
+
+ 12) ``O`` 已加载外部构建(“树外”)模块。
+
+ 13) ``E`` 在支持模块签名的内核中加载了未签名的模块。
+
+ 14) ``L`` 系统上先前发生过软锁定。
+
+ 15) ``K`` 内核已经实时打了补丁。
+
+ 16) ``X`` 备用污染,由Linux发行版定义和使用。
+
+ 17) ``T`` 内核构建时使用了randstruct插件,它可以有意生成非常不寻常的内核结构
+     布局(甚至是性能病态的布局),这在调试时非常有用。于构建时设置。
#7 lore raw

PATCH v2 6/6 docs/zh_CN: Add zh_CN/admin-guide/init.rst

In reply to Wu XiangCheng

Add translation zh_CN/admin-guide/init.rst, and link it to zh_CN/admin-guide/index.rst while clean its todo entry.

---
 .../translations/zh_CN/admin-guide/index.rst  |  2 +-
 .../translations/zh_CN/admin-guide/init.rst   | 54 +++++++++++++++++++
 2 files changed, 55 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/admin-guide/init.rst
Documentation/translations/zh_CN/admin-guide/index.rst +1 -1
index a671d16710f3..be835ec8e632 100644
@@ -40,13 +40,13 @@ Todolist:
    bug-hunting
    bug-bisect
    tainted-kernels
+   init
 
 Todolist:
 
    reporting-bugs
    ramoops
    dynamic-debug-howto
-   init
    kdump/index
    perf/index
 
Documentation/translations/zh_CN/admin-guide/init.rst new file +54 -0

54 lines not on this page · raw message

Signature · 1 line
2.20.1
Reviewed-by on v2 6/6
#8 lore raw

Re: [PATCH v2 6/6] docs/zh_CN: Add zh_CN/admin-guide/init.rst

Quoted 90 lines · Wu XiangCheng

Add translation zh_CN/admin-guide/init.rst, and link it to zh_CN/admin-guide/index.rst while clean its todo entry.

---
 .../translations/zh_CN/admin-guide/index.rst  |  2 +-
 .../translations/zh_CN/admin-guide/init.rst   | 54 +++++++++++++++++++
 2 files changed, 55 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/admin-guide/init.rst
Documentation/translations/zh_CN/admin-guide/index.rst +1 -1
index a671d16710f3..be835ec8e632 100644
@@ -40,13 +40,13 @@ Todolist:
    bug-hunting
    bug-bisect
    tainted-kernels
+   init
 
 Todolist:
 
    reporting-bugs
    ramoops
    dynamic-debug-howto
-   init
    kdump/index
    perf/index
 
Documentation/translations/zh_CN/admin-guide/init.rst new file +54 -0
new file mode 100644
index 000000000000..fbaf6d97f86c
@@ -0,0 +1,54 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: :doc:`../../../admin-guide/init`
+
+:译者:
+
+ 吴想成 Wu XiangCheng <[email protected]>
+
+解释“No working init found.”启动挂起消息
+=========================================
+
+:作者:
+
+ Andreas Mohr <andi at lisas period de>
+
+ Cristian Souza <cristianmsbr at gmail period com>
+
+本文档提供了加载初始化二进制(init binary)失败的一些高层级原因(大致按执行
+顺序列出)。
+
+1) **无法挂载根文件系统Unable to mount root FS** :请设置“debug”内核参数(在
+   引导加载程序bootloader配置文件或CONFIG_CMDLINE)以获取更详细的内核消息。
+
+2) **初始化二进制不存在于根文件系统上init binary doesn't exist on rootfs** :
+   确保您的根文件系统类型正确(并且 ``root=`` 内核参数指向正确的分区);拥有
+   所需的驱动程序,例如SCSI或USB等存储硬件;文件系统(ext3、jffs2等)是内建的
+   (或者作为模块由initrd预加载)。
+
+3) **控制台设备损坏Broken console device** : ``console= setup`` 中可能存在
+   冲突 --> 初始控制台不可用(initial console unavailable)。例如,由于串行
+   IRQ问题(如缺少基于中断的配置)导致的某些串行控制台不可靠。尝试使用不同的
+   ``console= device`` 或像 ``netconsole=`` 。
+
+4) **二进制存在但依赖项不可用Binary exists but dependencies not available** :
+   例如初始化二进制的必需库依赖项,像 ``/lib/ld-linux.so.2`` 丢失或损坏。使用
+   ``readelf -d <INIT>|grep NEEDED`` 找出需要哪些库。
+
+5) **无法加载二进制Binary cannot be loaded** :请确保二进制的体系结构与您的
+   硬件匹配。例如i386不匹配x86_64,或者尝试在ARM硬件上加载x86。如果您尝试在
+   此处加载非二进制文件(shell脚本?),您应该确保脚本在其工作头(shebang
+   header)行 ``#!/...`` 中指定能正常工作的解释器(包括其库依赖项)。在处理
+   脚本之前,最好先测试一个简单的非脚本二进制文件,比如 ``/bin/sh`` ,并确认
+   它能成功执行。要了解更多信息,请将代码添加到 ``init/main.c`` 以显示
+   kernel_execve()的返回值。
+
+当您发现新的失败原因时,请扩展本解释(毕竟加载初始化二进制是一个 **关键** 且
+艰难的过渡步骤,需要尽可能无痛地进行),然后向LKML提交一个补丁。
+
+待办事项:
+
+- 通过一个可以存储 ``kernel_execve()`` 结果值的结构体数组实现各种
+  ``run_init_process()`` 调用,并在失败时通过迭代 **所有** 结果来记录一切
+  (非常重要的可用性修复)。
+- 试着使实现本身在一般情况下更有帮助,例如在受影响的地方提供额外的错误消息。
author
#9 lore raw

Re: [PATCH v2 6/6] docs/zh_CN: Add zh_CN/admin-guide/init.rst

Quoted 2 lines · Alex Shi

Thanks for your review!

Regards,
WU X.C.

Quoted 12 lines · Wu XiangCheng
Quoted 10 lines

Add translation zh_CN/admin-guide/init.rst, and link it to zh_CN/admin-guide/index.rst while clean its todo entry.

---
 .../translations/zh_CN/admin-guide/index.rst  |  2 +-
 .../translations/zh_CN/admin-guide/init.rst   | 54 +++++++++++++++++++
 2 files changed, 55 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/admin-guide/init.rst
maintainer Applied
#10 lore raw
In reply to Wu XiangCheng
Quoted 43 lines · Wu XiangCheng

Hi all,

This set of patches aims to add some translations in zh_CN/admin-guide/ about issues or bugs.

And please notice that, since each patch needs to modify their own entry in the same index.rst, patches of this set need to be applied in order.

- V2

- Add zh_CN/admin-guide/tainted-kernels.rst
- Add zh_CN/admin-guide/init.rst
- Pick Alex Shi's Reviewed-by tag for [Patch 3~4/6]
- No more new changes will be added to this set, that's all

- V1
<https://lore.kernel.org/linux-doc/[email protected]/>

- Re-manage the patch thread
- Add zh_CN/admin-guide/security-bugs.rst

    <https://lore.kernel.org/linux-doc/2552eb0fb4ddea81f80d020c69b7b7a3699dd93a.1615950640.git.bobwxc@email.cn/>

- Modify one word in [Patch 3/4] under Alex Shi's suggestion
- Pick Alex Shi's Reviewed-by tag for [Patch 1~2/6]

- V0

- Add zh_CN/admin-guide/reporting-issues.rst

    <https://lore.kernel.org/linux-doc/20210315110119.GA9524@mipc/>
  - Add zh_CN/admin-guide/bug-bisect.rst
    <https://lore.kernel.org/linux-doc/b032e8ab75e91b37ae88f2c80102ab6dde1bfa45.1615909052.git.bobwxc@email.cn/>
  - Add zh_CN/admin-guide/bug-hunting.rst
    <https://lore.kernel.org/linux-doc/20210317030323.GA20733@mipc/>

Thanks!

Wu XiangCheng (6):
docs/zh_CN: Add zh_CN/admin-guide/reporting-issues docs/zh_CN: Add zh_CN/admin-guide/bug-bisect.rst docs/zh_CN: Add zh_CN/admin-guide/bug-hunting.rst docs/zh_CN: Add zh_CN/admin-guide/security-bugs.rst docs/zh_CN: Add zh_CN/admin-guide/tainted-kernels.rst docs/zh_CN: Add zh_CN/admin-guide/init.rst

Quoted 14 lines
 .../zh_CN/admin-guide/bug-bisect.rst          |   81 ++
 .../zh_CN/admin-guide/bug-hunting.rst         |  340 +++++
 .../translations/zh_CN/admin-guide/index.rst  |   11 +-
 .../translations/zh_CN/admin-guide/init.rst   |   54 +
 .../zh_CN/admin-guide/reporting-issues.rst    | 1269 +++++++++++++++++
 .../zh_CN/admin-guide/security-bugs.rst       |   74 +
 .../zh_CN/admin-guide/tainted-kernels.rst     |  157 ++
 7 files changed, 1983 insertions(+), 3 deletions(-)
 create mode 100644 Documentation/translations/zh_CN/admin-guide/bug-bisect.rst
 create mode 100644 Documentation/translations/zh_CN/admin-guide/bug-hunting.rst
 create mode 100644 Documentation/translations/zh_CN/admin-guide/init.rst
 create mode 100644 Documentation/translations/zh_CN/admin-guide/reporting-issues.rst
 create mode 100644 Documentation/translations/zh_CN/admin-guide/security-bugs.rst
 create mode 100644 Documentation/translations/zh_CN/admin-guide/tainted-kernels.rst

I've applied the set, thanks.

jon