Using Windows Subsystem for Linux (WSL), we have a choice of Linux distributions available in the Windows Store, such as Ubuntu, Kali, Debian, etc....
For further actions, you may consider blocking this person and/or reporting abuse
How can we quickly create a new instance of our WSL Fedora linux? Jonathan suggests saving our customized installation by exporting it, so we can import it to get a new and clean system. This works fine. However, I would like to present an alternative: I wrote a bash script, that does the steps described above and keep it in my gitlab.com account. So I can download a new and blank container version of Fedora, launch it and run
(This script adds a non-root user, adds some basic dnf packages and man pages.)
I prefer this because I start with the current release and don't need to upgrade an older container.
Warning: Always be careful when running code from unofficial sources. :-)
I love this, @martinhinze ! Way to automate.
I just realized @trens wrote a similar script earlier.
To be able to setup the locale within fedora you need systemd. To get around this you can use the following (substitute en, en_US with your locale strings):
Additionally, you may want to install your locale resources, sucha as:
And donยดt forget to check and change if necessary /etc/locale.conf and /etc/locales.conf
Thanks for these tips! OK if I incorporate them into the article?
Sure. Go ahead! Notice that I've edited the tip to add a last step.
Tried to install first non-US locale and then en_US (en) locale - now it's ignore file /etc/locale.conf and always set en_US.UTF-8
Also command
export LANG=ru_RU.UTF-8
only affects to "locale -a" command and non-localize any other packages.
Ok so I managed to use CentOS Stream in lue of Fedora.
My primary reason for the switch honestly has alot to do with Fedora's release cycle.... Fedora moves rather swiftly (give or take, A new Fedora every 6-9 months) and CentOS Stream moves slower(every 5 years). For something that is going to be on my window partition, CentOS makes alot more sense for me.
I ended up using the rootfs method. For those that care, the best way to go about that is to click on cloud install on CentOS which will bring you to this directory, and then grabbed the
file while follow the rest of the instructions.
Just thought that I mention it if you care....
I love this! Choosing CentOS Stream makes perfect sense. Thanks for the links to the rootfs!
Hello again....
Well, I can't say that the CentOS community doesn't do work. I was poking around the Project when I noticed something.
So this happened.... Yeah... everything that I did last year to get it running, forget it. The community just built a set of WSL images for CentOS Stream 9, and that page is a rather easy set of instructions to do it with.
Enjoy.
i don't know if this is helpful but i was bored so i made a script to run through the steps quickly. its not that good i know, but i was bored. worked for me.
Great automation!
Thank you for the detailed instruction!
I have installed fedora and the distribution is running. But for some reason, the standard commands are not available:
[haosmos@Haosmos-PC haosmos]$ cd ~/
[haosmos@Haosmos-PC ~]$ nano .bashrc
-bash: nano: command not found
[haosmos@Haosmos-PC ~]$ find find .bashrc
-bash: find: command not found
[haosmos@Haosmos-PC ~]$ clear
-bash: clear: command not found
When trying to download and install any program or utility, the same error is always displayed:
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
Error: Error downloading packages:
Curl error (6): Couldn't resolve host name for https://mirrors.fedoraproject.org/metalink?repo=fedora-33&arch=x86_64 [Could not resolve host: mirrors.fedoraproject.org].
How do I fix these problems?
@haosmos , you were right and I was wrong!
Apparently, Fedora 33 uses systemd-resolvd, and when we upgrade packages with
dnf upgrade
something was overwriting/etc/resolv.conf
with a link to/run/systemd/resolve/stub-resolv.conf
which didn't actually exist.So, I updated the instructions to include a workaround for Fedora 33. Please let me know if it works!
I also added a tip at the end to install
findutils
andncurses
. Let me know if you think other basic packages should be included. Thanks!I am curious: what does your
/etc/resolv.conf
look like?Here is mine:
cat: /etc/resolv.conf: No such file or directory
[haosmos@Haosmos-PC ~]$
But file resolf.conf exist:
cloud.mail.ru/public/5BVW/2zYiramvC
OK. That could be the issue. Judging by your screenshot, you may want to first
rm /etc/resolv.conf
Then can you follow the "Ensure DNS is functioning" part of the article and make sure that two files have been edited appropriately:
/etc/resolv.conf
and/etc/wsl.conf
. Then restart your machine? I am very curious if that works for you or not.After many attempts (a lot of re-installations and reboots of the computer) I finally installed fedora in wsl and set it up)).
Everything seems to be working. I was able to install everything I needed (my goal was to configure the right working environment for web development).
I don't know what the problem was โ why I had to start over many times, but wsl (fedora) worked in a strange way: the standard commands didn't work ("cat", "clear", "nano", etc.), or it was impossible to download and install programs and utilities (Curl error (6): Couldn't resolve host name for mirrors.fedoraproject.org/metalink... [Could not resolve host: mirrors.fedoraproject.org].).
Eventually, I set up fedora according to your tutorial, except that I didn't execute the commands:
echo -e "[network]\ngenerateResolvConf = false" > /etc/wsl.conf
and
echo nameserver 1.1.1.1 > /etc/resolv.conf
Now I have this content of the resolv.conf file:
cat /etc/resolv.conf
// This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
// [network]
// generateResolvConf = false
nameserver 172.29.16.1
In my well-working wsl 2 ubuntu-20.04 the content of the resolv.conf file is exactly the same.
I don't know if this will be a problem in the future (what I didn't specify in the resolv.conf: nameserver 1.1.1 according to your instructions) but so far everything seems to be working fine.
Tell me, please, what do I need to specify in the resolv.conf: nameserver 1.1.1.1 file for?
Maybe I should add it to my resolv.conf file?
Or if everything works as expected I don't have to add or change anything in my resolv.conf file?
Thank you for your feedback! I have updated the DNS section to include more specific instructions for removal of the offending link in Fedora 33, and also prefaced that with acknowledgement of the default automatically-configured
resolv.conf
provided by WSL. I hope this helps!Did you try dnf clean packages as suggested?
[root@operation420.net ~]$ dnf clean all && dnf update
PS I dunno nano, VIM is the hardcore editor/IDE!!!
Did you try dnf clean packages as suggested?
[root@operation420.net ~]$ dnf clean all && dnf update
PS I dunno nano, VIM is the hardcore editor/IDE!!!
Vim is ovekill for simple text editing tasks.
sysctl won't persist after WSL reboot. You can set kernel parameters using
C:\Users\username\.config
or/etc/wsl.conf
(Windows 11 only). (github.com/microsoft/WSL/issues/42...)Seems like you would need to use absolute path to
sysctl
if you are editingwsl.conf
tho becausesysctl
is not loaded to $PATH yet. (github.com/microsoft/WSL/issues/42...)I have updated the article to include this great suggestion, @laoweek. Thank you so much!
Hi, I seem to be having an issue with /etc/resolv.conf
I am running Fedora 36 as instructed here but for some reason I can't unlink to said file because it doesn't exist in the rootfs. If I attempt to write it myself, upon my next access to fedora through wsl, it's just gone... I have to rewrite the file any time that I want use dnf or anything else internet related (which is alot in linux). Can you help me solve this?
Thanks for trying to work through this! First question: do you need to edit /etc/resolv.conf? Have you tried it without making changes?
That is the thing, I don't need to edit /etc/resolv.conf. I need to create it. The file doesn't exist on boot, and every reboot of my system pulls the file system to the default state. So on every reboot, the file doesn't exist... my problem with that is DNF needs the access to the internet and without /etc/resolv.conf their isn't anything, and I tend to do things in steps... so having access to the net on boot is useful.
So, can you confirm: you had no Internet access before you tried changing /etc/resolv.conf?
Also, in /etc/wsl.conf, what is the current
generateResolvConf
set to? True or false?Hopefully we can figure this out!
Well that solved it, it was originally false.... setting it to true corrects things
Thank you for the help
Excellent!
Ok, then maybe you can solve another question that I have.... I also seem to be having trouble with mounting a physical partition on my extra SSD. Keeps tossing out a error, with every attempt to mount it.
Would you have any ideas?
Hmmm... I have not tried to do that. What is the error?
It is tossing out error code -22 when I attempt to use
I can't say I am familiar with that message. It only gives a code and not a complete message? That is odd. Sorry I am not of more help.
Thank you Jonathan! This article is top notch, it helped me out so much!
I've been in a MacOS and Linux world for about 10 years now. Just made the switch to a Windows11 desktop as my daily driver thanks to wsl2. That integration has been fantastic and being able to use my distro of choice fedora makes it all the better. Thanks again! Bob
PS, finding out about Micro editor is a cherry to top things off!
Even in out of box supported distros (e.g. Ubuntu) i always found installing distros using Microsoft Store clunky (who wants theirs installs in a folder like: C:\Users<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\ ?), and now you opened my mind about this method.
Many kudos to you!
I agree!
I don't know why when I installed Fedora this way, I'm able to write into Windows NTFS (C:/) although it's so slow. But when I installed Ubuntu from the Microsoft Store, I couldn't. Can you give me some insight? Thanks in advance. I found this article very helpful!
Sorry if I am bothering you. I have no idea why. But after running
wsl -t ubuntu
thenwsl -d ubuntu
, now it works. The only thing is it's so slow. Should I move my project folder into WSL ext4 hard disk image file? Or should I just format my D:/ to ext4? What is your advice? Thanks.So, especially in WSL 2, Windows disk performance is very, very poor. Try doing your work in the Linux filesystem (in your home directory, for instance) instead. Is that faster?
Yes, indeed, it is much faster.
Sorry, but I couldn't find
wsl.conf
anywhere. Where should it be?My apologies; I wasn't thinking and gave you wrong advice about the
[interop]
section. That doesn't have anything to do with mounting Windows drives from WSL.I guess you could use Ansible to continue with the install.
Note that with WSL 2 you loose VirtualBox (unless you are on the very last Windows version)
Very good article anyway, I just finished the install. (Had to deactivate the local McAfee firewall in Windows for the network to work)
Glad you found it helpful! Thank you.
After a first update and rollback, you might want to add:
exclude=systemd*
in /etc/dnf/dnf.conf
Thoughtful. Can you say more about the "rollback" part? And what sort of problems you are encountering around package updates? Which packages, specifically?
I think I like the idea. But let's say, for instance, that I want to use
systemd-analyze
on occasion. (I know, not useful for a non-systemd WSL, but I do maintain other systems as well.) It would seem that I shouldn't exclude systemd updates, then.In other words, if it is not breaking anything, I could still see some advantages to keeping systemd packages up to date. Thoughts?
The update included dependencies and weak-dependencies and systemd got installed as well as systemd-networkd I guess which deleted resolv.conf ... instantly removing name resolution ... For sure systemd adds itself to /etc/dnf/protected.d/ it does not ease rolling back.
Maybe it is possible to exclude just systemd-networkd I did not try.
Just curious...
systemd-networkd
is still messing withresolv.conf
even after anunlink /etc/resolv.conf
then creating a new one?I missed having man pages available with this container version of Fedora. Thus, I would like to share how I added man pages to my WSL Fedora system, in case this might be of use to someone else out there.
@bowmanjd : Feel free to include this in your article, if you like, or point out enhancements or how to do it better.
Basically, I told dnf to include man pages when installing packages and then reinstalled all packages already installed.
If you don't have a text editor installed, which you know how to use, run
to install the easy-to-use editor GNU nano.
Delete the line
tsflags=nodocs
in the file/etc/dnf/dnf.conf
with a text editor of your choice and save it, e.g.Update your system and install the
man
command:In your home directory, create a text file
reinstall-all-dnf-packages.sh
containing the following script:Make the script runable and run it:
Now all man pages should be available. Try, for example,
man dnf
. :-)Thanks, again, @martinhinze ! I have now included your good advice in the article. Much appreciated!
Hey, @bowmanjd Thanks for your instructions, but as you know that wsl2 doesn't support systemd, how do I install SysVinit in Fedora, I found no docs on Google about this, Can you please help me!
Good question. Are you sure you need systemd or sysvinit? What happens if you run
sshd
by itself? You may be pleasantly surprised.I think You mean I can start
sshd
by itself, that's kind of interesting but what about rest of the services? I may need an init system for that? Ain't I?What other services do you need to run?
Till now only sshd, and will be seeing your docker tutorial to start docker, and rest the future will tell! Btw isn't there any way to install systemd on wsl by using original linux kernel instead of wsl2's custom kernel? And isn't there any SysVinit package in Fedora's repository of packages or I have to add a ppa just as in Ubuntu??
I would recommend using Hyper-V or Virtualbox to run your own Linux VM, which will then have systemd or other init system. Yes, Fedora already has systemd, and you could find other distros if you prefer openrc or other init system. The issue isn't the installation of systemd, then (and, no, you wouldn't want to try to replace systemd with sysvinit on a systemd-based distro; instead, find a non-systemd distro). The issue is that WSL has its own init system that runs with PID 1. By the way, systemd has little to do with the kernel version installed.
The typical WSL hack I see is running genie. You may try that. But it adds another layer of complexity that is generally unneeded, if all you want is a way to launch long-running processes. Simply launch them. If you need other systemd features, other than services, then maybe you want to look into genie or a separate VM.
Does that make sense?
Thanks for suggestion and explanation, would be trying genie!!
I don't get it, that's kind of a puzzle i think; @bowmanjd
What do you think? Are the results satisfactory?
Please see my reply to Krrish Dhaneja
Krrish Dhaneja, I replied to your other comment with the instructions!!!
Please see my reply to Krrish Dhaneja
i run: wsl -d Fedora-33
..but get no default shell.. did i miss something?
Interesting. Can you show us your entire
wsl --import
command?I think the problem may be he did not install windows virtual machine feature or install WSL 2. regardless if that is the issue there are likely many that do not have the update to WSL2 and think it would have been handled thru normal Windows Update System.
As you really have made such a detailed easy to follow how to article it might be best to update it.
First making sure their Win 10 build is above 18362.1049 or higher.
Update if not. Include installing the VM function feature which is easy as you just add it where you turn on "Windows sub system for Linux".
Restart System
Add the download link for "WSL2 Linux kernel update package for x64 machines" (link straight from microsoft website) wslstorestorage.blob.core.windows....
Have them run the update package downloaded in the previous step. (Double-click to run - you will be prompted for elevated permissions, select โyesโ to approve this installation.)
Restart System
Set WSL 2 as the default WSL version. Open Powershell and run " wsl --set-default-version 2 "
You can also reference this Microsoft Sites Documentation on how to upgrade
docs.microsoft.com/en-us/windows/w...
You could just reference it and not list the steps or just list it for those that have issues from legacy systems updates.
Ok I just did a fresh Win 10 install fully updated Windows Linux subsystems and Windows Virtual Machine Features added. Installed wsl 2 thru the linx update package I linked to. Set WSL 2 as default thru PS. Created the
"C:\Users\WSL\fedora" folder in the user profile root. Downloaded and renamed the fedora-32-rootfs.tar file. (I chose Fedora 32) Imported it. Ran it with "wsl -d fedora" But as Miguel Quintero posted it did not open a bash promote. Just had the same Powershell "PS C:\Users\Username> " prompt.
Next I checked to confirm it was running with "wsl -l --running" with output of:
"Windows Subsystem for Linux Distributions:
fedora (Default)"
Thus that confirms wsl fedora was running. ( I actually tried all of this before activating Windows VM or thte WSL 2 Linus package update to emulate a user running your instructions but not knowing about the WSL 2 package or activation of Windows VM add on. When I checked for running instances the output was " no running linux distro" or something to that effect. But it did install etc.
So there is still something hinky going on as with everything done on a fresh install fully updated and all installs and upgrades down while WSL 2 claims its running there is no bash prompt to run inside fedora linux.
I wonder if with the last win update MS made it so you can only install distro roots thru the Store. After all to download the Fedora Remix they state is from upstream its $10. Nice they are monetizing for open source freeware. You had to know that was the entire reason they got into the Linux game in the first place. Pulling a google on opensource projects.
I tried installing Ubuntu 18.04 LTS and it worked and bash opened without issue. So something is is different doing it thru this manual way.
Wow, thank you for testing this! I will seek to replicate, and adjust the article accordingly.
@timfw , I am unable to replicate this. I believe you, though. Indeed something strange must be going on.
Could you verify what rootfs version you downloaded, and what tool you used to unpack? Not sure that will be fruitful, but thought I would check. I suspect you are right that this has something to do with WSL configuration.
Also, curious what happens if you
wsl -d fedora -- bash
or similar?@timfw , I have made some changes to the article as you suggested, giving a bit more detail about upgrading to WSL version 2 and also detailing multiple options for rootfs download. I don't think this resolves the issue you are identifying, unless perhaps a newer rootfs fixes it?
I used the fedora 32 x64 you linked to here
this is the file name it downloaded Fedora-Container-Base-32-20201205.0.x86_64.tar.xz I used7zip to decompress it to a tar.
Something weird though. The first time I downloaded it the file ended with the .tar.xz. But now since I originally decompressed it everytime I download it comes as just .tar not .tar.xz in the download directory. I assume its because of 7zip already decompressing it to just a .tar. I hate programs deciding for me how to help grrr...
I insured wsl 2 was the default.
I renamed the decompressed .tar to fedora-32-rootfs.tar
I then created the folder mkdir C:\users\username\wsl\fedora
Next imported the .tar to \wsl\fedora with "wsl --import c:\user\username\download\unzip\fedora-32-rootfs.tar c:\user\username\wsl\fedora\"
I checked and confirmed it was installed in that directory.
Next ran "wsl -d fedora" and after a pause it just returns me to the next line standard prompt in PS. I tried running both as user and admin.
I run "wsl -l -running" and it shows fedora default is running.
I check inside ~\wsl\fedora in Win Explorer and it now shows a ext4 virtual drive
But thats it.
Now I went thru the Win Store and downloaded Ubuntu 18.04 LTS and thru whatever auto .msi it installs it with I get an immediate bash window .Windows installs the ubuntu1804.exe in C:\Users\Username\AppData\Local\Microsoft\WindowsApps directory
It also installed a entire user directory set for Ubuntu in C:\Users\Lenovo\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
after a reboot
in PS going to ~\wsl\fedora here is the output of a dir cmd
These are c&p of the text in PS:
PS C:\Users\Lenovo\wsl\fedora> dir
Directory: C:\Users\Lenovo\wsl\fedora
Mode LastWriteTime Length Name
-a---- 12/7/2020 12:00 AM 246415360 ext4.vhdx
PS C:\Users\Lenovo\wsl\fedora>
Then a check to confirm no running distributions followed by the "wsl -d fedora" cmd and as you can see it just returns a standard PS Windows prompt.
These are c&p of the text in PS:
PS C:\Users\Lenovo> wsl -l --running
There are no running distributions.
PS C:\Users\Lenovo> wsl -d fedora
PS C:\Users\Lenovo>
PS C:\Users\Lenovo> wsl -l --running
Windows Subsystem for Linux Distributions:
fedora (Default)
PS C:\Users\Lenovo>
No bash window opened nothing
But if I wait about a minute and then rerun the wsl -l --running I get this
PS C:\Users\Lenovo> wsl -d fedora
PS C:\Users\Lenovo> wsl -l --running
Windows Subsystem for Linux Distributions:
fedora (Default)
PS C:\Users\Lenovo>
The Ubuntu thru the store works fine. In fact I just git gcc compiled and produced a binary for CryFS encryption program which is a updated and secured version EncFS.
I just do not get why Fedora installed manually does not work?? It even shows it as a virtually mounted drive.
Finally SUCCESS!!!!
I took your recommendation about it maybe an issue with the roofs downloaded. I downloaded the one form the docker link you provided.
I terminated and then unregistered the current not working fedora 32 from December 5,your link in here:
"Find the right "xz" file for your platform (likely x86_64). Such as this one for the December 5, 2020 build of Fedora 33. Or, if you were still wanting Fedora 32, this Fedora 32 build from December 5 should work."
Not sure if you updated that when you edited the article. The one from that link prior to it may be bad as its what did not work.
I followed the docker github link to github.com/fedora-cloud/docker-bre...
and it produced a successful install finally.
PS C:\Users\Lenovo>wsl -t fedora
PS C:\Users\Lenovo>wsl --unregister fedora
PS C:\Users\Lenovo>
PS C:\Users\Lenovo> wsl --import fedora c:\Users\Lenovo\wsl\fedora c:\Users\Lenovo\Downloads\fedora-33-rootfs.tar
PS C:\Users\Lenovo> wsl -l
Windows Subsystem for Linux Distributions:
Ubuntu-18.04 (Default)
fedora
PS C:\Users\Lenovo> wsl --set-default fedora
PS C:\Users\Lenovo> wsl -l --running
There are no running distributions.
PS C:\Users\Lenovo> wsl -l --verbose
NAME STATE VERSION
Ubuntu-18.04 Stopped 2
PS C:\Users\Lenovo> wsl -d fedora
[root@Lenovo-THINK Lenovo]#
Yes finally a bash prompt.
Thank you very much Jonathan for a well written set of instructions and improving it. Maybe check that current linked fedora 32 download I mentioned and see if it creates a working rootfs. If it works maybe something got corrupted during my download is all I can think of. I did download it twice though and tried both copies but anything is possible I guess. But no matter I have positive results now thanks to your suggestions.
BTW I am using this to see if Qubes OS Ver 4.0 series can be compiled and binary produced using the Windows linux subsystem. It works 100% on a real Fedora 32+ install with all necessary programs loaded. Want to see if it works here as its a rather complex tool and script system for the build environment.
Again thank you!
Cheers,
Tim
Excellent! I am glad it is working for you now. I hope your Qubes OS task goes well.
Do you happen to know how can I upgrade the distro to a newer image without losing all info (such as installed packages)?
Are you saying you have Fedora 32 and want to upgrade to Fedora 33? If so, this works for me:
What do you think? Does that work? Wouldn't hurt to do a backup first.
Not exactly what I meant, though it's nice to know that it actually works!
The scenario I'm asking about is having installed a specific build of Fedora, say the latest 33 available from their servers, how can I "install" a newer build that comes, say, a week after? It would require a new rootfs, which doesn't play well with WSL's capabilities at the moment, i.e. I'd have to install a new, separate distro for it to work
Now that, friend, is a brilliant question. You don't want to just
dnf upgrade
? Am I hearing you right?I honestly don't know a good answer yet. I don't know that wsl can import and merge tarballs. I suppose you could unpack a new tarball at the root of your filesystem, but that would scare me. Other thoughts?
Well, maybe I'm not familiar enough with how Fedora builds work - Are you saying that simply executing
dnf upgrade
will keep me up-to-date with the latest system changes occurring to Fedora?I mean, I know that
dnf
manages all of the system's packages, but as I work with a non-stable version of Fedora (33), doesn't it mean that you should update your build once in a while? I'm yet to have experience with Fedora's beta releases :)Oh, yes.
dnf upgrade
will serve you well! Further details here, including the instructions:Awesome!!! Well, that truly makes a custom installed Fedora a great candidate for a productive WSL distro ๐
Thanks for your help!
I tried to do a fresh install of Fedora 35 and unfortunately it doesn't work anymore.
After running
wsl --import Fedora [myInstallFolder] [myRootfs.tar]
I run
wsl -d Fedora
and get the following error message:
An error occurred mounting one of your file systems. Please run 'dmesg' for more details.
wsl -l
listsFedora
, so the import seemed to work.Before, I put a fresh installation of Win 11 on my computer, don't know if that has something to do with this error.
WSL kernel version is 5.10.60.1.
Windows version is "Version 21H2 (Build 22000.376)"
PowerShell version is 7.2.1
Already had a look in WSL's Github, but TBH did not really understand if this is my issue.
Any help or suggestions would be greatly appreciated since I love Fedora. Otherwise, the ready-made Ubuntu WSL is working okay.
Thank you for noting the problem. Curious: what was your method for obtaining myRootFs.tar?
From the Fedora Container Base I download the newest distro package, in this moment this is release 20211231.0.
In the download folder of my Win 11 machine I receive the file
Fedora-Container-Base-35-20211231.0.x86_64.tar.xz
. In unzip it with 7-zip and obtain the fileFedora-Container-Base-35-20211231.0.x86_64.tar
and rename it to something shorter likefedora-35-rootfs.tar
.I have no idea what might be wrong and even where to start looking for a solution.
Were you able to extract the layer.tar file and rename that? The Fedora-Container-Base-35-20211231.0.x86_64.tar file will not work as a rootfs without further extraction. Hope this helps...
Thank you for your patience, I indeed failed to extract the
layer.tar
file, it is working fine now.(Sorry for the late reply, I was offline for a few days.)
Thanks for the article, it was very easy to follow! It annoyed me having to execute 'cd' to go to the homedir on every new shell. Read elsewhere that you can start with 'wsl ~' to achieve that. Thought I should mention.
Thanks for the 'wsl ~' tip, I will have to try it.
Adding a "cd ~" or "cd /home/user" into /etc/bashrc might help...
Great tip. Thank you so much!
thanks for the steps, now I have a fedora32 working on wsl2 .
however still looking to the systemd with fedora on wsl2.
so theoretically, we should also enable systemd by this smart guy's ubuntu way, github.com/DamionGans/ubuntu-wsl2-....
however no lucky till now, the worse is fedora won't go with sysinit/service.
Thank you so much for reading and responding! I am so glad it is working for you. I agree, it is sad about systemd.
You are right that systemd and WSL are not a great combination. But there is a chance you could function without systemd.
Could you identify what needs you have that require systemd? Might be fun to ponder...
I had the same issue but fixed it. Please see my reply to Krrish Dhaneja.
Hello,
fedora in wsl doesn't seem to be using systemd - sorry if that sounds like layman speaking I am not an expert in this domain.
I would like to get the services started, which packages should I install?
Using systemctl command shows the following warning/error:
There's a known issue with systemd in WSL2 - It's just not officially supported yet...
In the meanwhile, you can try genie - It's the best attempt to solve this at the moment
You got it! That is one of the "hacks" I mentioned in the article. If you need it, it is there. I just don't think everyone needs it.
Not sure I would call it "a known issue" when it is a deliberate design choice about init system. But maybe I am wrong. In other words, nothing is broken. The init architecture is slightly different, though.
I had the same issue but fixed it. Please see my reply to Krrish Dhaneja.
Thank you so much for writing this article.
Just followed it though for Fedora 35 with no problems,
except for the /etc/wsl.conf with adding [user] default string hasn't worked.
But I'm convinced WSL2 isn't going to lure me back from my beloved Ubuntu!
Hi, thank you for the article. Why not just do the following:
docker pull fedora
docker export to export the fedora container
wsl import to import the fedora container into wsl
That's a brilliant and elegant way to pull a rootfs. Would that have been able to pull snapshots and prereleases such as those offered by Fedora Container Base Project, though?
Thanks for this advice. I am going to experiment a bit, and likely incorporate it into the article.
Sorry, not too familiar with Fedora tbh. I mostly use CentOS. Just happened to stumble upon this article and figured I'd comment. Here's an article I was able to find that describes the process: medium.com/@hoxunn/wsl-docker-cust.... There's not a whole lot of information out there on this process and a bit of a pain to find.
There is an application on Microsoft store called "easywsl "
you can use it to install any distro directly from docker hub.
Nice to know! Thank you so much for sharing. It sounds like this easywsl application basically does the same as a docker pull, docker export, wsl --import, but without having to type out all three commands. Curious if there are other features you value from it.
Thanks for replay, they are using Docker HUB API
as in their repo state that :
And there are so many features that make it really easy to manage WSL with GUI.
Right after dnf install -y passwd cracklib-dicts, I would strongly recommend:
dnf groupinstall "Minimal Install"
There were number of pretty standard-issue packages that weren't already installed in the container, that I was wanting right away ("find", "less" and "which" come to mind).
how do I start a service(like ssh) if I can't use systemctl in wsl? And how do I install SysVinit?
I got cron working in Fedora and Ubuntu on WSL.
Carlos at Whitewater Foundry was most helpful. Here is his reply to my email:
There is a solution that replaces systemctl by a python script that reads the service files and tries to start the services. We donโt distribute it with Fedora Remix because it has mixed results. For example, it works for cron and ssh but no for databases in general. Even in SSH, you need to do an extra step.
Follow these steps to start cron service in Fedora Remix. Works with WSL1 & WSL2:
wget raw.githubusercontent.com/gdraheim...
sudo cp /usr/bin/systemctl /usr/bin/systemctl.bak
sudo cp systemctl3.py /usr/bin/systemctl
sudo dnf install cronie cronie-anacron
crontab -e # Edit your crontab
sudo systemctl start crond
Be aware that each time that the package systemd is updated, you need to run the first three lines of the script.
Hope my reply helpz
Super useful, thanks Jonathan!
You can just download github.com/WhitewaterFoundry/Fedor... as per docs.microsoft.com/en-us/windows/w...