u盘redhat安装教程 (U盘安装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”放到机械硬盘上。

dnfmedia.repo

设置软件包地址(默认指向安装光驱) 。

在RHEL8,yum只是dnf的一个软链接。

which yum# /usr/bin/yumls -alh /usr/bin/yum# dnf-3ls -alh /usr/bin/dnf# dnf-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 Linux 8 for 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 Linux 8 for 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 = 1redhat.repo

在较高版本的RHEL,安装时就要求联网,输入账号信息进行激活,就不需要此步骤。 较低版本的redhat.repo文件由rhsm自动生成,没有配置任何信息。可以按照如下步骤操作:

# 注册,填写在红帽官网注册的用户名和密码 subscription-manager register# 注册成功后,redhat.repo内容就会被修改,配置完成# 查看所有repo,会发现现在仓库标识多了rhel-8-for-x86_64-appstream-rpms和rhel-8-for-x86_64-baseos-rpmsyum repolist# 查看redhat.repo也能看到文件内容多了很多信息cat /etc/yum.repos.d/redhat.repo# dnf clean all# dnf makecache# 如果不想注册到红帽,或者因网络问题,注册不了,可以下载Centos-8.repo,将内容复制到redhat.repocurl -o Centos-8.repo http://mirrors.aliyun.com/repo/Centos-8.repocat Centos-8.repo >> /etc/yum.repos.d/redhat.repo# 除aliyun外,清华\中科大\华为等大学/公司也提供了镜像地址epel.repo

EPEL(Extra Packages for Enterprise Linux)是社区志愿者为RHEL系统(及其衍生系统)提供的高质量附加软件包仓库。

# 安装软件包yum install 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-manager repos --enable "codeready-builder-for-rhel-8-$(arch)-rpms" # 启用epel-testing# dnf config-manager --set-enabled epel-testing# 禁用epel-testing# dnf config-manager --set-disable epel-testing # 临时使用epel-testing# dnf upgrade --enablerepo=epel-testing# dnf install <foo> --enablerepo=epel-testing# 更换镜像sudo sed -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.repoWIFI

使用有线网卡,而且没有或不使用无线网卡的可以跳过此步骤。 安装时可以联网,最小安装后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",具体名字根据上一个命令结果nmcli c up wlo1# 命令提示失败原因# Error: Connection activation failed: No suitable device found for this connection(device lo not available because device is strictly unmanaged)# 查看服务状态sudo systemctl status NetworkManager# 可以看到提示# 'wifi' plugin not available; creating generic device

如果是完整DVD安装,可以尝试使用yum/dnf命令安装:

sudo yum install NetworkManager-wifi# 如果提示当前用户不在sudoers中时,执行visudo,以“username”用户名只在本机可运行yum/dnf为例添加一行如下(不含“#”):# username localhost=/usr/bin/yum,/usr/bin/dnf,/usr/bin/dnf-3# 更改完后,重新执行安装命令sudo dnf install NetworkManager-wifi

如果只有无线网络,但安装了双系统,且Windows系统与Linux在不同的硬盘上时,可以考虑在Windows系统使用WSL来解决:

wsl --updatewsl --shutdown# 显示支持的linux发行版,显示结果分两列,一列名字(下一个安装命令会用到),另一列为还是名字(全名,可能包含版本等其他信息)wsl --list --online# 选取其中一个发行版,进行安装wsl --install -d Debian# 查看磁盘信息diskpartlist disk# WSL不能挂载启动分区所在磁盘,找到要挂载的磁盘序号(假设为0)select disk 0# 找到要挂载的分区号list partition## 挂载整个磁盘时也可以使用“wmic diskdrive list brief”来查看磁盘信息# 装载指定分区,命令格式:wsl --mount <DiskPath> --partition <PartitionNumber> --type <Filesystem>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

如果使用启动镜像最小化安装,启动后是没有图形界面的。

安装图形界面的方式如下:

# 查看程序组dnf group list# 安装dnf groupinstall "Server with GUI"# 设置启动后默认界面systemctl set-default graphical.target# 使用GUI界面systemctl isolate graphical.target# 重启# rebootWindows文件格式读写

双系统没有虚拟机方便的一点是,切换系统需要重启。但好处是性能会比虚拟机高很多。 但有时候,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在EPELsudo dnf install https://download1.rpmfusion.org/free/el/updates/8/x86_64/f/fuse-exfat-1.3.0-3.el8.x86_64.rpmsudo dnf install exfatprogs# ntfs-3g和ntfsprogs都在EPEL,ntfs-3g用于挂载及读写,ntfsprogs提供了额外的工具(如格式化成NTFS、解密、列出目录、输出文件内容)sudo dnf install ntfsprogs# 查看磁盘sudo fdisk -l# 挂载U盘(假定为sdb1,让系统自动识别文件格式)mount /dev/sdb1 /media# 挂载Windwos文件系统mount.ntfs-3g /dev/sda0 /mnt/c# 可以编辑/etc/fstab,在开机后自动挂载重建启动菜单

安装完Linux后,如果Windows启动项丢失,在grub启动界面按"c"健,使用如下命令到Windows系统:

# 查看硬盘ls# 根据硬盘和分区设置set root=(hd0,gpt2)# 如果是BIOS引导# chainloader +1# 如果是UEFI引导chainloader /EFI/Microsoft/bootmgfw.efi# 启动boot

如果直接格式化原来的EFI分区,通过上述方法是无法启动的。 因为UEFI要求磁盘必须以GPT方式分区,分区后多个系统的启动文件会在同一个分区的不同文件夹下!当我们格式化分区,安装其他系统时,相当于丢失原有的启动文件,自然无法多系统启动。 此时,我们可以利用多系统启动文件在同一个分区这个特性,再安装原来的Windows操作系统到另一个分区上。 安装成功后,分区信息在Linux系统信息如下:

[root@localhost]# sudo fdisk -lDisk /dev/nvme0n1:238.5 GiB,256060514304 字节,500118192 个扇区单元:扇区 / 1 * 512 = 512 字节扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:gpt磁盘标识符:27EE6043-B2C3-42B1-B1A6-2C3F85DF9A68设备 起点 末尾 扇区 大小 类型/dev/nvme0n1p1 2048 206847 204800 100M EFI 系统/dev/nvme0n1p2 206848 239615 32768 16M Microsoft 保留/dev/nvme0n1p3 239616 208613375 208373760 99.4G Microsoft 基本数据/dev/nvme0n1p4 208613376 209952767 1339392 654M Windows 恢复环境/dev/nvme0n1p5 209952768 212049919 2097152 1G Linux 文件系统/dev/nvme0n1p6 212049920 316923903 104873984 50G Linux LVM/dev/nvme0n1p7 316923904 500117503 183193600 87.4G Microsoft 基本数据[root@localhost]# sudo mount /dev/nvme0n1p1 /media[root@localhost]# sudo ls -alh /media/EFI总用量 24Kdrwx------. 5 root root 2.0K 12月 15 15:42 .drwx------. 3 root root 16K 1月 1 1970 ..drwx------. 2 root root 2.0K 12月 15 15:44 BOOTdrwx------. 4 root root 2.0K 12月 17 19:37 Microsoftdrwx------. 3 root root 2.0K 12月 17 19:42 redhat[root@localhost]# sudo umount /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-prober ###### END /etc/grub.d/30_os-prober ###sudo grub2-mkconfig

正常情况下,在命令运行完后,终端会看到如下信息:

### BEGIN /etc/grub.d/30_os-prober ###Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efimenuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-A25C-CF85' {insmod part_gptinsmod fatif [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root A25C-CF85else search --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" ]; then set timeout_style=${orig_timeout_style} set timeout=${orig_timeout}fi### END /etc/grub.d/30_os-prober ###

此时准备重新生成grub.cfg。

sudo cat /etc/default/grub | grep GRUB_DISABLE_OS_PROBER# 如果没有此配置,则追加配置:GRUB_DISABLE_OS_PROBER=falsesudo cp /boot/efi/EFI/redhat/grub.cfg /boot/efi/EFI/redhat/grub.cfg.baksudo rm -rf /boot/efi/EFI/redhat/grub.cfgsudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg# sudo rm -rf /boot/efi/EFI/redhat/grub.cfg.bak

再查看grub.cfg可以看到原先的30_os-prober之间有了一个menuentry,内容如下:

### BEGIN /etc/grub.d/30_os-prober ###menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-A25C-CF85' {insmod part_gptinsmod fatif [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root A25C-CF85else search --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" ]; then set timeout_style=${orig_timeout_style} set timeout=${orig_timeout}fi### END /etc/grub.d/30_os-prober ###

重启查看GRUB2启动菜单,如果出现Windows菜单,并可正常进入Windows系统便说明修复成功。 如果需要将Windows系统设置为默认启动系统,可以采取如下方式:

# 根据原启动界面的顺序,比如Linux一般又2个启动项,那么Windows是第三个启动项sudo grub2-set-default 2# 上述方法在新安装其他操作系统时可能需要重新调整,为避免调整,可以采用下面一种方式(但注意menuentry修改时要重新运行设置默认启动系统命令sudo grub2-set-default 'Windows Boot Manager (on /dev/nvme0n1p1)'sudo reboot