efi转bios详细说明
前言
制作好的efi格式的ubuntu15.10系统放到服务器主板上启动不了,于是将其改为bios格式,发现问题解决了,成功登入系统。下面是操作过程的一个记录。
测试环境
目标环境
系统: Ubuntu15.10
硬件: x86平台,服务器主板
宿主环境
系统: Ubuntu15.10
硬件: x86平台,普通主板
详细步骤
- 第一步,将要修改的磁盘连接到额外的ubuntu系统的电脑上(我是通过sata转usb连接到笔记本上);
- 第二步,分区修改。efi启动模式的磁盘会有一个efi分区,文件系统为fat32,我们需要将其格式化为boot分区的文件系统,可以是ext4。我采用gparted来完成的,细节就不细说了,我这里还通过管理标志界面去掉esp标志;
- 第三步,进入要修改的磁盘环境,修改必要信息。依次执行下面命令,注意,替换sdd为自己外接的磁盘名,另外,这里的sdd2是指根分区,sdd1是指boot,也就是之前的efi分区,请根据自己的情况替换;
挂载根分区
$ sudo mount /dev/sdd2 /mnt
挂载boot分区
$ sudo mount /dev/sdd1 /mnt/boot/
挂载proc
$ sudo mount -o bind /proc/ /mnt/proc/
挂载sys
$ sudo mount -o bind /sys/ /mnt/sys
挂载dev
$ sudo mount -o bind /dev/ /mnt/dev
切入到外接磁盘(要修改的磁盘)环境
$ sudo chroot /mnt /bin/bash
如果前面指令全部成功执行,这时应该已经进入需要修复的磁盘环境里了。执行下面命令来卸载掉grub-efi-amd64(我这里是64位系统,32位系统的efi包肯定不同,需要根据情况修改)
$ sudo apt-get purge grub-efi-amd64 grub-common
,卸载完后我们就要安装BIOS version的grub了,执行下面命令即可:
$ sudo apt-get install grub-pc
注意: 可能需要配置dns,否则因为不能联网,导致apt-get install 失败,我这里临时配置一下(我的网关为192.168.1.1),于是我将dns指向它了。另外安装grub-pc时需要根据界面提示做相应动作,总之要指定安装到磁盘对应的设备名中,而不是对应的分区名中,如sdd,而不是sdd1。
$ sudo echo "nameserver 192.168.1.1" > /etc/resolv.conf
- 第四步,修改fstab。去掉之前efi分区的挂载,我们这里用boot分区的uuid来替换掉它,要知道uuid,可以通过下面命令获取:
root@mcu-MacBookAir:/# sudo blkid /dev/sdd*
/dev/sdd: PTUUID="7e8d3b3a-6696-4dd2-8625-a1693ecf543e" PTTYPE="gpt"
/dev/sdd1: UUID="066f81f6-a4f5-43e5-ab8c-bb6fceb20de0" TYPE="ext4" PARTLABEL="EFI System Partition" PARTUUID="b1bb909b-ddcb-4ea4-a500-075e02bc3e01"
/dev/sdd2: UUID="d9ecfe99-05eb-4c79-939f-8e3c7a165d28" TYPE="ext4" PARTUUID="f450ba20-b922-4352-8eef-37113fcbfd70"
/dev/sdd3: UUID="ad15ce5a-53ac-4f25-b5b1-b33334e75159" TYPE="swap" PARTUUID="acaf2808-7db5-4b27-900b-52439688c66a"
修改前的fstab文件:
root@mcu-MacBookAir:/# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda2 during installation
UUID=d9ecfe99-05eb-4c79-939f-8e3c7a165d28 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=A663-8A43 /boot/efi vfat umask=0077 0 1
# swap was on /dev/sda3 during installation
UUID=ad15ce5a-53ac-4f25-b5b1-b33334e75159 none swap sw 0 0
修改后的fstab文件:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda2 during installation
UUID=d9ecfe99-05eb-4c79-939f-8e3c7a165d28 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=066f81f6-a4f5-43e5-ab8c-bb6fceb20de0 /boot ext4 errors=remount-ro 0 1
# swap was on /dev/sda3 during installation
UUID=ad15ce5a-53ac-4f25-b5b1-b33334e75159 none swap sw 0 0
可以看到,主要是修改了第二个挂载条目,即之前的efi条目;
- 最后一步,完善boot分区的内容。我从之前的boot目录(它里面存放了内核文件)拷贝内核文件到当前的boot分区,于是先卸载掉boot分区,将文件考出,然后再挂载boot分区,将内核文件考入
root@mcu-MacBookAir:/# umount /boot/
root@mcu-MacBookAir:/# cp /boot/vmlinuz-4.2.0-16-generic .
root@mcu-MacBookAir:/# mount /dev/sdd1 /boot/
root@mcu-MacBookAir:/# mv vmlinuz-4.2.0-16-generic /boot/
执行完这行操作了,执行更新grub配置文件和生成initrd
root@mcu-MacBookAir:/# update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.2.0-16-generic
root@mcu-MacBookAir:/# update-grub
Generating grub configuration file ...
Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
Found linux image: /boot/vmlinuz-4.2.0-16-generic
Found initrd image: /boot/initrd.img-4.2.0-16-generic
Found Ubuntu 15.10 (15.10) on /dev/sda6
done
剩下的就是收尾工作了, 退出当前环境,卸载所有和要修复磁盘相关的分区
exit
cd ~
sudo umount /mnt/*
sudo umount /mnt
,然后拔出磁盘,插入到目标主机启动就可以了。
如果哪位遇到相关问题,欢迎留言讨论!
完!
2016年5月
efi转bios详细说明的更多相关文章
- 对“传统BIOS”与“EFI/UEFI BIOS”的基本认识
硬盘(MBR磁盘)分区基本认识+Windows启动原理 大家常会看到硬盘分区中这样的几种说法:系统分区.启动分区.活动分区.主分区.拓展分区.逻辑分区,MBR.PBR.DPT.主引导扇区等.尤其是看到 ...
- EFI/UEFI BIOS启动
全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体硬盘的分区结构.它是可扩展固件接口标准的一部分,用来替代BIOS中的主开机纪录分区表.但因为MBR分区表不支持容量 ...
- EFI/UEFI BIOS 入门
我们已经使用BIOS超过了二十年.可是直到今天还有许多朋友不知道BIOS到底是什么,以及它主要做些什么事情,它在整个个人计算机之中所处的地位如何.事实上,BIOS是整个计算机系统中最重要的底层系统软件 ...
- 使用EFI引导从硬盘(U盘)安装Win7的图文教程
目前仅支持vista后的64位系统 大部分使用EFI引导安装Win7的教程都是采用光盘启动安装,虽然光盘安装比较简单,但是对于没有光驱的朋友来说还是相当不便,更不用说光盘安装的两大缺点了,一速度慢,二 ...
- BIOS + MBR > UEFI + GPT
BIOS + MBR > UEFI + GPT硬件接口系统与磁盘分区UEFI用于取代老旧的BIOS,而GPT则取代老旧的MBR. 名词解释: BIOS (Basic Input/Output S ...
- UEFI与 Legacy BIOS两种启动模式详解
(1). UEFI启动模式 与 legacy启动模式 legacy启动模式: 就是这么多年来PC一直在使用的启动方式(从MBR中加载启动程序),UEFI BIOS作为一种新的BIOS自然也应该兼容这种 ...
- Legacy BIOS Boot 是如何启动或引导的
现在Windows 8 64位操作系统全面采用UEFI引导启动的方式,与过去的Legacy启动有什么区别呢?今天就让我们一起来了解下. Legacy BIOS UEFI Boot 是如何启动或引导的 ...
- 预装WIN8系统的电脑安装WIN7的方法
前些天,给一位客户的本本安装WIN7,因为原来预装了WIN8,结果按常规方法安装一直没有成功,不管是光盘还U盘.所以心里一直有个疑问,所以留意查阅了有关资料和相关的文章,终于明白了问题所在,现在在这里 ...
- 虚拟机安装Macintosh探索
想跟virtualbox安装一个mac os,在pcbeta找到网友分享的原版镜像,挂载安装,结果在安装的时候不是卡在进入界面,就是不停地安装,显然没有那么简单.virtualbox 在用户手册写着支 ...
随机推荐
- 【java并发编程】十三章:显式锁:LOCK
java5以后,新增了显式锁,用于当内置锁不能满足需求后可选择的一种高级方案. lock接口的特点 与内置锁一样,他能提供互斥性,内存可见性,可重入等特征,与内置锁不同的是,Lock提供了一种无条件, ...
- (原创)BFS广度优先算法,看完这篇就够了
BFS算法 上一篇文章讲解了DFS深度优先遍历的算法,我们说 DFS 顾名思义DEEPTH FIRET,以深度为第一标准来查找,以不撞南墙不回头的态度来发掘每一个点,这个算法思想get到了其实蛮简单. ...
- 对SE的认识
对SE的认识 简述 “架构师”,也就是SE,总是给外人一种比较牛逼的感觉,其实踏实做开发的真的很少关注这个title. 抛开这个名词,这个角色的存在的确有一定的意义,因为项目中需要一个能“带领大家前进 ...
- picker组件,mode=date,苹果机年份从1开始
由于在IOS上复制图片不方便, 所以用了张别的网站的图 这是在没有设置value和start的情况下出现的,安卓机上显示是好的.尝试完网上相关说法, 发现都不中! 通过各种挣扎啊!~ 心里苦啊~ 复制 ...
- 常量表达式 & constexpr
[常量表达式] 一个这样的表达式:值不会改变 && 在编译过程中就能够得到计算结果 常见的常量表达式:字面值.用常量表达式初始化的const对象 一个对象是不是常量表达式由它的数据类型 ...
- ng2 搭建本地开发环境
git clone https://github.com/angular/quickstart.git quickstart cd quickstart npm install npm start h ...
- laravel 学习随笔(一)
1.路由参数:路由参数总是通过花括号进行包裹,参数在路由被执行时会被传递到路由的闭包.(路由参数不能包含“-”字符,如有需要可以用“_”代替):
- PAT 甲级 1003 Emergency
https://pintia.cn/problem-sets/994805342720868352/problems/994805523835109376 As an emergency rescue ...
- 【Python】- 如何使用Visual Studio 2013编写python?
安装Visual Studio 2013 1.VS2013下载安装略 安装python2.7 1.从官网下载python2.7,下载地址:https://www.python.org/getit/ ...
- 解决微信小程序配置https不成功问题
拿到一个微信小程序的项目,需要配置https安全链接(为什么必须使用https不再赘述),预想这个已经很成熟的流程,应该不会有太大问题,结果还真是出乎意料,竟然掉进一个大坑,折腾好久. 申请证书配置的 ...