-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path5.html
More file actions
278 lines (278 loc) · 24 KB
/
Copy path5.html
File metadata and controls
278 lines (278 loc) · 24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="CodeClub - Linux 系统启动过程" />
<meta name="author" content="Jackson" />
<title>Linux 系统启动过程 - CodeClub</title>
<link rel="icon" type="image/x-icon" href="../../img/logo.png" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap"
rel="stylesheet"
/>
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
crossorigin="anonymous"
referrerpolicy="no-referrer"
/>
<link rel="stylesheet" href="../../css/main.css" />
<link rel="stylesheet" href="../../css/dark-mode.css" />
<link rel="stylesheet" href="../../css/mobile-optimizations.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/12.0.0/marked.min.js"></script>
<style>
.tutorial-page {
max-width: 1200px;
margin: 70px auto 40px;
padding: 0 20px;
display: flex;
gap: 20px;
}
.tutorial-sidebar {
width: 240px;
flex-shrink: 0;
position: sticky;
top: 70px;
max-height: calc(100vh - 90px);
overflow-y: auto;
background: var(--bg-secondary, #fff);
border-radius: 8px;
padding: 16px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.tutorial-sidebar h3 {
font-size: 15px;
margin: 0 0 12px;
color: var(--text-primary, #1a1a2e);
padding-bottom: 8px;
border-bottom: 2px solid var(--primary, #3b82f6);
}
.tutorial-sidebar a {
display: block;
padding: 5px 8px;
color: var(--text-secondary, #666);
text-decoration: none;
font-size: 13px;
border-radius: 4px;
line-height: 1.4;
}
.tutorial-sidebar a:hover {
background: var(--primary, #3b82f6);
color: #fff;
}
.tutorial-sidebar a.active {
background: var(--primary, #3b82f6);
color: #fff;
font-weight: 600;
}
.tutorial-main {
flex: 1;
min-width: 0;
}
.tutorial-article {
background: var(--bg-secondary, #fff);
border-radius: 8px;
padding: 32px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.tutorial-article h1 {
font-size: 26px;
margin-bottom: 16px;
color: var(--text-primary, #1a1a2e);
border-bottom: 2px solid var(--primary, #3b82f6);
padding-bottom: 12px;
}
.markdown-body {
font-size: 15px;
line-height: 1.8;
color: var(--text-secondary, #333);
}
.markdown-body h1 {
font-size: 24px;
border-bottom: 1px solid var(--border, #e5e7eb);
padding-bottom: 8px;
}
.markdown-body h2 {
font-size: 20px;
border-bottom: 1px solid var(--border, #e5e7eb);
padding-bottom: 6px;
}
.markdown-body h3 {
font-size: 17px;
}
.markdown-body pre {
background: #1e1e2e;
color: #cdd6f4;
padding: 16px;
border-radius: 8px;
overflow-x: auto;
}
.markdown-body code {
font-family: 'Fira Code', 'Cascadia Code', monospace;
font-size: 14px;
}
.markdown-body p code {
background: #f1f5f9;
padding: 2px 6px;
border-radius: 4px;
color: #e83e8c;
}
.markdown-body blockquote {
border-left: 4px solid var(--primary, #3b82f6);
padding: 12px 20px;
margin: 16px 0;
background: #f8fafc;
border-radius: 0 8px 8px 0;
}
.markdown-body img {
max-width: 100%;
border-radius: 8px;
}
.markdown-body table {
border-collapse: collapse;
width: 100%;
margin: 16px 0;
}
.markdown-body table th,
.markdown-body table td {
border: 1px solid var(--border, #e5e7eb);
padding: 8px 12px;
text-align: left;
}
.markdown-body table th {
background: var(--bg-primary, #f8fafc);
font-weight: 600;
}
.markdown-body table tr:nth-child(2n) {
background: var(--bg-primary, #f8fafc);
}
.markdown-body ul,
.markdown-body ol {
padding-left: 24px;
margin: 12px 0;
}
.markdown-body li {
margin: 4px 0;
}
.markdown-body hr {
border: none;
border-top: 1px solid var(--border, #e5e7eb);
margin: 24px 0;
}
.markdown-body a {
color: var(--primary, #3b82f6);
text-decoration: none;
}
.markdown-body a:hover {
text-decoration: underline;
}
.page-navigation {
display: flex;
justify-content: space-between;
margin-top: 24px;
padding-top: 16px;
border-top: 1px solid var(--border, #e5e7eb);
}
.page-nav-link {
color: var(--primary, #3b82f6);
text-decoration: none;
font-weight: 500;
font-size: 14px;
}
.page-nav-link:hover {
text-decoration: underline;
}
.source-link {
margin-top: 16px;
font-size: 13px;
color: var(--text-secondary, #999);
}
.source-link a {
color: var(--primary, #3b82f6);
}
@media (max-width: 768px) {
.tutorial-page {
flex-direction: column;
}
.tutorial-sidebar {
width: 100%;
position: static;
max-height: 200px;
}
}
</style>
</head>
<body>
<nav class="navbar">
<div class="navbar-container">
<a class="navbar-brand" href="../../index.html">
<img src="../../img/logo.png" alt="CodeClub" width="32" height="32" />
<span>CodeClub</span>
</a>
<button class="mobile-menu-toggle" aria-label="切换导航菜单"><span></span><span></span><span></span></button>
<ul class="navbar-nav">
<li><a class="nav-link" href="../../index.html">首页</a></li>
<li><a class="nav-link" href="../../nav.html">网址导航</a></li>
<li><a class="nav-link" href="../../blog/">博客</a></li>
<li><a class="nav-link" href="../../wiki/index.html" target="_blank">WiKi</a></li>
<li><a class="nav-link active" href="../index.html">教程</a></li>
<li><a class="nav-link" href="../../book.html">图书</a></li>
<li><a class="nav-link" href="../../contact.html">联系我</a></li>
<li><a class="nav-link" href="../../about.html">关于我</a></li>
</ul>
</div>
</nav>
<div class="tutorial-page">
<div class="tutorial-sidebar">
<h3>📖 Linux</h3>
<a href="0.html">Linux</a>
<a href="1.html">Linux 简介</a>
<a href="2.html">Linux 安装</a>
<a href="3.html">Linux 云服务器</a>
<a href="4.html">WSL 安装 Linux</a>
<a href="5.html" class="active">Linux 系统启动过程</a>
<a href="6.html">Linux 系统目录结构</a>
<a href="7.html">Linux 忘记密码解决方法</a>
<a href="8.html">Linux 远程登录</a>
<a href="9.html">Linux 文件基本属性</a>
<a href="10.html">Linux 文件与目录管理</a>
<a href="11.html">Linux 用户和用户组管理</a>
<a href="12.html">Linux 磁盘管理</a>
<a href="13.html">Linux vi/vim</a>
<a href="14.html">linux yum 命令</a>
<a href="15.html">Linux apt 命令</a>
<a href="16.html">Shell 教程</a>
<a href="17.html">Shell 变量</a>
<a href="18.html">Shell echo 命令</a>
<a href="19.html">Shell test 命令</a>
<a href="20.html">Shell 流程控制</a>
<a href="21.html">Shell 函数</a>
<a href="22.html">Linux 命令大全</a>
<a href="23.html">Nginx 安装配置</a>
<a href="24.html">MySQL 安装配置</a>
</div>
<div class="tutorial-main">
<div class="tutorial-article">
<div class="markdown-body" id="md-content"></div>
<div class="page-navigation">
<a href="4.html" class="page-nav-link">← WSL 安装 Linux</a>
<a href="6.html" class="page-nav-link">Linux 系统目录结构 →</a>
</div>
<div class="source-link">原文来源:<a href="https://www.runoob.com" target="_blank">菜鸟教程</a></div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer-content"><p>© 2024 CodeClub. All rights reserved.</p></div>
</footer>
<script src="../../js/dark-mode.js"></script>
<script src="../../js/mobile-menu.js"></script>
<script>
const md = `# Linux 系统启动过程\n\n\nlinux启动时我们会看到许多启动信息。\n\n\nLinux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段:\n\n\n\n\n\n- 内核的引导。\n\n- 运行 init。\n- 系统初始化。\n- 建立终端 。\n- 用户登录系统。\n\n\n\n\ninit程序的类型:\n\n\n\n- **SysV:** init, CentOS 5之前, 配置文件: /etc/inittab。\n\n- **Upstart:** init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf。\n\n- **Systemd:** systemd, CentOS 7,配置文件: /usr/lib/systemd/system、 /etc/systemd/system。\n\n\n\n\n\n---\n\n\n## 内核引导\n\n当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。\n\n\n操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。\n\n\n\n\n\n\n---\n\n\n## 运行init\n\ninit 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。\n\ninit 程序首先是需要读取配置文件 /etc/inittab。\n\n\n\n\n\n\n\n### 运行级别\n\n许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。\n\n\ninit进程的一大任务,就是去运行这些开机启动的程序。\n\n但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。\n\nLinux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。\n\n\n\n\n\nLinux系统有7个运行级别(runlevel):\n\n\n\n\n \n- 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动\n \n- 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录\n \n- 运行级别2:多用户状态(没有NFS)\n \n- 运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式\n \n- 运行级别4:系统未使用,保留\n \n- 运行级别5:X11控制台,登录后进入图形GUI模式\n \n- 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动\n\n\n\n---\n\n\n## 系统初始化\n\n在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。\n\n它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。\n\n\n\n\n\n\n\`\`\`\n\nl5:5:wait:/etc/rc.d/rc 5\n\n\`\`\`\n\n这一行表示以5为参数运行/etc/rc.d/rc,/etc/rc.d/rc是一个Shell脚本,它接受5作为参数,去执行/etc/rc.d/rc5.d/目录下的所有的rc启动脚本,/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些连接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。\n\n而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。\n\n\n\n/etc/rc.d/rc5.d/中的rc启动脚本通常是K或S开头的连接文件,对于以 S 开头的启动脚本,将以start参数来运行。\n\n\n而如果发现存在相应的脚本也存在K打头的连接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。\n\n这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。\n\n\n\n至于在每个运行级中将运行哪些守护进程,用户可以通过chkconfig或setup中的"System Services"来自行设定。\n\n\n\n\n\n\n---\n\n\n## 建立终端\n\nrc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。\n\ninit接下来会打开6个终端,以便用户登录系统。在inittab中的以下6行就是定义了6个终端:\n\n\n\n\`\`\`\n\n1:2345:respawn:/sbin/mingetty tty1\n2:2345:respawn:/sbin/mingetty tty2\n3:2345:respawn:/sbin/mingetty tty3\n4:2345:respawn:/sbin/mingetty tty4\n5:2345:respawn:/sbin/mingetty tty5\n6:2345:respawn:/sbin/mingetty tty6\n\n\`\`\`\n\n从上面可以看出在2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式。\n\n\n同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。\n\n\n\n---\n\n\n## 用户登录系统\n\n\n一般来说,用户的登录方式有三种:\n\n- \n(1)命令行登录\n- \n(2)ssh登录\n- \n(3)图形界面登录\n\n\n\n\n对于运行级别为5的图形方式用户来说,他们的登录是通过一个图形化的登录界面。登录成功后可以直接进入 KDE、Gnome 等窗口管理器。\n\n\n而本文主要讲的还是文本方式登录的情况:当我们看到mingetty的登录界面时,我们就可以输入用户名和密码来登录系统了。\n\n\n\nLinux 的账号验证程序是 login,login 会接收 mingetty 传来的用户名作为用户名参数。\n\n\n然后 login 会对用户名进行分析:如果用户名不是 root,且存在 /etc/nologin 文件,login 将输出 nologin 文件的内容,然后退出。\n\n\n这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许 root 用户登录,如果不存在这个文件,则 root 用户可以在任何终端上登录。\n\n\n/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。\n\n\n\n\n---\n\n\n## 图形模式与文字模式的切换方式\n\nLinux预设提供了六个命令窗口终端机让我们来登录。\n\n默认我们登录的就是第一个窗口,也就是tty1,这个六个窗口分别为tty1,tty2 … tty6,你可以按下Ctrl + Alt + F1 ~ F6 来切换它们。\n\n如果你安装了图形界面,默认情况下是进入图形界面的,此时你就可以按Ctrl + Alt + F1 ~ F6来进入其中一个命令窗口界面。\n\n当你进入命令窗口界面后再返回图形界面只要按下Ctrl + Alt + F7 就回来了。\n\n如果你用的vmware 虚拟机,命令窗口切换的快捷键为 Alt + Space + F1~F6. 如果你在图形界面下请按Alt + Shift + Ctrl + F1~F6 切换至命令窗口。\n\n\n\n\n\n\n---\n\n\n## Linux 关机\n\n在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。\n\n\n正确的关机流程为:sync > shutdown > reboot > halt\n\n\n关机指令为:shutdown ,你可以man shutdown 来看一下帮助文档。\n\n\n例如你可以运行如下命令关机:\n\n\n\n\`\`\`\n\nsync 将数据由内存同步到硬盘中。\n\nshutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:\n\nshutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。\n\nshutdown –h now 立马关机\n\nshutdown –h 20:25 系统会在今天20:25关机\n\nshutdown –h +10 十分钟后关机\n\nshutdown –r now 系统立马重启\n\nshutdown –r +10 系统十分钟后重启\n\nreboot 就是重启,等同于 shutdown –r now\n\nhalt 关闭系统,等同于shutdown –h now 和 poweroff\n\n\`\`\`\n\n最后总结一下,不管是重启系统还是关闭系统,首先要运行 **sync** 命令,把内存中的数据写到磁盘中。\n\n\n关机的命令有 **shutdown –h now halt poweroff** 和** init 0** , 重启系统的命令有 **shutdown –r now reboot init 6**。\n\n\n\n\n---\n\n\n## 参考文章:\n\n\n- [http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html](http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html)\n\n\n \n \n \n \n \n\n \n \n [ Linux 系统目录结构](http://www.runoob.com/linux/linux-system-contents.html)\n \n\n \n \n \n \n \n\n\n\n\n\n \n## \n \n \n \n 2 篇笔记\n 写笔记\n\n\n\n\n\n \n\n #0 逆光影者\n\n 248***1388@qq.com\n\n [ 参考地址](https://linux.cn/article-8577-1.html)\n\n 1137shutdown 会给系统计划一个时间关机。它可以被用于停止、关机、重启机器。shutdown 会给系统计划一个时间关机。它可以被用于停止、关机、重启机器。\n\n\n\n\`\`\`\n# shutdown -p now ### 关闭机器\n# shutdown -H now ### 停止机器 \n# shutdown -r 09:35 ### 在 09:35am 重启机器\n\`\`\`\n\n要取消即将进行的关机,只要输入下面的命令:\n\n\n\n\`\`\`\n# shutdown -c\n\`\`\`\n\n\nhalt 命令通知硬件来停止所有的 CPU 功能,但是仍然保持通电。你可以用它使系统处于低层维护状态。注意在有些情况会它会完全关闭系统。\n\n\n\n\`\`\`\n# halt ### 停止机器\n# halt -p ### 关闭机器、关闭电源\n# halt --reboot ### 重启机器\n\`\`\`\n\n\npoweroff 会发送一个 ACPI 信号来通知系统关机。\n\n\n\n\`\`\`\n# poweroff ### 关闭机器、关闭电源\n# poweroff --halt ### 停止机器\n# poweroff --reboot ### 重启机器\n\`\`\`\n\n\nreboot 命令 reboot 通知系统重启。\n\n\n\n\`\`\`\n# reboot ### 重启机器\n# reboot --halt ### 停止机器\n# reboot -p ### 关闭机器\n\`\`\`\n[逆光影者](https://www.runoob.comjavascript:;) 逆光影者\n\n 248***1388@qq.com\n\n [ 参考地址](https://linux.cn/article-8577-1.html)\n\n7年前 (2018-12-27)\n#0 友台\n\n sun***xian.hot@gmail.com\n\n 872补充几个有时候很有用的快捷键;\n\n\n\n**[Tab] 有『命令补全』与『文件补齐』的功能**\n\n\n\n\`\`\`\n[Tab] ## 接在一串指令的第一个字的后面,则为『命令补全』\n[Tab] ## 接在一串指令的第二个字以后时,则为『文件补齐』\n\`\`\`\n\n若安装 bash-completion 软件,则在某些指令后面使用 [tab] 按键时,可以进行『选项/参数的补齐』功能!\n\n\n\n**[Ctrl]+ C 如果在Linux 底下输入了错误的指令或参数,想让当前的程序『停掉』的话,可以输入:**\n\n\n\n\`\`\`\n[Ctrl] + c\n\`\`\`\n\n**[Ctrl]-d 『键盘输入结束(End Of File, EOF 或 End Of Input)』的意思**\n\n\n另外,他也可以用来取代 exit 的输入。\n\n\n\n例如你想要直接离开文字接口,可以直接按下:\n\n\n\n\n\`\`\`\n[Ctrl] + d ## 相当于输入 exit\n\`\`\`\n\n**[shift]+{[PageUP]|[Page Down]}**\n\n\n\n\`\`\`\n[Shift]+[Page Up] ## 往前翻页 \n\n[Shift]+[Page Down] ## 往后翻页\n\`\`\`\n[友台](https://www.runoob.comjavascript:;) 友台\n\n sun***xian.hot@gmail.com\n\n7年前 (2019-01-17)\n \n\n \n \n\n \n \n \n### 点我分享笔记\n\n \n \n \n \n \n \n [取消](https://www.runoob.comjavascript:;)\n\n\n \n \n \n \n \n \n\n\n 分享笔记\n \n \n \n \n \n \n\n 昵称昵称 (必填)\n 邮箱邮箱 (必填)\n 引用地址引用地址\n \n\n \n \n \n \n\n \n \n\n\n\n\n\n\n\n\n\n \n\n \n\n\n\n\n\n\n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n\n\n\n\n\n 在线实例\n\n\n ·[HTML 实例](https://www.runoob.com/html/html-examples.html)\n\n\n ·[CSS 实例](https://www.runoob.com/css/css-examples.html)\n\n\n ·[JavaScript 实例](https://www.runoob.com/js/js-examples.html)\n\n\n ·[Ajax 实例](https://www.runoob.com/ajx/ajax-examples.html)\n\n\n ·[jQuery 实例](https://www.runoob.com/jquery/jquery-examples.html)\n\n\n ·[XML 实例](https://www.runoob.com/xml/xml-examples.html)\n\n\n ·[Java 实例](https://www.runoob.com/java/java-examples.html)\n\n\n\n\n\n 字符集&工具\n\n\n · [HTML 字符集设置](https://www.runoob.com/charsets/html-charsets.html)\n\n\n · [HTML ASCII 字符集](https://www.runoob.com/tags/html-ascii.html)\n\n\n · [JS 混淆/加密](https://www.jyshare.com/front-end/6939/)\n\n\n · [PNG/JPEG 图片压缩](https://www.jyshare.com/front-end/6232/)\n\n\n · [HTML 拾色器](https://www.runoob.com/tags/html-colorpicker.html)\n\n\n · [JSON 格式化工具](https://www.jyshare.com/front-end/53)\n\n\n · [随机数生成器](https://www.jyshare.com/front-end/6680/)\n\n\n\n\n 最新更新\n\n\n ·\n [\n OpenCode 自定义... ](http://www.runoob.com/opencode/opencode-custom-tools.html)\n\n\n ·\n [\n OpenCode Skills ](http://www.runoob.com/opencode/opencode-skills.html)\n\n\n ·\n [\n OpenCode MCP 服... ](http://www.runoob.com/opencode/opencode-mcp.html)\n\n\n ·\n [\n OpenCode LSP 服... ](http://www.runoob.com/opencode/opencode-lsp.html)\n\n\n ·\n [\n OpenCode 权限配置 ](http://www.runoob.com/opencode/opencode-permissions.html)\n\n\n ·\n [\n OpenCode 格式化... ](http://www.runoob.com/opencode/opencode-formatter.html)\n\n\n ·\n [\n OpenCode 自定义... ](http://www.runoob.com/opencode/opencode-commands.html)\n\n\n\n\n 站点信息\n\n\n ·\n [意见反馈](https://www.runoob.commailto:admin@runoob.com)\n\n\n ·\n [免责声明](https://www.runoob.com/disclaimer)\n\n\n ·\n [关于我们](https://www.runoob.com/aboutus)\n\n\n ·\n [文章归档](https://www.runoob.com/archives)\n\n\n\n\n\n\n\n **关注微信**\n\n\n\n \n\n\n\n\n\n\n Copyright © 2013-2026 **[菜鸟教程](https://www.runoob.com//www.runoob.com/)** \n **[runoob.com](https://www.runoob.com//www.runoob.com/)** All Rights Reserved. 备案号:[闽ICP备15012807号-1](https://beian.miit.gov.cn/)\n\n\n\n [ ](https://www.runoob.comjavascript:void(0))\n [](https://www.runoob.comjavascript:void(0))\n [](https://www.runoob.comjavascript:void(0))\n\n\n\n#### 微信关注\n\n `;
document.getElementById('md-content').innerHTML = marked.parse(md);
</script>
</body>
</html>