Linux与Windows 10用grub引导教程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux与Windows 10用grub引导教程相关的知识,希望对你有一定的参考价值。

参考技术A

去年暑假的时候,写了一篇如何装 Linux 和 Windows 10 双系统的文章发在了上,我写这篇文章的原因是当初装双系统确实是折腾了许久,网上也找不到一篇详尽的教程。由于去年对于写教程还不是熟练,而这一年多的使用过程也遇到了一些问题,所以就准备「Refactoring」这篇文章。

在教程正式开始之前,先花一点时间说明 EFI 分区的组成和作用。
首先,在你装了 Windows 之后,Windows 在装机过程中会将硬盘划分出一个约 100m 大小的分区,称为 EFI 分区这个分区就是起引导作用的。在资源管理器中是看不到的这个分区的,可以在磁盘管理中看到,管理则需要借助 DG 工具 。便于说明,在装好了 Linux 之后,我将 EFI 挂载至 boot 分区截图:

可以看到,该分区包含 3 个文件夹(如果你没有装 Linux 的话,就只有两个),分别是 Boot、Microsoft 和 Manjaro,其中 Boot 文件夹就是 UEFI 引导所必需的文件。
我们继续打开 Microsoft/Boot 文件夹:

这些文件就是启动 Windows 10 所必需的,包含了语言包、字体等,BCD 包含了 Windows 引导开始以后的信息。其中, bootmgfw.efi 是 Windows 默认引导文件

以上是采用 UEFI 启动 Windows 10 的文件结构,也就是说,当你按下开机按钮的时候,首先 UEFI 找到 EFI 分区的 Boot 文件夹,然后加载 bootx64.efi 文件,读取文件信息,找到 EFI/Microsoft/Boot/bootmgfw.efi ,按照 bootmgfw.efi 的要求,加载所需的启动信息,启动 Windows 10。

在正式装系统之前,我们还需要做一些准备工作:

这个功能的作用是在于关机的时候不完全断电,类似将系统处于「休眠」状态,这样可以让开机更加迅速。但这也就导致了只能使用 Windows 系统。

在默认情况下,UEFI 固件只会加载那些被签名的引导程序。在缺少 Secure Boot 功能的传统 PC 机上,恶意的后门程序可以加载自身,进而摇身一变伪装成一个引导程序。这样的话,Bios 就会在启动的时候加载后门程序,这样它就可以躲过操作系统,把自己隐藏得很深。
但是不得不说,这对我们安装 Linux 造成了很大的困扰,也是直接导致我们重启到 Windows 10 后进不去 Linux 的原因。
首先我们要关闭这个功能:进入 BIOS 找到 Secure Boot,选择 disabled,这样就关闭了。当然,有些人进入 BIOS 会发现 Secure Boot 这个选项是灰色的(比如我的就是),这时你需要先给你的 BIOS 设一个密码,然后就能关 Secure Boot 了。

所有的准备都已经完成,这时就可以准备刻录 U 盘了,不推荐 UltraISO,经亲测,软碟通仅刻录 Ubuntu 能成功,其它绝大多数发行版都会失败。推荐「 Rufus 」和「 USBWriter 」,这两个软件都可以。
刻录完成后,重启按 f12 ,选择从 USB 设备启动,对于绝大多数发行版来说一路回车就行了,只需要注意一点: 在选择挂载 boot 位置的时候,一定要挂载在 efi 分区 ,别的都不行。
重启之后,不出意外的话,你会直接进入 Windows 10,不要担心,这时 Linux 已经安装成功了,我们只需要将引导文件替换一下。

先用 DG 打开 EFI 分区,你会看到多了一个文件夹,名称取决于你安装的是哪一个发行版。我安装的是 Manjaro Linux,名称就是 Manjaro,打开之后会发现里面有一个名为 grubx64.efi 的文件,这就是启动 Linux 的引导文件。和 Windows 10 的 bootmgfw.efi 类似,我们想要用 grubx64.efi 引导代替掉 bootmgfw.efi,这样就可以用 GRUB 引导了。步骤:

至此,如果你安装的是除 Arch 之外绝大多数发行版,那么接下来就和你没有啥关系了,你已经成功了,好好享受吧!

开机之后会发现进入 GRUB 的引导了,通常会包含至少三个选项(以 Manjaro 举例):Manjaro、Manjaro 高级选项和 Windows Manager。这就代表你已经完美的解决了 Windows 和 Linux 双系统引导的问题。

这一点是我安装 Arch Llinux 的时候发现的,Arch Linux 安装过程是手动安装的,在编写 GRUB 的时候会扫描不到 Windows Manager 所在的分区(当然可能不是所有人都会遇到),所以在 GRUB 界面可能会看不到 Windows Manager 选项,导致进不去 Windows 10,这里就需要手动编辑 GRUB 信息,我们打开 /boot/grub/grub.cfg 文件,发现里面确实没有 Windows 10 的启动信息,在后面加上:

注意

这里的 $hints_string ,代表的是终端执行命令:

后的输出;

而 $fs_uuid 代表的是:

的输出。

然后保存。在终端执行命令: sudo grub-mkconfig -o /boot/grub/grub.cfg ,就 OK 了。

到此,Arch Linux 和 Windows 10 双系统也配置完毕了。

在使用这一年多的时间,遇到了以下的几个问题:

最后:祝使用愉快。

通过Samba实现Linux与Windows间的文件共享

Samba

Samba,是用来让Linux系列的操作系统与Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协议做连结的自由软件,最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享(Linux与Linux之间的资源共享更多用NFS实现)。
组成Samba运行的有两个服务,一个是SMB,另一个是NetBIOS。SMB是Samba的核心启动服务,主要负责建立Samba服务器与Samba客户机之间的对话,验证用户身份并提供对文件和打印系统的访问,监听139 TCP端口(增强版SMB协议CIFS直接监听445端口,CIFS不需要NetBIOS协议);而NetBIOS服务是负责解析,提供浏览网络上的共享资源列表,监听UDP端口137和138。

实现Samba

  • 安装Samba:
[root@smaba ~]# lsb_release -r
Release:    7.2.1511
[root@smaba ~]# yum -y install samba
[root@smaba ~]# rpm -qi samba
Name        : samba
Epoch       : 0
Version     : 4.7.1
Release     : 6.el7
Architecture: x86_64
[root@smaba ~]# systemctl stop firewalld.service
[root@smaba ~]# setenforce 0
  • Samba相关配置:
  主配置文件:/etc/samba/smb.conf
  主程序:nmbd(NetBIOS Name Server Daemon)、smbd(SMB/CIFS Daemon)
  Unit文件:smb.service和nmb.service
其中
/etc/samba/smb.conf文件常见参数:   全局配置: [global] workgroup=MYGROUP #工作组名 server string=Samba Server Version %v #服务器信息介绍 netbios name=MYSERVER #用netbios名来指定服务 interfaces=[interface1 interface2...|address1 address2...] #用于让samba服务监听多个网络接口或IP hosts allow=[address1 address2...] #指定允许访问的主机IP log file=/var/log/samba/log.%m #指定日志存放路径,%m为来访的主机名 max log size=50 #定义日志文件最大容量为50K security=user #设置samba服务的安全认证方式为user passdb backend=tdbsam #定义用户后台的类型为tdbsam,其他类型还有smbpasswd、ldapsam load prints=yes #设置是否共享打印机 cups options=raw #打印机选项   其它配置: [homes]:为每个samba用户定义其是否能够通过samba服务访问自己的家目录 [printers]:定义打印服务 [自定义共享目录]:定义共享的文件系统   常用指令: comment=STRING:注释 path=/PATH/TO/FILENAME:当前共享所映射的文件系统路径 browseable=YES:是否可浏览,指是否可被所有用户查看 pulibc=YES:是否允许匿名访问 browseable=No:是否公开目录 writable=YES:是否可写 read only=no|yes:是否为只读 write list=/PATH/TO/user_list|USERNAME:拥有写权限的用户列表
directory mask=MASK:新建目录的权限值
force directory mode=MASK:配合directory mask使用,使得目录权限值生效
create mask=MASK:新建文件的权限值
force create mode=MASK:配合create mask使用,使得文件权限值生效   更多参数可通过命令 man smb.conf 查看。
  • 自定义共享目录:
[root@samba ~]# vim /etc/samba/smb.conf
[shared_dir]
        comment=shared dir through samba
        path=/samba_dir
        writable=yes
[root@samba ~]# mkdir /samba_dir  #创建共享文件
[root@samba ~]# testparm  #校验/etc/samba/smb.conf文件的配置是否正确
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[shared_dir]"
Loaded services file OK.
Server role: ROLE_STANDALONE
  • samba服务默认的验证模式为user,因此需要创建samba用户数据库:
samba帐号必须存在于Linux系统中(/etc/passwd),而其密码却需要单独维护。创建samba用户数据库有专门的命令:pdbedit 和 smbpasswd。
  pdbedit [options] account
  options:
      -a USERNAME:创建samba用户
      -x:删除samba用户
      -L:列出samba用户列表
      -Lv:列出用户详细信息列表
  smbpasswd [options] USERNAME
  options:
      -a:添加账号
      -x:删除账号
      -d:禁用账号
      -e:启用账号
[root@samba ~]# useradd samba_user1
[root@samba ~]# pdbedit -a samba_user1
new password:
retype new password:
Unix username:        samba_user1
[root@samba ~]# useradd samba_user2
[root@samba ~]# smbpasswd -a samba_user2
New SMB password:
Retype new SMB password:
Added user samba_user2.
  •  windows主机测试:
# 启动服务
[root@samba ~]# systemctl start smb.service
[root@samba ~]# systemctl start nmb.service
# 客户端测试
  •  可以看到,用户登录后无法在/samba_dir下创建目录,明明已经设置了 writable=yes。这是因/samba_dir目录的属主和属组均为root,其他用户没有写权限。进行如下修改:
[root@samba ~]# groupadd samba
[root@samba ~]# usermod -G samba samba_user1
[root@samba ~]# usermod -G samba samba_user2
[root@samba ~]# id samba_user1
uid=1005(samba_user1) gid=1005(samba_user1) groups=1005(samba_user1),1007(samba)
[root@samba ~]# id samba_user2
uid=1006(samba_user2) gid=1006(samba_user2) groups=1006(samba_user2),1007(samba)
[root@samba ~]# ll -d /samba_dir
drwxr-xr-x. 2 root root 6 Jun 29 17:19 /samba_dir
[root@samba ~]# chown :samba /samba_dir
[root@samba ~]# chmod g+w /samba_dir
[root@samba ~]# ll -d /samba_dir
drwxrwxr-x. 2 root samba 6 Jun 29 17:19 /samba_dir
  • windows主机重新测试:

linux主机进行测试:

# 挂载访问。注意,此处访问的是/shared_dir,配置文件/etc/samba/smb.conf中 [] 定义的名称。
[root@client ~]# mount -t cifs //192.168.4.119/shared_dir /mnt -o username=samba_user1
Password for samba_user1@//192.168.4.119/shared_dir:  ******
[root@client ~]# ls /mnt
hello.txt  test
[root@client ~]# touch /mnt/hello
[root@client ~]# ls /mnt
hello  hello.txt  test
# 使用smbclient客户端访问
[root@client ~]# yum install -y samba-client
[root@client ~]# smbclient //192.168.4.119/shared_dir -U samba_user2  #交互式访问
Enter SAMBA\\samba_user2\'s password: 
Try "help" to get a list of possible commands.
smb: \\> ls
  .                                   D        0  Tue Jul  3 17:07:35 2018
  ..                                 DR        0  Fri Jun 29 17:19:56 2018
  test                                D        0  Tue Jul  3 15:42:01 2018
  hello.txt                           A        0  Tue Jul  3 17:07:31 2018
  hello                               N        0  Tue Jul  3 17:07:35 2018

        121055488 blocks of size 1024. 116173648 blocks available
smb: \\> 
[root@client ~]# smbclient -L //192.168.4.119/shared_dir -U samba_user1  #查看共享情况
Enter SAMBA\\samba_user1\'s password: 

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    shared_dir      Disk      shared dir through samba
    IPC$            IPC       IPC Service (Samba 4.7.1)
    samba_user1     Disk      Home Directories
Reconnecting with SMB1 for workgroup listing.

    Server               Comment
    ---------            -------

    Workgroup            Master
    ---------            -------
    SAMBA                HAPPINESS
    WORKGROUP            DESKTOP-L064DV0

 

以上是关于Linux与Windows 10用grub引导教程的主要内容,如果未能解决你的问题,请参考以下文章

Linux实现U盘启动(1.GRUB安装U盘)

修改linux, win10双系统默认引导顺序

Linux下手动备份还原硬盘主引导记录MBR跟硬盘分区表DPT教程

Ubuntu修复启动引导

在grub的rescue模式修复linux引导

自定义Ubuntu/Windows双系统引导菜单主题