当初 AlmaLinuxを作ろうとしたが挫折した... 触感的でうまい方法はないものか..

参照先 https://docs.rockylinux.org/guides/interoperability/rocky_to_wsl_howto/, https://daimaohsx.dip.jp/wordpress/2021/06/28/try-running-rocky-linux-on-wsl2/

すでにWSLでubuntu20.04な環境が整備されているのが前提. このubuntu20.04 on WSLにてRockyLinuxのイメージを作り上げ、WSLに載せる.

下拵え

WSLで作ったubuntu20.04でRockyLinuxのイメージを作るのだが、調理器具をそろえる

saber@st200e:~$ sudo apt update
saber@st200e:~$ sudo apt install rinse
saber@st200e:~$ dpkg -L rinse               <-- 「rinse」パッケージとしてどこに何がインストールされているか表示
/.
/etc
/etc/rinse
/etc/rinse/centos-4.packages
 :
saber@st200e:~$ apt show rinse              <-- 「rinse」パッケージの情報
Package: rinse
Version: 3.5
Priority: extra
Section: universe/admin
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Thomas Lange <lange@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 266 kB
Depends: wget, libterm-size-perl, libwww-perl, perl, rpm, cpio (>= 2.11+dfsg-4.1), rpm2cpio
Download-Size: 28.7 kB
APT-Manual-Installed: yes
APT-Sources: http://archive.ubuntu.com/ubuntu focal/universe amd64 Packages
Description: RPM installation environment
 This is a tool for bootstrapping a basic RPM-based distribution of
 GNU/Linux.
 .
 It is comparable in purpose to the standard Debian debootstrap utility,
 but works upon RPM-based distributions instead.
 .
 Rinse can setup 32 and 64-bit installations of:
  * CentOS
  * Scientific Linux CERN
  * Fedora
  * OpenSUSE
 
saber@st200e:~$

CentOS8向けのパッケージをRockyLinux向けに修正する

「/etc/rinse/」にイメージ作成のテンプレートが用意されている

saber@st200e:~$ ls -CF /etc/rinse/
centos-4.packages   fedora-15.packages  fedora-27.packages      opensuse-10.2.packages  opensuse-42.2.packages
centos-5.packages   fedora-16.packages  fedora-28.packages      opensuse-10.3.packages  rhel-5.packages
centos-6.packages   fedora-18.packages  fedora-7.packages       opensuse-11.0.packages  rinse.conf
centos-7.packages   fedora-19.packages  fedora-8.packages       opensuse-11.1.packages  slc-5.packages
centos-8.packages   fedora-20.packages  fedora-9.packages       opensuse-11.2.packages  slc-6.packages
fedora-10.packages  fedora-21.packages  fedora-core-4.packages  opensuse-11.3.packages
fedora-12.packages  fedora-22.packages  fedora-core-5.packages  opensuse-12.1.packages
fedora-13.packages  fedora-25.packages  fedora-core-6.packages  opensuse-12.3.packages
fedora-14.packages  fedora-26.packages  opensuse-10.1.packages  opensuse-13.1.packages
saber@st200e:~$

この中でRockyLinuxに近い「centos-8.packages」を「rocky-8.packages」とコピーしてRockyLinux向けの設定ファイルにする

saber@st200e:~$ sudo cp /etc/rinse/centos-8.packages /etc/rinse/rocky-8.packages

そしてこの「/etc/rinse/rocky-8.packages」に修正を加える

--- /etc/rinse/rocky-8.packages.orig    2021-11-22 23:26:06.742355300 +0900
+++ /etc/rinse/rocky-8.packages 2021-11-22 23:28:06.872355300 +0900
@@ -1,7 +1,7 @@
 # list of packages in official docker container
-centos-release
-centos-gpg-keys
-centos-repos
+rocky-release
+rocky-gpg-keys
+rocky-repos
 tzdata
 ncurses-base
 dnf-data
@@ -170,4 +170,13 @@
 kexec-tools
 tar
 hostname
+glibc-langpack-en
+libmodulemd
+libzstd
+passwd
+sudo
+cracklib-dicts
+openssh-clients
+python3-dbus
+dbus-glib
 #langpacks-en

rinseの設定にrocky-8の情報を加える

編集対象は「/etc/rinse/rinse.conf」です
rockyを作るにあたってのリポジトリの登録です

--- /etc/rinse/rinse.conf.orig  2021-11-22 23:31:44.742355300 +0900
+++ /etc/rinse/rinse.conf       2021-11-22 23:32:56.912355300 +0900
@@ -175,3 +175,6 @@
 [opensuse-42.2]
 mirror       = http://download.opensuse.org/distribution/leap/42.2-Current/repo/oss/suse/i586/
 mirror.amd64 = http://download.opensuse.org/distribution/leap/42.2-Current/repo/oss/suse/x86_64/
+
+[rocky-8]
+mirror.amd64 = http://ftp.riken.jp/Linux/rocky/8/BaseOS/x86_64/os/Packages/

post-installスクリプトの修正

これもCentOS8向けをRocky8に仕立て修正を加える

saber@st200e:~$ sudo cp -R /usr/lib/rinse/centos-8 /usr/lib/rinse/rocky-8

っで修正(14行目に追加の文言を入れる)

--- /usr/lib/rinse/centos-8/post-install.sh     2020-01-22 23:24:58.000000000 +0900
+++ /usr/lib/rinse/rocky-8/post-install.sh      2021-11-22 23:40:53.502355300 +0900
@@ -12,6 +12,8 @@
   exit
 fi
 
+echo "  Extracting CA certs..."
+$CH /usr/bin/update-ca-trust
 # rpm's can now be removed
 rm -f ${prefix}/*.rpm

rinse側のスクリプトを修正する

対象は「/usr/sbin/rinse」

--- /usr/sbin/rinse.orig        2021-11-22 23:43:47.012355300 +0900
+++ /usr/sbin/rinse     2021-11-22 23:45:46.622355300 +0900
@@ -1245,8 +1245,8 @@
       #  Run the unpacking command.
       #
       my $cmd =
-        "rpm2cpio $file | (cd $CONFIG{'directory'} ; cpio --extract --extract-over-symlinks --make-directories --no-absolute-filenames --preserve-modification-time) 2>/dev/null >/dev/null";
-      if ( $file =~ /(fedora|centos|redhat|mandriva)-release-/ ) {
+        "rpm2cpio $file | (cd $CONFIG{'directory'} ; cpio --extract --make-directories --no-absolute-filenames --preserve-modification-time) 2>/dev/null >/dev/null";
+      if ( $file =~ /(fedora|rocky|redhat|mandriva)-release-/ ) {
         my $rpmname = basename($file);
         $postcmd =
           "mount -t proc proc $CONFIG{'directory'}/proc ;mknod $CONFIG{'directory'}/dev/urandom c 1 9; cp $file $CONFIG{'directory'}/tmp ; chroot $CONFIG{'directory'} rpm -ivh --force --nodeps /tmp/$rpmname ; rm $CONFIG{'directory'}/tmp/$rpmname; umount $CONFIG{'directory'}/proc";

rinseを実行してrockyイメージを作る

作ったイメージの保存先はどこでも、名称は問わないみたい。ここでは「$HOME/rocky_rc」とした

saber@st200e:~$ mkdir rocky_rc
saber@st200e:~$ sudo rinse --arch amd64 --directory ./rocky_rc --distribution rocky-8
 
 
Execute postcmd of *-release package
mount: ./rocky_rc/proc: mount point does not exist.
warning: /tmp/rocky-release-8.5-1.el8.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID 6d745a60: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:rocky-release-8.5-1.el8          ################################# [100%]
umount: ./rocky_rc/proc: no mount point specified.
Running post-install script /usr/lib/rinse/common/10-resolv.conf.sh:
Running post-install script /usr/lib/rinse/common/15-mount-proc.sh:
Running post-install script /usr/lib/rinse/common/20-dev-zero.sh:
Running post-install script /usr/lib/rinse/rocky-8/post-install.sh:
  Extracting CA certs...
  Updating package
Rocky Linux 8 - AppStream                                                                10 MB/s | 8.2 MB     00:00
Rocky Linux 8 - BaseOS                                                                  5.7 MB/s | 3.5 MB     00:00
Rocky Linux 8 - Extras                                                                   20 kB/s |  10 kB     00:00
Dependencies resolved.
Nothing to do.
Complete!
  cleaning up...
27 files removed
  post-install.sh : done.
Installation complete.
 
saber@st200e:~$ ls -CF rocky_rc/
bin@   dev/  home/  lib64@  mnt/  proc/  run/   srv/  tmp/  var/
boot/  etc/  lib@   media/  opt/  root/  sbin@  sys/  usr/
 
saber@st200e:~$

rocky8に必要なrpmファイルが指定したリポジトリからダウンロードされシステムフォルダが作られる.

イメージ作成

このフォルダをtarでまとめて、windows11からアクセス可能な場所に配置する

saber@st200e:~$ sudo tar --numeric-owner -c -C ./rocky_rc . -f /mnt/c/rocky_rc.tar
tar: /mnt/c/rocky_rc.tar: Cannot open: Permission denied
tar: Error is not recoverable: exiting now
saber@st200e:~$

っが「/mnt/c」の直下には置けないみたい. なのでフォルダを用意してみた

saber@st200e:~$ mkdir /mnt/c/rocky
saber@st200e:~$ sudo tar --numeric-owner -c -C ./rocky_rc . -f /mnt/c/rocky/rocky_rc.tar
saber@st200e:~$ ls -l /mnt/c/rocky/
total 317100
-rwxrwxrwx 1 saber saber 324710400 Nov 23 00:35 rocky_rc.tar
saber@st200e:~$

作ったイメージをWSLに載せる

「wsl --import rocky_rc <path to folder from step 9> <path to tar file>」
と参照先では述べている.
どうも「rocky_rc」が「wsl -l」で表示される名前(NAME)で、「<path to tar file>」は文字通り作ったtarファイル「/mnt/c/rocky/rocky_rc.tar」でwindows11からは「C:\rocky\rocky_rc.tar」となる
このコマンドを実行するとWSLに組み込まれ即座に使えるようになる。
っで「<path to folder from step 9>」はいわゆる展開先である.

WSLgで構築したubuntu20.04はwindows11では「%LOCALAPPDATA%\Packages\」にて展開されている.
この展開先を特定の場所に指定できるようで、ここでは「C:\wsl-images\Rocky8.5」とする
コマンドプロンプトを立ち上げて下記を実行する

Z:\>wsl --import rocky-8.5 C:\wsl-images\Rocky-8.5 C:\rocky\rocky_rc.tar
 
Z:\>wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2
  rocky-8.5       Stopped         2
 
Z:\>

っで起動させてみた

Z:\>wsl -d rocky-8.5
[root@st200e ~]#
[root@st200e ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@st200e ~]# cat /etc/redhat-release
Rocky Linux release 8.5 (Green Obsidian)
[root@st200e ~]#

無事起動できたみたい


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2022-03-18 (金) 20:07:24 (190d)