📄 devices.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=gb2312" />
<title>
6.8. Populating /dev
</title>
<link rel="stylesheet" href="../stylesheets/lfs.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1" />
<link rel="stylesheet" href="../stylesheets/lfs-print.css" type="text/css" media="print" />
</head>
<body id="lfs" class="6.1">
<div class="navheader">
<div class="headertitles">
<h4>
Linux From Scratch - Version 6.1
</h4>
<h3>
Chapter 6. 安装系统基础软件
</h3>
</div>
<ul class="headerlinks">
<li class="prev">
<a accesskey="p" href="pwdgroup.html" title="Creating the passwd, group, log Files">后退</a>
<p>
Creating the passwd, group, log Files
</p>
</li>
<li class="next">
<a accesskey="n" href="linux-libc-headers.html" title="Linux-Libc-Headers-2.6.11.2">前进</a>
<p>
Linux-Libc-Headers-2.6.11.2
</p>
</li>
<li class="up">
<a accesskey="u" href="chapter06.html" title="Chapter 6. 安装系统基础软件">上一级</a>.
</li>
<li class="home">
<a accesskey="h" href="../index.html" title="Linux From Scratch - Version 6.1">回首页</a>
</li>
</ul>
</div>
<div class="sect1" lang="zh_cn" xml:lang="zh_cn">
<div class="titlepage">
<h1 class="sect1">
6.8. 在 /dev 中创建设备
</h1>
</div>
<div class="sect2" lang="zh_cn" xml:lang="zh_cn">
<div class="titlepage">
<h2 class="sect2">
6.8.1. 创建初始设备节点
</h2>
</div>
<p>内核在引导时要求某些设备节点必须存在(特别是 <tt class="filename">console</tt> 和 <tt class="filename">null</tt> ),我们来创建它:
</p>
<pre class="userinput"><kbd class="command">mknod -m 600 /dev/console c 5 1
mknod -m 666 /dev/null c 1 3</kbd></pre>
</div>
<div class="sect2" lang="zh_cn" xml:lang="zh_cn">
<div class="titlepage">
<h2 class="sect2">
6.8.2. 挂载 ramfs 并填充 /dev 目录
</h2>
</div>
<p>推荐的向 <tt class="filename">/dev</tt> 目录填充设备的方法是在 <tt class="filename">/dev</tt> 上挂载一个虚拟文件系统,比如 <tt class="systemitem">tmpfs</tt>,然后就像它们在系统引导的过程中被检测和访问一样允许在这个文件系统上动态的创建设备。既然现在新的系统尚未被引导,那么就有必要通过挂载 <tt class="filename">/dev</tt> 来手工完成 LFS-Bootscripts 将来要做的事情。先将 tmpfs 挂载到 <tt class="filename">/dev</tt> :
</p>
<pre class="userinput"><kbd class="command">mount -n -t tmpfs none /dev</kbd></pre>
<p> Udev 是实际用于在 <tt class="filename">/dev</tt> 目录中添加设备的工具。但是由于它要在后面的步骤中才被安装,我们现在必须手动创建一个必需的设备文件的最小集合,以便继续构建我们的系统。[注意]前面创建的console和null设备文件(保存在硬盘上)被新挂载的tmpfs文件系统隐藏了,所以这里还要再创建一次。 </p>
<pre class="userinput"><kbd class="command">mknod -m 622 /dev/console c 5 1
mknod -m 666 /dev/null c 1 3
mknod -m 666 /dev/zero c 1 5
mknod -m 666 /dev/ptmx c 5 2
mknod -m 666 /dev/tty c 5 0
mknod -m 444 /dev/random c 1 8
mknod -m 444 /dev/urandom c 1 9
chown root:tty /dev/{console,ptmx,tty}</kbd></pre>
<p>有一些在系统启动的时候由 LFS-Bootscripts 创建的符号连接和目录是 LFS 系统所必须的。既然目前只是 chroot 后的环境而不是真实启动后的环境,那么就需要在这里先创建他们:
</p>
<pre class="userinput"><kbd class="command">ln -s /proc/self/fd /dev/fd
ln -s /proc/self/fd/0 /dev/stdin
ln -s /proc/self/fd/1 /dev/stdout
ln -s /proc/self/fd/2 /dev/stderr
ln -s /proc/kcore /dev/core
mkdir /dev/pts
mkdir /dev/shm</kbd></pre>
<p>最后在新建的目录中挂载虚拟内核文件系统:
</p>
<pre class="userinput"><kbd class="command">mount -t devpts -o gid=4,mode=620 none /dev/pts
mount -t tmpfs none /dev/shm</kbd></pre>
<p>上面的命令可能会导致下面的警告信息:
</p>
<pre class="screen"><tt class="computeroutput">can't open /etc/fstab: No such file or directory.</tt></pre>
<p>因为在挂载文件系统时需要 <tt class="filename">/etc/fstab</tt> 文件的指示,但是该文件目前尚未被创建,不过你可以安全的忽略它。
</p>
</div>
</div>
<div class="navfooter">
<ul>
<li class="prev">
<a accesskey="p" href="pwdgroup.html" title="Creating the passwd, group, log Files">后退</a>
<p>
Creating the passwd, group, log Files
</p>
</li>
<li class="next">
<a accesskey="n" href="linux-libc-headers.html" title="Linux-Libc-Headers-2.6.11.2">前进</a>
<p>
Linux-Libc-Headers-2.6.11.2
</p>
</li>
<li class="up">
<a accesskey="u" href="chapter06.html" title="Chapter 6. 安装系统基础软件">上一级</a>.
</li>
<li class="home">
<a accesskey="h" href="../index.html" title="Linux From Scratch - Version 6.1">回首页</a>.
</li>
</ul>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -