计算化学公社

标题: 手动安装AlmaLinux 9的WSL [打印本页]

作者
Author:
Daniel_Arndt    时间: 2022-7-13 08:50
标题: 手动安装AlmaLinux 9的WSL
我从“秋水逸冰”的博客 https://teddysun.com/646.html 看到用qcow2镜像可以制作出WSL。以下就用AlmaLinux 9为例,记录一下我的尝试过程。首先要下载qcow2镜像。我是从 https://repo.almalinux.org/almalinux/9/cloud/x86_64/images/ 下载了AlmaLinux-9-GenericCloud-9.0-20220527.x86_64.qcow2。接下来的操作,我是在虚拟机中进行的。在qcow2文件所处的目录里打开命令行,输入
  1. qemu-img convert -f qcow2 -O raw AlmaLinux-9-GenericCloud-9.0-20220527.x86_64.qcow2 AlmaLinux.raw
复制代码
然后当前目录下会出现一下AlmaLinux.raw文件。下面的操作要在root用户下进行。输入
  1. losetup /dev/loop1 AlmaLinux.raw
  2. kpartx -a /dev/loop1
  3. fdisk -l /dev/loop1
复制代码
输出如下:
Disk /dev/loop1: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 2A8720FE-0736-4F50-B4FD-41F7B3A3197A

Device         Start      End  Sectors  Size Type
/dev/loop1p1    2048     4095     2048    1M BIOS boot
/dev/loop1p2    4096   413695   409600  200M EFI System
/dev/loop1p3  413696  1437695  1024000  500M Linux filesystem
/dev/loop1p4 1437696 20969471 19531776  9.3G Linux filesystem

需要用到的块设备肯定是“Type”为“Linux filesystem”的。但输出中有两个(使用其他的Linux发行版的qcow2文件做到这一步时的输出可能与上述内容不同)。我就先挑其中“Size”更大的一个块设备试试。所以输入
  1. mount /dev/mapper/loop1p4 /mnt
复制代码
然后进入挂载点
  1. cd /mnt
复制代码
再查看一下,输入
  1. ls -la
复制代码
输出如下:
total 16
dr-xr-xr-x. 18 root root  235 May 27 08:42 .
dr-xr-xr-x. 17 root root  224 Nov 12  2021 ..
dr-xr-xr-x.  2 root root    6 Mar 25 05:42 afs
lrwxrwxrwx.  1 root root    7 Mar 25 05:42 bin -> usr/bin
drwxr-xr-x.  2 root root    6 May 27 08:36 boot
drwxr-xr-x.  2 root root    6 May 27 08:36 dev
drwxr-xr-x. 87 root root 8192 May 27 08:42 etc
drwxr-xr-x.  2 root root    6 Mar 25 05:42 home
lrwxrwxrwx.  1 root root    7 Mar 25 05:42 lib -> usr/lib
lrwxrwxrwx.  1 root root    9 Mar 25 05:42 lib64 -> usr/lib64
drwxr-xr-x.  2 root root    6 Mar 25 05:42 media
drwxr-xr-x.  2 root root    6 Mar 25 05:42 mnt
drwxr-xr-x.  2 root root    6 Mar 25 05:42 opt
drwxr-xr-x.  2 root root    6 May 27 08:36 proc
dr-xr-x---.  2 root root   91 May 27 08:42 root
drwxr-xr-x.  2 root root    6 May 27 08:36 run
lrwxrwxrwx.  1 root root    8 Mar 25 05:42 sbin -> usr/sbin
drwxr-xr-x.  2 root root    6 Mar 25 05:42 srv
drwxr-xr-x.  2 root root    6 May 27 08:36 sys
drwxrwxrwt.  6 root root   75 May 27 08:42 tmp
drwxr-xr-x. 12 root root  144 May 27 08:37 usr
drwxr-xr-x. 19 root root 4096 May 27 08:40 var

看起来没什么问题,说明之前挑块设备挑对了。接着输入
  1. tar zcf /root/rootfs.tar.gz *
复制代码
打包完成之后,输入
  1. ll -h /root/rootfs.tar.gz
复制代码
输出如下:
-rw-r--r--. 1 root root 291M Jun  1 18:32 /root/rootfs.tar.gz

看起来没什么问题。然后输入
  1. cd ~
复制代码
接着输入
  1. umount /mnt
  2. kpartx -d /dev/loop1
  3. losetup -d /dev/loop1
复制代码
接下来就要把rootfs.tar.gz拷贝出来。之后就可以关闭虚拟机了。
由于我办公室的电脑用的是Windows英文版,所以接下来的步骤中有些内容要是生搬硬套到Windows中文版上的话,可能会有小问题。从 https://github.com/yuk7/wsldl/releases 下载最近的icons.zip,然后解压出里面的Alma.exe。新建一个文件夹,如D:\wsl1。把rootfs.tar.gz和Alma.exe移动到该新文件夹下。接下来,最好禁止杀毒软件运行,不然可能出现Alma.exe被误杀的情况。我双击Alma.exe,待安装完成、一切正常后,输入
  1. yum update
复制代码
关闭AlmaLinux 9的WSL。为了方便启动,右击开始按钮,打开有管理员权限的命令提示符。输入
  1. powershell
复制代码
然后输入
  1. $userenv = [System.Environment]::GetEnvironmentVariable("Path", "User")
  2. [System.Environment]::SetEnvironmentVariable("PATH", $userenv + ";D:\wsl1", "User")
复制代码
然后“D:\wsl1”就会出现在“Environment Variables”里面的“User variables for”的“Path”里面。然后要运行AlmaLinux 9的时候,就同时按下Windows徽标键和R,输入
  1. alma
复制代码
就行了(Windows里面涉及到文件名的时候一般不区分大小写),不需要再在文件管理器里面打开D:\wsl1文件夹了。
接下来就可以使用AlmaLinux 9的WSL了。


做完上述工作后,我根据以前安装AlmaLinux 8的WSL时的经验,打开刚刚安装好的WSL,输入
  1. yum install glibc-langpack-en
复制代码
以防更新时出现“Failed to set locale, defaulting to C.UTF-8”的报错。然后输入
  1. passwd root
复制代码
给root用户设置了一个密码后,输入
  1. useradd username -p password
复制代码
(里面的“username”替换成用户名,“password”替换成密码)新建了一个带密码的普通用户。接着要把该普通用户添加到sudo用户组里面。输入
  1. less /etc/sudoers
复制代码
用键盘上的Page Up、Page Down键或上(↑)、下(↓)方向键翻阅,发现“## Allows people in group wheel to run all commands”这一行下面的一行是“%wheel  ALL=(ALL)       ALL”,说明不需要做什么改动(如果“%wheel”前面有一个“#”加上一个空格的话,要用文本编辑器打开/etc/sudoers,删除“#”和空格),直接输入
  1. q
复制代码
退出less。
输入
  1. usermod -aG wheel username
复制代码
(里面的“username”替换成用户名,如果用的Linux发行版不是CentOS、AlmaLinux或Rocky Linux,把普通用户添加到sudo用户组里就不能按上述代码操作,估计得运行“usermod -aG sudo username”)接下来,查看这个普通用户的UID,输入
  1. id -u username
复制代码
(里面的“username”替换成用户名)输出为“1000”。关闭AlmaLinux 9的WSL。同时按下Windows徽标键和R,输入
  1. regedit
复制代码
打开注册表编辑器后,在左边的树里面找到Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss,根据DistributionName和BasePath(安装路径),找到其中对应着AlmaLinux的那个键值。也就是找到BasePath为D:\wsl1的那个键值。右击DefaultUid,在弹出菜单中单击“Modify...”,先把Base改成Decimal,然后输入之前找到的UID,也就是1000。再次打开AlmaLinux 9的WSL,默认用户变成了普通用户。
接下来还有个问题,就是打开Alma.exe后虽然出现了普通用户,但默认的目录却对应着Windows操作系统下的D:\wsl1。打开AlmaLinux 9的WSL,输入
  1. su
复制代码
切换到root用户。输入
  1. yum install emacs-nox
复制代码
这样就有了一个文本编辑器。接着输入
  1. exit
复制代码
回到普通用户,输入
  1. emacs -nw $HOME/.bash_profile
复制代码
在文件末尾加上“cd $HOME”后,先按下Ctrl键不松手,然后按一下X,再按一下S,接着松开Ctrl键,就保存了。接着,先按下Ctrl键不松手,然后按一下X,再按一下C,接着松开Ctrl键,就退出文本编辑器了。然后关闭AlmaLinux 9的WSL,再次打开,默认的目录就对应着Windows操作系统下的D:\wsl1\rootfs\home\username(里面的“username”替换成用户名)了。如果电脑上之前装了MobaXterm的话,可以打开MobaXterm看一下,里面的“User sessions”里面,应该多出了一个“WSL-Alma”。


作者
Author:
Daniel_Arndt    时间: 2022-7-13 09:07
本帖最后由 Daniel_Arndt 于 2022-7-13 09:09 编辑

我安装AlmaLinux是为了使用compliance的。在此一并记录一下安装的过程。
首先,安装一些依赖,输入
  1. yum install gcc gcc-c++ gcc-gfortran blas lapack atlas atlas-devel
复制代码

在root用户下,用文本编辑器打开/etc/yum.repos.d/almalinux-crb.repo文件(AlmaLinux 9中,PowerTools改名叫CRB),把里面的三处“enabled=0”都改成“enabled=1”。之后安装另外两个依赖,输入
  1. yum install blas-devel lapack-devel
复制代码

https://rpmfind.net/linux/RPM/ce ... 5-6.el8.x86_64.html 下载gtkmm24-2.24.5-6.el8.x86_64.rpm,从 https://rpmfind.net/linux/RPM/ce ... 5-6.el8.x86_64.html 下载gtkmm24-devel-2.24.5-6.el8.x86_64.rpm,从 https://koji.fedoraproject.org/koji/buildinfo?buildID=506167 下载pangox-compat-0.0.2-2.el7.x86_64.rpm和pangox-compat-devel-0.0.2-2.el7.x86_64.rpm,从 https://koji.fedoraproject.org/koji/buildinfo?buildID=695339 下载gtkglext-devel-1.2.0-21.el7.x86_64.rpm和gtkglext-libs-1.2.0-21.el7.x86_64.rpm,从 https://koji.fedoraproject.org/koji/buildinfo?buildID=1188890 下载gtkglextmm-1.2.0-30.fc30.x86_64.rpm和gtkglextmm-devel-1.2.0-30.fc30.x86_64.rpm,从 https://koji.fedoraproject.org/koji/buildinfo?buildID=1187812 下载gmm-devel-5.2-3.fc30.noarch.rpm。把这几个rpm文件放到AlmaLinux 9的WSL里面的一个目录下,输入
  1. chmod 774 *.rpm
复制代码

接着,输入
  1. yum localinstall gtkmm24-2.24.5-6.el8.x86_64.rpm
  2. yum localinstall gtkmm24-devel-2.24.5-6.el8.x86_64.rpm
  3. yum localinstall pangox-compat-0.0.2-2.el7.x86_64.rpm
  4. yum localinstall gtkglext-libs-1.2.0-21.el7.x86_64.rpm
  5. yum localinstall gtkglextmm-1.2.0-30.fc30.x86_64.rpm
  6. yum localinstall pangox-compat-devel-0.0.2-2.el7.x86_64.rpm
  7. yum localinstall gtkglext-devel-1.2.0-21.el7.x86_64.rpm
  8. yum localinstall gtkglextmm-devel-1.2.0-30.fc30.x86_64.rpm
  9. yum localinstall gmm-devel-5.2-3.fc30.noarch.rpm
复制代码

之后把compliance源代码的压缩包放到AlmaLinux 9的WSL里面,输入
  1. chmod 774 compliance-3.0.2.tar.gz
复制代码

给它解压缩,输入
  1. tar xvf compliance-3.0.2.tar.gz
复制代码

进入解压后生成的目录,运行
  1. ./configure
  2. make
  3. make install
复制代码

在MobaXterm中打开AlmaLinux 9的WSL,运行compliance,一切正常。退出compliance后,命令行里面可能会有跟“/home/username/.local/share/recently-used.xbel”(里面的“username”替换成用户名)有关的输出,不影响使用。如果嫌烦的话,解决办法很简单,打开AlmaLinux 9的WSL,在普通用户下依次执行以下几个命令
  1. cd $HOME
  2. mkdir .local
  3. cd .local
  4. mkdir share
  5. cd share
  6. touch recently-used.xbel
复制代码
(, 下载次数 Times of downloads: 0) (, 下载次数 Times of downloads: 0)

(, 下载次数 Times of downloads: 0) (, 下载次数 Times of downloads: 0)

(, 下载次数 Times of downloads: 0) (, 下载次数 Times of downloads: 0)

(, 下载次数 Times of downloads: 0) (, 下载次数 Times of downloads: 0)

(, 下载次数 Times of downloads: 0) (, 下载次数 Times of downloads: 0)

(, 下载次数 Times of downloads: 0)




作者
Author:
护卫天使    时间: 2022-11-23 15:17
Daniel_Arndt 发表于 2022-7-13 09:07
我安装AlmaLinux是为了使用compliance的。在此一并记录一下安装的过程。
首先,安装一些依赖,输入

您好,请问一下:把这几个rpm文件放到AlmaLinux 9的WSL里面的一个目录下。这我百度了也不知道怎么操作,望指导一下,感谢。
作者
Author:
Daniel_Arndt    时间: 2022-11-24 10:22
护卫天使 发表于 2022-11-23 15:17
您好,请问一下:把这几个rpm文件放到AlmaLinux 9的WSL里面的一个目录下。这我百度了也不知道怎么操作, ...

如果你是原原本本地按照我在一楼写的内容来做的话,那么你的目录应该是D:\wsl1\rootfs\home\username(“username”就是自己定义的用户名)的一个子目录;如果你是从Microsoft Store安装的AlmaLinux 9的话,就有点曲折了,你首先得进入AlmaLinux 9的WSL并创建一个文件名比较复杂的文件。如果你默认的WSL是AlmaLinux 9的话(如果你电脑上只有一个WSL的话,那它肯定是默认的),直接打开资源管理器,单击一下地址栏,在地址栏输入“bash”后回车,然后输入“touch filename”(把“filename”替换成一个复杂的文件名)。之后安装Everything( https://www.voidtools.com/ ),右击任务栏右下角Everything的图标,在弹出菜单中单击“Show Search Window”,在Everything的搜索框里输入刚才的那个文件名,找到刚创建的文件后(Everything里可以按“Date Modified”排序),右击该文件,在弹出菜单中单击“Open Path”,然后你就可以把rpm文件放进去了。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3