【Grub&Grub2】Grub与Grub2安装与引导Linux系统范例

    xiaoxiao2021-04-16  47

    一、Ubuntu的安装与引导

            以ubuntu-16.04-desktop-amd64.iso为例

    1、提取引导文件和压缩内核

             a) grub安装方法

            提取casper文件夹中的initrd.lz和vmlinuz.efi(支持UEFI),将文件提取出来和ISO一起拷贝到一个fat32分区根目录(假设为第一个磁盘的第3个分区)。

            修改grub菜单文件,增加一条,内容如下:

    title Install Ubuntu 16.04 root (hd0,2) kernel /vmlinuz.efi boot=casper iso-scan/filename=/ubuntu-16.04-desktop-amd64.iso ro quiet splashlocale=zh_CN.UTF-8 initrd  /initrd.lz

            补充一下磁盘分区的知识:

           在grub中,磁盘分区是从0,开始,例如磁盘2的分区3为(hd1,2),而在linux中,磁盘分区从1开始,例如磁盘2分区3为sdb3,在Windows中磁盘从C开始,第三分区就是E盘。

            推测的分区位置可能与实际略有出入,在启动后标题处会有停留,确认后会寻找文件和引导,若是找不到会提示,返回标题后,按e键可以编辑neogrub内容,修改分区位置。例如将(hd0,1)改为(hd1,1),若是优盘很有可能就是(hd1,0),然后回车,再次尝试。

             b) grub2安装方式

             grub2可以直接加载大的iso镜像,不需要解压提取内核。

    menuentry "Ubuntu 16.04" --class os{ set root=(hd0,msdos3) loopback loop0 /ubuntu-16.04-desktop-amd64.iso linux (loop0)/casper/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu-16.04-desktop-amd64.iso ro quiet splashlocale=zh_CN.UTF-8 initrd  (loop0)/casper//initrd.lz }

            需要注意的是,grub2的分区表达方式有所变化,分区从1开始了,例如第一个磁盘第一分区(mbr分区)为:(hd0,msdos1)

            

    2、进行安装

            引导完成进入安装界面后,第一步就是要打开中端,快捷键为 Ctrl+Alt+T,输入:sudo umount -l /isodevice,注意是L不是i,这一步是为了弹出对应盘的占用,方面后面格式化并创建分区。

            点击桌面上的安装程序,第二步让你选择安装方式,第一个为与windows7共存,我们选择最后一个:其他选项。然后格式化ext4需要使用的分区,挂载点为/,格式化完成后注意下方引导安装位置,我们选择刚刚格式化的分区,然后下一步,我们不使用swap,继续,然后一步一步即可,最后慢慢就等着安装吧,安装完成提示重启,重启即可。

            注意不要覆盖现有引导。

     

    3、重建引导

            a) grub

            重启之后发现根本找不到从哪进入ubuntu,这是正常的,因为你的引导安装在分区中,而电脑根本不知道。

           这里我们仅需要修改刚刚引导安装使用的安装引导,具体分区要修改root(hd0,1),这里是认为安装在第二个分区,grub菜单修改为:

    title ubuntu16.04 root (hd0,1) kernel /vmlinuz root=/dev/sda2 initrd /initrd.img

            一般来说,一个磁盘比较容易试,多个磁盘就有点麻烦,我装了2个硬盘分了十个区,试了几分钟。如果是装在第二个磁盘第一个分区:

    title ubuntu16.04 root (hd1,0) kernel /vmlinuz root=/dev/sda1 initrd /initrd.img

            这是一个难点,我也是试了不少次才总结出来。

            第一行时,还是grub,对于grub来说,主板第二个磁盘就是物理上的第一个盘,但是到了第二行,启动了ubuntu内核,linux会将自身安装盘当做第一盘,所以这里就变成了sda,而非sdb。

            另外这里initrd和vmlinuz的具体名称与安装的时候略有不同,这里在启动后打开ubuntu系统根目录看一下你就明白了,它跟里面的是一致的,是从文件夹中引出的链接文件

            b) grub2

            grub2仅个别命令语法不同

    menuentry "ubuntu16.04" --class os{ set root=(hd0,msdos2) linux /vmlinuz root=/dev/sda2 initrd /initrd.img }

    二、debian8.7的安装与引导

    1、准备文件

            安装时,引导安装文件要与版本以及操作位数对应,例如debian8.7 amd64的引导文件就在installer-amd64,下载3个文件【boot.img.gz、initrd.gz 、vmlinuz】,不能使用镜像中的install.amd中的这两个同名文件,因为镜像中的initrd.gz没有查找ISO的功能,不适用于硬盘安装。同时,debian引导文件与Ubuntu不同,不能直接加载iso,只能从fat格式分区加载iso。

           a) grub

            将文件都放到某个fat根目录,修改grub菜单,新增一条:

    title debian8.7 root (hd0,2) kernel /vmlinuz initrd /initrd.gz boot

            b) grub2

            将文件都放到某个fat根目录,修改grub菜单,新增一条:

    menuentry "debian8.7" --class os{ set root=(hd0,msdos3) linux /vmlinuz initrd /initrd.gz boot }

     

    2、开始安装

            安装过程就略了,引导不要选择磁盘,注意不要覆盖现有引导。

    3、重建引导

            a) grub

            修改grub菜单,假设装在第二个分区

    title debian 8.6 root (hd0,1) kernel /vmlinuz ro root=/dev/sda2 initrd /initrd.img boot

            b) grub2

    menuentry "debian 8.6" --class os{ set root=(hd0,msdos2) linux /vmlinuz ro root=/dev/sda2 initrd /initrd.img boot }

     

    三、openSUSU42.2的安装与引导

            注意:BIOS中最好禁用acpi,部分机器boot启动安装之后要立马拔掉所有usb,包括键盘,不然会卡在loading basic drivers,启动之后再插上键盘。如果有安装windows,若是后续无法启动,则需要将acpi重新开启。

    1、准备文件

          下载openSUSE镜像,解压到某个分区的根目录的openSUSE文件夹(随意名称),然后将linux和initrd-xen提取到根目录,initrd_xen改名为initrd(可以不改,与下面对应)。

           a) grub

            修改grub菜单,新增一条:

    title openSUSE42.2 root (hd0,2) kernel /linux initrd /initrd boot

            b) grub2

    menuentry "openSUSE42.2" --class os{ set root=(hd0,msdos3) linux /linux initrd /initrd boot }

     

    2、系统安装

            安装过程就略了。

            安装过程需要注意2点:

            1、如果文件放在ntfs格式盘,无法直接查找,需要挂载,一直back,在主目录选择expert,然后选择start shell,输入cp /usr/bin/mount/bin,然后exit,再返回进行安装,就可以识别了,硬盘选择放置文件的分区,目录为开始解压的目录,即/openSUSE 

            2、选择Experts模式自定义安装时,安装在某一个分区而非磁盘安装时,是不会写入grub2引导的,本例不需要引导,若是需要原装引导,使用grub2-install/dev/sdax来安装引导

     

    3、重建引导

            a) grub

    title openSUSE42.2 root (hd0,2) kernel /linux initrd /initrd boot

            b) grub2

    menuentry "openSUSE42.2" --class os{ set root=(hd0,msdos3) linux /linux initrd /initrd boot }

    四、CentOS7安装

    1、准备文件

         a) grub

           从镜像中提取vmlinuz和initrd.img与iso文件放到fat32分区,对于大于4g的iso,只能放到ext2分区。这里我们放在第三个分区,安装到第二个分区

           加载kernel是关键,如果grub是安装在优盘,并从优盘启动的,在加载内核后,磁盘顺序必然会发生变化,所以可能需要挨个启动测试,如果出现nosuitableimage则证明sdb1并非优盘分区,更换重新实验。如果grub安装在硬盘,则保持一致,加热grub中优盘为(hd1,0),则为/dev/sdb1以此类推。      

    title CentOS7 find --set-root /vmlinuz kernel /vmlinuz linux repo=hd:/dev/sda3:/ initrd /initrd.img boot

            b) grub2

    menuentry "CentOS7" --class os{ search.fs /vmlinuz root linux /vmlinuz linux repo=hd:/dev/sda3:/ initrd /initrd.img boot }

    2、开始安装

            安装过程略,注意不要覆盖现有引导。

    3、重建引导

            a) grub

            修改grub菜单。

    title CentOS7 find --set-root /vmlinuz kernel /vmlinuz linux repo=hd:/dev/sda2/ initrd /initrd.img boot

            b) grub2

    menuentry "CentOS7" --class os { search.fs /vmlinuz root linux /vmlinuz linux repo=hd:/dev/sda2/ initrd /initrd.img boot }

     

    转载请注明原文地址: https://ju.6miu.com/read-672925.html

    最新回复(0)