标签归档:grub

一个Linux可用的引导程序

在RouterOS的KVM中安装Linux

最近耍了一个RouterOS的x86版,自带kvm虚拟机,看起来碉堡了,但是使用了之后只能吐槽说各种bug,就连官方的建立img都会报个“failed to copy files to image(s)”,结果我还是用ultraiso建立了一个空的img文件才能用。openwrt的镜像倒是方便,把kernel也放出来了,启动参数也提供了,在routerOS中一填就OK,没什么大问题。至于安装其他的linux。。。。目前我只成功安装了CentOS7。

在目前的RouterOS版本(6.36.2)中,kvm虚拟机的vnc是用不了的,这让我安装windows的企图破灭了,没GUI玩个蛋蛋。剩下一种可行的链接方式就只有console,这让安装linux变得可能。

但是下载下来的iso镜像不能直接使用,因为很多发行版发布的镜像的grub是默认没有console输出的,这让我们需要重新打包iso镜像。

首先,找到grub的配置文件,视情况而定,有可能是grub.cfg、grub.conf、isolinux.cfg几种,ubuntu的配置文件更加复杂,详细去官方的wiki慢慢研究。

在grub的配置文件中全局的位置(大概是在那一堆label前)插入一句

serial 0 115200

就能够让grub输出到console,至于这时候有没有视频输出,我没试过。这时候routerOS就可以用过console看到grub的输出了。

然后就是kernel的参数,这让kernel启动之后输出到console,这段写在kernel的后面,像这样。

label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz console=ttyS0,115200
  append initrd=initrd.img

之后就像正常安装linux一样安装就行了,不过只能够用文本的安装向导,详细查询各大发行版。

[笔记]我觉得引导区什么的很重要

昨天,微软终于检测到我家的Windows使用的是盗版,不得已,再重新找了一个激活软件……一个名字为XQMWin_Install.exe(仔细认住!)结果,直接变成

bootmgr is compressed please enter Ctrl+Alt+Del to restart

悲剧了 于是找来一个教程,让我在CD启动之后运行命令行

bootrec /fixmbr bootrec /fixboot

我老老实实照做了,结果就是grub被毁掉了(内牛满面,教程不一定都是对的……特别是某些更新换代很快的东西) 好吧~我就老老实实的重新烧U盘,重新跑Ubuntu。 找到各种教程: PS1:Ubuntu版本为11.10,版本不合者自行参考

Part1:

 sudo mount /dev/[自己的/分区的位置] /mnt sudo grub-install --root-directory=/mnt /dev/[自己的/分区的位置]

*重启后进入grub的命令行

root (hdX,Y) //X为硬盘号,从0开始,只有一个硬盘就是hd0;Y为分区号,1号分区就是0,如果Ubuntu所在位置就是第一个硬盘的第一个分区,则输入 root (hd0,0)

linux /boot/vmlinuz-2.xxxxx-generic root=/dev/sda12

//经过实际测试,从不知道什么时候起,grub已经不用“linux”来载入linux内核,改用“kernel”

initrd /initrd.img-2.xxxxx-generic boot

好吧~我承认我是靠这个的后半部分我进入了Ubuntu,虽然前面安装grub的部分死活装不上……

Part2:我就是靠这个装上grub的……PS2:此为grub1 下载一个grub,安装,会卸载掉grub-gfxpayload-lists grub-PC grub2-common 然后运行grub进入grub命令行

 root (hdX,Y) //X,Y见之前 setup (hd0)

就两行,让我找到了前进的方向! 接着,我就进入了Ubuntu……运行

update-grub

然后!还是在命令行……这是怎么回事呢?

Part3:PS3:其实之前的都可以不看,这里才是经验的总结,就像大学里面最后一周大于等于一个学期一样,这里才是精华

sudo mount /dev/[自己的/分区的位置] /mnt
sudo grub-install --root-directory=/mnt /dev/[硬盘的位置,例:sda]
//问题出现在这里,grub装到分区的话是没有用的,要装到mbr去

//以下部分不一定要做,如果你的grub菜单没问题,就没必要做 *重启之后靠Part1的方法启动Ubuntu更新grub菜单
sudo update-grub

结果就好了