多系统安装之Redhat
红帽企业版Linux(Red Hat Enterprise Linux)简称为RHEL,它比Fedora稳定。由于CentOS已经被Redhat收购,和RHEL相同源代码的CentOS近期变成了Fedora和RHEL之间的稳定过渡带发行版,大家准备逃离CentOS。好在RHEL代码需要开源,又有许多类似的社区版可供使用。不过RHEL并没有向个人收取费用,我们不必执着于同rpm软件包系的Oracle Linux,也不必切换到deb软件包系的Debian、Ubuntu,就正常使用RHEL就好。
下载
根据CPU类型,从RHEL官网下载光盘镜像。 比如64位的Intel/AMD CPU选择x86_64;如果是ARMv8的CPU,选aarch64(某些场合也称为arm64,如Debian)。 光盘镜像除CPU架构不同外,根据操作系统是否含有附带软件又区分为DVD和Boot镜像。
下载镜像需要红帽账号,登录后选择对应的镜像,网站会自动开始下载。 需要注意的是,整个下载链接只有240分钟的有效期。所以,请务必保持较好的网速!(8G大小时,平均下载速度需不低于570K/s)
当然,国内某些网站提供了镜像,比如搜索rhel镜像出来的山东女子学院镜像。
安装
分区
禁用swap。一方面考虑内存本身较大,另一方面考虑SSD频繁读写的寿命不高,故选择禁用swap(不创建swap分区)
用户数据和程序动态数据与系统文件分离。操作系统需要的文件放在SSD,可以加快启动和运行,我们可以把/boot、/、/boot/efi放在SSD。用户数据和程序动态数据占用的空间较大、且修改频繁,我们可以把/home、/var放到机械硬盘上。
dnf
- media.repo
设置软件包地址(默认指向安装光驱) 。
在RHEL8,yum只是dnf的一个软链接。
whichyum/usr/bin/yumls-alh /usr/bin/yumdnf-3ls-alh /usr/bin/dnfdnf-3
在"/etc/yum.repos.d"目录下新建文件media.repo,用于指向光盘镜像的附带软件,即rhel-{m}.{n}-{arch}-dvd.iso。 其中该文件分两个部分,InstallMedia-BaseOS的baseurl指向BaseOS目录,我们可以从"/mnt/cdrom/BaseOS"里复制到磁盘目录"/home/administrator/BaseOS"。 InstallMedia-AppStream指向Apptream目录,我们可以从"/mnt/cdrom/AppStream"复制到磁盘目录"/home/administrator/AppStream"。 一个可能的内容如下:
[InstallMedia-BaseOS]name= Red Hat Enterprise Linux8for x86_64- BaseOS (RPMs)metadata_expire=-1gpgcheck=1enabled=1baseurl=file:///home/administrator/BaseOS/gpgkey= file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-releasecost=500[InstallMedia-AppStream]name= Red Hat Enterprise Linux8for x86_64- AppStream (RPMs)baseurl= file:///home/administrator/AppStream/enabled=1gpgcheck=1gpgkey= file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-releasemetadata_expire=86400enabled_metadata=1
- redhat.repo
在较高版本的RHEL,安装时就要求联网,输入账号信息进行激活,就不需要此步骤。 较低版本的redhat.repo文件由rhsm自动生成,没有配置任何信息。可以按照如下步骤操作:
注册,填写在红帽官网注册的用户名和密码subscription-managerregister注册成功后,redhat.repo内容就会被修改,配置完成查看所有repo,会发现现在仓库标识多了rhel-8-for-x86_64-appstream-rpms和rhel-8-for-x86_64-baseos-rpmsyumrepolist查看redhat.repo也能看到文件内容多了很多信息cat/etc/yum.repos.d/redhat.repodnf clean alldnf makecache如果不想注册到红帽,或者因网络问题,注册不了,可以下载Centos-8.repo,将内容复制到redhat.repocurl-o Centos-8.repo http://mirrors.aliyun.com/repo/Centos-8.repocatCentos-8.repo >> /etc/yum.repos.d/redhat.repo除aliyun外,清华\中科大\华为等大学/公司也提供了镜像地址
- epel.repo
EPEL(Extra Packages for Enterprise Linux)是社区志愿者为RHEL系统(及其衍生系统)提供的高质量附加软件包仓库。
安装软件包yuminstall https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm安装完毕后"/etc/yum.repos.d/"下有epel相关的存储库了ls-alh /etc/yum.repos.d/启用 "codeready-builder-for-rhel-8-$(arch)-rpms" 存储库(EPEL包可能依赖),EPEL支持x86_64,aarch64等架构subscription-managerrepos --enable "codeready-builder-for-rhel-8-$(arch)-rpms"启用epel-testingdnf config-manager --set-enabled epel-testing禁用epel-testingdnf config-manager --set-disable epel-testing临时使用epel-testingdnf upgrade --enablerepo=epel-testingdnf install --enablerepo=epel-testing 更换镜像sudosed -e s|^metalink=|metalink=|g \
-e s|^baseurl=https\?://download.fedoraproject.org/pub/epel/|baseurl=https://mirrors.ustc.edu.cn/epel/|g \
-e s|^baseurl=https\?://download.example/pub/epel/|baseurl=https://mirrors.ustc.edu.cn/epel/|g \
-i.bak \
/etc/yum.repos.d/epel.repo
WIFI
使用有线网卡,而且没有或不使用无线网卡的可以跳过此步骤。 安装时可以联网,最小安装后WIFI无法使用的也可以尝试按下面方法进行解决。
查看网络配置:可以看到显示的wl开头的网卡适配器没有IP地址,或者有IPv6地址,但是ping不通外网ifconfig-a查看配置文件,SSID名称为你连接无线路由的名称ls-alh /etc/sysconfig/network-scriptscat/etc/sysconfig/network-scripts/ifcfg-{SSID}由于目前IPv6的可用性处于薛定谔的猫状态,先禁用IPv6,可以启动图形界面禁用nmtui再次查看,应该看到已禁用IPv6cat/etc/sysconfig/network-scripts/ifcfg-{SSID} | grep IPv6_DISABLED尝试启用无线网络连接"wlo1",具体名字根据上一个命令结果nmclic up wlo1命令提示失败原因Error: Connection activation failed: No suitable device found for this connection(device lo not available because device is strictly unmanaged)查看服务状态sudosystemctl status NetworkManager可以看到提示wifi plugin not available; creating generic device
如果是完整DVD安装,可以尝试使用yum/dnf命令安装:
sudoyum install NetworkManager-wifi如果提示当前用户不在sudoers中时,执行visudo,以username用户名只在本机可运行yum/dnf为例添加一行如下(不含):username localhost=/usr/bin/yum,/usr/bin/dnf,/usr/bin/dnf-3更改完后,重新执行安装命令sudodnf install NetworkManager-wifi
如果只有无线网络,但安装了双系统,且Windows系统与Linux在不同的硬盘上时,可以考虑在Windows系统使用WSL来解决:
wsl--updatewsl--shutdown显示支持的linux发行版,显示结果分两列,一列名字(下一个安装命令会用到),另一列为还是名字(全名,可能包含版本等其他信息)wsl--list --online选取其中一个发行版,进行安装wsl--install -d Debian查看磁盘信息diskpartlistdiskWSL不能挂载启动分区所在磁盘,找到要挂载的磁盘序号(假设为0)selectdisk 0找到要挂载的分区号listpartition挂载整个磁盘时也可以使用wmic diskdrive list brief来查看磁盘信息装载指定分区,命令格式:wsl --mount --partition --type wsl--mount \\.\PHYSICALDRIVE0 --partition 1 --type ext4复制rpm包及依赖包到redhat系统的目录cp/mnt/d/Downloads/*.rpm /mnt/uuid/home/pi/Downloads/卸载wsl--unmount \\.\PHYSICALDRIVE0如果卸载失败,则退出wsl来卸载wsl--shutdown进入Linux系统rpm-i NetworkManager-wifi*.rpm如果安装失败,并提示依赖,则先安装依赖
GUI
如果使用启动镜像最小化安装,启动后是没有图形界面的。
安装图形界面的方式如下:
查看程序组dnfgrouplist安装dnf groupinstall"Server with GUI"设置启动后默认界面systemctlset-defaultgraphical.target使用GUI界面systemctl isolate graphical.target重启reboot
Windows文件格式读写
双系统没有虚拟机方便的一点是,切换系统需要重启。但好处是性能会比虚拟机高很多。 但有时候,Windows用的比较顺手,有的时候需要Redhat来试验些东西,而且有些东西也只能用Linux来实验。 这时我们需要打通两个系统的文件,当然通过网盘,或者自建NAS也是可行,但毕竟又多了些条件。 我们需要通过U盘,甚至直接读写NTFS文件系统。 如果是U盘,一般建议格式化为exFAT。
fuse-exfat可以用于读写exfat格式,在https://access.redhat.com/downloads/content/package-browser网页搜索,可以发现它不在正式软件包通过搜索exfat,比如网站https://pkgs.org/search/?q=exfat,我们找到下载地址,同时发现一个可选的工具exfatprogs在EPELsudodnf install https://download1.rpmfusion.org/free/el/updates/8/x86_64/f/fuse-exfat-1.3.0-3.el8.x86_64.rpmsudodnf install exfatprogsntfs-3g和ntfsprogs都在EPEL,ntfs-3g用于挂载及读写,ntfsprogs提供了额外的工具(如格式化成NTFS、解密、列出目录、输出文件内容)sudodnf install ntfsprogs查看磁盘sudofdisk -l挂载U盘(假定为sdb1,让系统自动识别文件格式)mount/dev/sdb1 /media挂载Windwos文件系统mount.ntfs-3g/dev/sda0 /mnt/c可以编辑/etc/fstab,在开机后自动挂载
重建启动菜单
安装完Linux后,如果Windows启动项丢失,在grub启动界面按"c"健,使用如下命令到Windows系统:
查看硬盘ls根据硬盘和分区设置setroot=(hd0,gpt2)如果是BIOS引导chainloader +1如果是UEFI引导chainloader/EFI/Microsoft/bootmgfw.efi启动boot
如果直接格式化原来的EFI分区,通过上述方法是无法启动的。 因为UEFI要求磁盘必须以GPT方式分区,分区后多个系统的启动文件会在同一个分区的不同文件夹下!当我们格式化分区,安装其他系统时,相当于丢失原有的启动文件,自然无法多系统启动。 此时,我们可以利用多系统启动文件在同一个分区这个特性,再安装原来的Windows操作系统到另一个分区上。 安装成功后,分区信息在Linux系统信息如下:
[root@localhost]sudofdisk-lDisk/dev/nvme0n1:238.5GiB,256060514304字节,500118192个扇区单元:扇区/1*512=512字节扇区大小(逻辑/物理):512字节/512字节I/O大小(最小/最佳):512字节/512字节磁盘标签类型:gpt磁盘标识符:27EE6043-B2C3-42B1-B1A6-2C3F85DF9A68设备起点末尾扇区大小类型/dev/nvme0n1p12048206847204800100MEFI系统/dev/nvme0n1p22068482396153276816MMicrosoft保留/dev/nvme0n1p323961620861337520837376099.4GMicrosoft基本数据/dev/nvme0n1p42086133762099527671339392654MWindows恢复环境/dev/nvme0n1p520995276821204991920971521GLinux文件系统/dev/nvme0n1p621204992031692390310487398450GLinuxLVM/dev/nvme0n1p731692390450011750318319360087.4GMicrosoft基本数据[root@localhost]sudomount/dev/nvme0n1p1/media[root@localhost]sudols-alh/media/EFI总用量24Kdrwx------.5rootroot2.0K12月1515:42.drwx------.3rootroot16K1月11970..drwx------.2rootroot2.0K12月1515:44BOOTdrwx------.4rootroot2.0K12月1719:37Microsoftdrwx------.3rootroot2.0K12月1719:42redhat[root@localhost]sudoumount/dev/nvme0n1p1
由于Linux缺乏编辑BCD的工具,回到新安装的Windows系统,下载bootice双击运行,然后选择加载当前系统BCD,在智能模式下,将Windows启动分区设置到原来的Windows分区,最好保存系统设置退出程序,重启便可以回到原来的Windows系统。
虽然将原来的Windows系统找回变得可启动,但是Linux的GRUB2启动选项并没有Windows菜单。 每次都通过设置UEFI启动顺序来控制使用哪个系统,远没有GRUB2菜单选择方便。 此时需要再登入Linux系统
不同的Linux发行版,EFI目录不一样,比如centos可能是/EFI/centos,安装redhat将EFI分区挂载在/boot/efi目录下,使用如下命令查看cat/boot/efi/EFI/redhat/grub.cfg终端输出30_os-prober信息如下:BEGIN /etc/grub.d/30_os-proberEND /etc/grub.d/30_os-probersudogrub2-mkconfig
正常情况下,在命令运行完后,终端会看到如下信息:
BEGIN /etc/grub.d/30_os-proberFound Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
menuentryWindows Boot Manager (on /dev/nvme0n1p1)--class windows --class os$menuentry_id_optionosprober-efi-A25C-CF85{
insmod part_gpt
insmod fatif[ x$feature_platform_search_hint= xy ];thensearch --no-floppy --fs-uuid --set=root A25C-CF85elsesearch --no-floppy --fs-uuid --set=root A25C-CF85fichainloader /EFI/Microsoft/Boot/bootmgfw.efi
}Other OS found, undo autohiding of menu unless menu_auto_hide=2if["${orig_timeout_style}"-a"${menu_auto_hide}"!="2"];thensettimeout_style=${orig_timeout_style}settimeout=${orig_timeout}fiEND /etc/grub.d/30_os-prober
此时准备重新生成grub.cfg。
sudocat /etc/default/grub | grep GRUB_DISABLE_OS_PROBER如果没有此配置,则追加配置:GRUB_DISABLE_OS_PROBER=falsesudocp /boot/efi/EFI/redhat/grub.cfg /boot/efi/EFI/redhat/grub.cfg.baksudorm -rf /boot/efi/EFI/redhat/grub.cfgsudogrub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfgsudo rm -rf /boot/efi/EFI/redhat/grub.cfg.bak
再查看grub.cfg可以看到原先的30_os-prober之间有了一个menuentry,内容如下:
BEGIN /etc/grub.d/30_os-probermenuentryWindows Boot Manager (on /dev/nvme0n1p1)--class windows --class os$menuentry_id_optionosprober-efi-A25C-CF85{
insmod part_gpt
insmod fatif[ x$feature_platform_search_hint= xy ];thensearch --no-floppy --fs-uuid --set=root A25C-CF85elsesearch --no-floppy --fs-uuid --set=root A25C-CF85fichainloader /EFI/Microsoft/Boot/bootmgfw.efi
}Other OS found, undo autohiding of menu unless menu_auto_hide=2if["${orig_timeout_style}"-a"${menu_auto_hide}"!="2"];thensettimeout_style=${orig_timeout_style}settimeout=${orig_timeout}fiEND /etc/grub.d/30_os-prober
重启查看GRUB2启动菜单,如果出现Windows菜单,并可正常进入Windows系统便说明修复成功。 如果需要将Windows系统设置为默认启动系统,可以采取如下方式:
根据原启动界面的顺序,比如Linux一般又2个启动项,那么Windows是第三个启动项sudo grub2-set-default2上述方法在新安装其他操作系统时可能需要重新调整,为避免调整,可以采用下面一种方式(但注意menuentry修改时要重新运行设置默认启动系统命令sudo grub2-set-defaultWindows Boot Manager (on /dev/nvme0n1p1)sudo reboot
我告诉你msdn版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!