#author("2021-11-22T15:55:26+00:00","default:sysosa","sysosa") #author("2021-11-22T15:57:30+00:00","default:sysosa","sysosa") &size(10){当初 AlmaLinuxを作ろうとしたが挫折した... 触感的でうまい方法はないものか..}; 参照先 [[https://docs.rockylinux.org/guides/interoperability/rocky_to_wsl_howto/>+https://docs.rockylinux.org/guides/interoperability/rocky_to_wsl_howto/]], [[https://daimaohsx.dip.jp/wordpress/2021/06/28/try-running-rocky-linux-on-wsl2/>+https://daimaohsx.dip.jp/wordpress/2021/06/28/try-running-rocky-linux-on-wsl2/]] すでにWSLでubuntu20.04な環境が整備されているのが前提. このubuntu20.04 on WSLにてRockyLinuxのイメージを作り上げ、WSLに載せる. ***下拵え [#o43235a3] WSLで作ったubuntu20.04でRockyLinuxのイメージを作るのだが、調理器具をそろえる #code(nonumber){{ 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向けに修正する [#cbfaaa42] 「/etc/rinse/」にイメージ作成のテンプレートが用意されている #code(nonumber){{ 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向けの設定ファイルにする #code(nonumber){{ saber@st200e:~$ sudo cp /etc/rinse/centos-8.packages /etc/rinse/rocky-8.packages }} そしてこの「/etc/rinse/rocky-8.packages」に修正を加える #code(diff,nonumber){{ --- /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の情報を加える [#je0e1e80] 編集対象は「/etc/rinse/rinse.conf」です rockyを作るにあたってのリポジトリの登録です #code(diff,nonumber){{ --- /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スクリプトの修正 [#y338fd31] これもCentOS8向けをRocky8に仕立て修正を加える #code(nonumber){{ saber@st200e:~$ sudo cp -R /usr/lib/rinse/centos-8 /usr/lib/rinse/rocky-8 }} っで修正(14行目に追加の文言を入れる) #code(diff,nonumber){{ --- /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側のスクリプトを修正する [#k25eaaa2] 対象は「/usr/sbin/rinse」 #code(diff,nonumber){{ --- /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イメージを作る [#e6410c37] 作ったイメージの保存先はどこでも、名称は問わないみたい。ここでは「$HOME/rocky_rc」とした #code(nonumber){{ 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ファイルが指定したリポジトリからダウンロードされシステムフォルダが作られる. ***イメージ作成 [#w3e7e750] このフォルダをtarでまとめて、windows11からアクセス可能な場所に配置する #code(nonumber){{ 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」の直下には置けないみたい. なのでフォルダを用意してみた #code(nonumber){{ 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に載せる [#of6f3310] 「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」とする コマンドプロンプトを立ち上げて下記を実行する #code(nonumber){{ 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:\> }} っで起動させてみた #code(nonumber){{ 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 ~]# }} 無事起動できたみたい