This commit is contained in:
fofolee
2019-04-21 11:50:48 +08:00
parent 359d29ee0b
commit 38dcd51d8a
6901 changed files with 258583 additions and 2326828 deletions

View File

@@ -1,39 +1,39 @@
<h1 id="grub">grub</h1>
<p>多重引导程序grub的命令行shell工具</p>
<h2 id="补充说明">补充说明</h2>
<p><strong>grub命令</strong> 是多重引导程序grub的命令行shell工具。</p>
<h3 id="语法">语法</h3>
<pre><code class="language-bash">grub(选项)</code></pre>
<h3 id="选项">选项</h3>
<pre><code class="language-bash">--batch打开批处理模式
--boot-drive=&lt;驱动器&gt;指定stage2的引导驱动器
--config-file&lt;配置文件&gt;指定stage2的配置文件
--device-map=&lt;文件&gt;:指定设备的映射文件;
--help显示帮助信息
--install-partition=&lt;分区&gt;指定stage2安装分区
--no-config-file不使用配置文件
--no-pager不使用内部分页器
--preset-menu使用预设菜单
--probe-second-floppy检测第二个软盘驱动器
--read-only只读模式。</code></pre>
<h3 id="实例">实例</h3>
<p>利用grub命令来启动损坏的Linux系统可能你的电脑因为某些原因损坏不能自动启动了。当然原因很多可能的现象也很多。</p>
<p>这里说一下这种情况下的处理方法,即:屏幕上提示<code>grub&gt;</code>但你的硬盘上数据没有丢失各分区都是好的。这种情况是你的grub信息损坏了但比较严重的是系统启动不了。</p>
<p>当然在正常启动情况下屏幕上出现grub的启动项选择菜单时按<code>c</code>键也是可以进入<code>grub&gt;</code>状态的。这时候我们需要用grub的命令来手工启动系统。</p>
<p>只需要用到四个命令boot、kernel、initrd、boot。</p>
<p>但grub本身命令很多比如查看文件内容的cat 你输入help会得到。</p>
<p>首先,输入“ root (hd ” ,然后按两次 TAB 键; /* 这会列出你电脑上可能的磁盘设备,硬盘为 hd0/hd1 或 sd0/sd1 等 */</p>
<p>然后,选择你的安装 Linux 系统的硬盘,比如 hd0 ,输入 “ root (hd0, ” 再按两次 TAB 键; /* 这会列出你的第一块硬盘上的分区情况,你会知道哪个是 swap 交换分区, 0x82 ,哪个是 Linux 分区 0x83 */</p>
<p>选择你认为可能的 /boot 目录所在的分区, 输入<code>root (hd0, 1)</code>回车;</p>
<p>接着,输入<code>cat /boot/vm</code> 按两次 TAB 键,如果出现一些 vm 开头的文件,比如 vmlinuz-2.6.15-26-386 说明这里是 /boot 所在的分区。</p>
<p>删除上一次的输入,再输入<code>cat /boot/initrd</code>,按两次 TAB 键,如果出现一些 initrd 开头的文件,比如 initrd.img-2.6.15-26-386 说明这个 /boot 所在的分区有 initrd ,即 ramdisk 镜像;</p>
<p>删除上一次的输入,再输入<code>cat /sbin/init</code>,按两次 TAB 键,如果出现一些 init 开头的文件,比如<code>/sbin/init</code>说明这个分区是<code>/</code>所在的分区;</p>
<p>如果没有出现<code>/sbin/init</code>文件,说明<code>(hd0,1)</code>分区仅仅是<code>/boot</code>分区而不是<code>/</code>分区。重新输入<code>root (hd0,N)</code>命令,这里 N 是某个 Linux 分区,然后再试<code>cat /sbin/init</code> 直到屏幕上出现<code>/sbin/init</code>,说明你找到了<code>/</code>分区,严格来说,应该是<code>/sbin</code>目录所在的分区;</p>
<p>依次输入命令:</p>
<pre><code class="language-bash">root (hd0,1) /* 假设 /dev/hda2 是你的 /boot 所在的分区 */
kernel /boot/vmlinuz-2.6.15-26-386 ro dev=/dev/hda3 /* 假设 /dev/hda3 是你的 / 所在的分区 */
initrd /boot/initrd.img-2.6.15-26-386
boot</code></pre>
<p>即可启动系统。</p>
<p>这里的关键问题是如何确定系统的几个分区:<code>/boot</code> <code>/</code> <code>/sbin</code></p>
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->
<h1 id="grub">grub</h1>
<p>多重引导程序grub的命令行shell工具</p>
<h2 id="补充说明">补充说明</h2>
<p><strong>grub命令</strong> 是多重引导程序grub的命令行shell工具。</p>
<h3 id="语法">语法</h3>
<pre><code class="language-bash">grub(选项)</code></pre>
<h3 id="选项">选项</h3>
<pre><code class="language-bash">--batch打开批处理模式
--boot-drive=&lt;驱动器&gt;指定stage2的引导驱动器
--config-file&lt;配置文件&gt;指定stage2的配置文件
--device-map=&lt;文件&gt;:指定设备的映射文件;
--help显示帮助信息
--install-partition=&lt;分区&gt;指定stage2安装分区
--no-config-file不使用配置文件
--no-pager不使用内部分页器
--preset-menu使用预设菜单
--probe-second-floppy检测第二个软盘驱动器
--read-only只读模式。</code></pre>
<h3 id="实例">实例</h3>
<p>利用grub命令来启动损坏的Linux系统可能你的电脑因为某些原因损坏不能自动启动了。当然原因很多可能的现象也很多。</p>
<p>这里说一下这种情况下的处理方法,即:屏幕上提示<code>grub&gt;</code>但你的硬盘上数据没有丢失各分区都是好的。这种情况是你的grub信息损坏了但比较严重的是系统启动不了。</p>
<p>当然在正常启动情况下屏幕上出现grub的启动项选择菜单时按<code>c</code>键也是可以进入<code>grub&gt;</code>状态的。这时候我们需要用grub的命令来手工启动系统。</p>
<p>只需要用到四个命令boot、kernel、initrd、boot。</p>
<p>但grub本身命令很多比如查看文件内容的cat 你输入help会得到。</p>
<p>首先,输入“ root (hd ” ,然后按两次 TAB 键; /* 这会列出你电脑上可能的磁盘设备,硬盘为 hd0/hd1 或 sd0/sd1 等 */</p>
<p>然后,选择你的安装 Linux 系统的硬盘,比如 hd0 ,输入 “ root (hd0, ” 再按两次 TAB 键; /* 这会列出你的第一块硬盘上的分区情况,你会知道哪个是 swap 交换分区, 0x82 ,哪个是 Linux 分区 0x83 */</p>
<p>选择你认为可能的 /boot 目录所在的分区, 输入<code>root (hd0, 1)</code>回车;</p>
<p>接着,输入<code>cat /boot/vm</code> 按两次 TAB 键,如果出现一些 vm 开头的文件,比如 vmlinuz-2.6.15-26-386 说明这里是 /boot 所在的分区。</p>
<p>删除上一次的输入,再输入<code>cat /boot/initrd</code>,按两次 TAB 键,如果出现一些 initrd 开头的文件,比如 initrd.img-2.6.15-26-386 说明这个 /boot 所在的分区有 initrd ,即 ramdisk 镜像;</p>
<p>删除上一次的输入,再输入<code>cat /sbin/init</code>,按两次 TAB 键,如果出现一些 init 开头的文件,比如<code>/sbin/init</code>说明这个分区是<code>/</code>所在的分区;</p>
<p>如果没有出现<code>/sbin/init</code>文件,说明<code>(hd0,1)</code>分区仅仅是<code>/boot</code>分区而不是<code>/</code>分区。重新输入<code>root (hd0,N)</code>命令,这里 N 是某个 Linux 分区,然后再试<code>cat /sbin/init</code> 直到屏幕上出现<code>/sbin/init</code>,说明你找到了<code>/</code>分区,严格来说,应该是<code>/sbin</code>目录所在的分区;</p>
<p>依次输入命令:</p>
<pre><code class="language-bash">root (hd0,1) /* 假设 /dev/hda2 是你的 /boot 所在的分区 */
kernel /boot/vmlinuz-2.6.15-26-386 ro dev=/dev/hda3 /* 假设 /dev/hda3 是你的 / 所在的分区 */
initrd /boot/initrd.img-2.6.15-26-386
boot</code></pre>
<p>即可启动系统。</p>
<p>这里的关键问题是如何确定系统的几个分区:<code>/boot</code> <code>/</code> <code>/sbin</code></p>
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->