Code Monkey home page Code Monkey logo

soluswsl2's Introduction

SolusWSL2

Solus on WSL2 (Windows 10 FCU or later) based on wsldl

Screenshot-2023-08-04-032944.png Github All Releases PRs Welcome License

Features and important information

SolusWSL2 will throw up many errors while installing packages. This is due to usysconf running post installation triggers. It doesn't affect the normal functioning of SolusWSL2 afaik. @Fubuchi has put together a workaround to stop displaying the errors. You can find more information here. The patched clr-boot-manager is already included in SolusWSL2.

SolusWSL2 has the following features during the installation stage.

  • Increase virtual disk size from the default 256GB
  • Create a new user and set the user as default
  • Supports systemd natively if you are running wsl v0.67.6 (more details here) and above. You will need the store version of wsl for native systemd support. For previous versions of wsl, systemd is supported using diddledani's one-script-wsl2-systemd. This is done automatically during initial setup.

SolusWSL2 includes a wsl.conf file which only has section headers. Users can use this file to configure the distro to their liking. You can read more about wsl.conf and its configuration settings here.

Requirements

  • For x64 systems: Version 1903 or higher, with Build 18362 or higher.
  • For ARM64 systems: Version 2004 or higher, with Build 19041 or higher.
  • Builds lower than 18362 do not support WSL 2.
  • If you are running Windows 10 version 2004 or higher, you can install all components required to run wsl2 with a single command. This will install ubuntu by default. More details are available here.
     wsl.exe --install
  • If you are running Windows 10 lower then version 2004, follow the steps below. For more details, check this microsoft document.
    • Enable Windows Subsystem for Linux feature.
     dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    • Enable Virtual Machine feature
     dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    • Download and install the latest Linux kernel update package from here.

How to install

  • Make sure all the steps mentioned under "Requirements" are completed.
  • Download installer zip
  • Extract all files in zip file to same directory
  • Set version 2 as default. Note that this step is required only for manual installation.
    wsl --set-default-version 2
    
  • Run Solus.exe to extract rootfs and register to WSL

Note: Exe filename is using the instance name to register. If you rename it you can register with a diffrent name and have multiple installs.

How to setup

Open Solus.exe and run the following commands.

passwd
sed -i 's#\# %wheel ALL=(ALL) ALL#%wheel ALL=(ALL) ALL#g' /etc/sudoers
useradd -m -G wheel -s /bin/bash <username>
passwd <username>
exit

Execute the command below in a windows cmd terminal from the directory where Solus.exe is installed.

>Solus.exe config --default-user <username>

How to use installed instance

exe Usage

Usage :
    <no args>
      - Open a new shell with your default settings.

    run <command line>
      - Run the given command line in that instance. Inherit current directory.

    runp <command line (includes windows path)>
      - Run the given command line in that instance after converting its path.

    config [setting [value]]
      - `--default-user <user>`: Set the default user of this instance to <user>.
      - `--default-uid <uid>`: Set the default user uid of this instance to <uid>.
      - `--append-path <true|false>`: Switch of Append Windows PATH to $PATH
      - `--mount-drive <true|false>`: Switch of Mount drives
      - `--default-term <default|wt|flute>`: Set default type of terminal window.

    get [setting]
      - `--default-uid`: Get the default user uid in this instance.
      - `--append-path`: Get true/false status of Append Windows PATH to $PATH.
      - `--mount-drive`: Get true/false status of Mount drives.
      - `--wsl-version`: Get the version os the WSL (1/2) of this instance.
      - `--default-term`: Get Default Terminal type of this instance launcher.
      - `--lxguid`: Get WSL GUID key for this instance.

    backup [contents]
      - `--tar`: Output backup.tar to the current directory.
      - `--reg`: Output settings registry file to the current directory.
	  - `--tgz`: Output backup.tar.tar to the current directory.
      - `--vhdx`: Output backup.ext4.vhdx to the current directory.
      - `--vhdxgz`: Output backup.ext4.vhdx.gz to the current directory.

    clean
      - Uninstall that instance.

    help
      - Print this usage message.

Just Run exe

>{InstanceName}.exe
[root@PC-NAME user]#

Run with command line

>{InstanceName}.exe run uname -r
4.4.0-43-Microsoft

Run with command line with path translation

>{InstanceName}.exe runp echo C:\Windows\System32\cmd.exe
/mnt/c/Windows/System32/cmd.exe

Change Default User(id command required)

>{InstanceName}.exe config --default-user user

>{InstanceName}.exe
[user@PC-NAME dir]$

Set "Windows Terminal" as default terminal

>{InstanceName}.exe config --default-term wt

How to uninstall instance

>Solus.exe clean

How to backup instance

export to backup.tar.gz

>Solus.exe backup --tgz

export to backup.ext4.vhdx.gz

>Solus.exe backup --vhdxgz

How to restore instance

There are 2 ways to do it.

Rename the backup to rootfs.tar.gz and run Solus.exe

(or)

.tar(.gz)

>Solus.exe install backup.tar.gz

.ext4.vhdx(.gz)

>Solus.exe install backup.ext4.vhdx.gz

You may need to run the command below in some circumstances.

>Solus.exe --default-uid 1000

How to build

Prerequisites

Docker, tar, zip, unzip need to be installed.

If you want to build using solus unstable profile, checkout the unstable branch.

git clone [email protected]:sileshn/SolusWSL2.git
cd SolusWSL2
make

Copy the Solus-main.zip file to a safe location and run the command below to clean.

make clean

How to install & run docker in SolusWSL2 without using docker desktop

Install docker binaries. Note that installing docker from solus repos doesn't work as the latest version in solus is 19.03.14. We need 20.10 versions and above.

sudo eopkg it -y wget
wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz
tar xzvf docker-20.10.6.tgz
sudo cp docker/* /usr/bin/

You can now delete the downloaded files if needed.

rm -rf docker
rm docker-20.10.6.tgz

To manage docker as a non-root user, create and add user to docker group.

sudo groupadd docker
sudo usermod -aG docker $USER

Follow this blog post for further setup instructions.

Screenshot-2021-02-18-120518.png

soluswsl2's People

Contributors

fubuchi avatar imgbotapp avatar sileshn avatar vinfall avatar yosukes-dev avatar yuk7 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

soluswsl2's Issues

Where is release download?

The release section in readme is empty now. I also try to import your image from docker hub using https://github.com/yuk7/wsldl
but I got "[process exited with code 1]" every time I launch solus. Is there any issue with the image so you remove the release section?

solbuild doesnt work

it works but at the end i get this error

[Build] install successful
[Examine] Examining packages
Traceback (most recent call last):
  File "/usr/bin/ypkg-build", line 19, in <module>
    main()
  File "/usr/lib/python2.7/site-packages/ypkg2/main.py", line 100, in main
    build_package(args.filename, outputDir)
  File "/usr/lib/python2.7/site-packages/ypkg2/main.py", line 416, in build_package
    exaResults = exa.examine_packages(ctx, gene.packages.values())
  File "/usr/lib/python2.7/site-packages/ypkg2/examine.py", line 510, in examine_packages
    ir = self.examine_package(context, package)
  File "/usr/lib/python2.7/site-packages/ypkg2/examine.py", line 461, in examine_package
    pool = multiprocessing.Pool()
  File "/usr/lib/python2.7/multiprocessing/__init__.py", line 232, in Pool
    return Pool(processes, initializer, initargs, maxtasksperchild)
  File "/usr/lib/python2.7/multiprocessing/pool.py", line 140, in __init__
    self._setup_queues()
  File "/usr/lib/python2.7/multiprocessing/pool.py", line 236, in _setup_queues
    self._inqueue = SimpleQueue()
  File "/usr/lib/python2.7/multiprocessing/queues.py", line 352, in __init__
    self._rlock = Lock()
  File "/usr/lib/python2.7/multiprocessing/synchronize.py", line 147, in __init__
    SemLock.__init__(self, SEMAPHORE, 1, 1)
  File "/usr/lib/python2.7/multiprocessing/synchronize.py", line 75, in __init__
    sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue)
OSError: [Errno 38] Function not implemented
ERRO[21:10:07] Failed to build package                       error="exit status 1"
ERRO[21:10:10] Failed to build packages

i use "solbuild build package.yml"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.