Code Monkey home page Code Monkey logo

alpinewsl's Introduction

AlpineWSL

Alpine Linux on WSL (Windows 10 1803 or later) based on wsldl

screenshot

GitHub Workflow Status Github All Releases PRs Welcome License

Requirements

  • Windows 10 1803 April 2018 Update x64/arm64 or later.
  • Windows Subsystem for Linux feature is enabled.

Install

1. Download installer zip

2. Extract all files in zip file to same directory

3.Run Alpine.exe to Extract rootfs and Register to WSL

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

How-to-Use(for 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.

    clean
      - Uninstall that instance.

    help
      - Print this usage message.

How to uninstall instance

>Alpine.exe clean

How-to-Build

AlpineWSL can build on GNU/Linux or WSL.

curl,bsdtar,tar(gnu) and sudo is required for build.

$ make

with flags:

$ make ARCH=arm64 OUT_ZIP=Alpine_arm64.zip

Basic Params

Parameter Value Default
ARCH x64/arm64 x64
LNCR_EXE launcher file name Alpine.exe
OUT_ZIP zip file name Alpine.zip
DLR file downloader curl
DLR_FLAGS downloader flags -L
BASE_URL base rootfs url https:~

alpinewsl's People

Contributors

167rgc911 avatar alisonatwork avatar am11 avatar hose1021 avatar kairusds avatar pulpe avatar yuk7 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

alpinewsl's Issues

ERROR: alpine-baselayout-data-3.2.0-r23: trying to overwrite etc/nsswitch.conf owned by glibc-2.35-r0.

I've just installed to use Docker Desktop but got error above, no running container. I tried;

# apk fix
(1/1) Reinstalling alpine-baselayout-data (3.2.0-r23)
ERROR: alpine-baselayout-data-3.2.0-r23: trying to overwrite etc/nsswitch.conf owned by glibc-2.35-r0.
1 error; 47 MiB in 27 packages

so, it cannot be fixed even though;

# ls -la /etc/nsswitch.conf
-rw-rw-rw-    1 root     root            55 Mar 14  2022 /etc/nsswitch.conf

I think this is the same issue of here but I have no idea how it related to this project.

How to run in the background

I have tried to use this distro with ExtraTerm and Terminus but all I get is a blank terminal window.

So I know why it doesn't show up because it is stopped. If I run the EXE then open Terminus I see the shell. So my real question is how do I run it in the background?

create Makefile

I need to provide a Makefile so that users can easily build custom image packages in local environment.
Users can build and install it easily.

Mountpoint Metadata (for chown, ... etc.)

Hey there,

i would like to know how to change the default mount options to enable "metadata" to change the fileowner.

Some tutorials advice to change /etc/wsl.conf but it seems to be not recognized at launch.

Could you give me a hint to apply the options to the default mount point?

Best regards :)

Setting new default user doesnt work

So I created a new user and set the --default-user and --default-uid to match but it still goes to root when i run the exe

PS C:\alpineLinuxWSL> .\Alpine.exe config --default-user g61786
PS C:\alpineLinuxWSL> .\Alpine.exe config --default-uid 1000
PS C:\alpineLinuxWSL> .\Alpine.exe
ITE00489306:~#

program not started

Microsoft Windows [版本 10.0.17134.112]
(c) 2018 Microsoft Corporation。保留所有权利。

C:\Users\ceo>alpine
Installing...
Installation Complete!
Press any key to continue...

C:\Users\ceo>alpine
Installing...
Installation Complete!
Press any key to continue...

C:\Users\ceo>

18060400
@yuk7 yuk7 released this on 4 Jun · 1 commit to master since this release

Pre-installing apk packages

is there any way to pre-install apk packages so that after installation of the AlpineWSL, the pre-installed program will be available?

slow internet connection

I have very slow internet connection
I compare it with ubuntu distro...

can I use this solution? source

sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
sudo bash -c 'echo "[network]" > /etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'
sudo chattr +i /etc/resolv.conf

Cannot install unless ran as elevated

So this used to work fine and not sure if it was a windows patch or what but now you 10102700 release will not install unless ran as administrator. To make sure it wasn't a gpo or something. I used the latest Ubuntu from Store "CanonicalGroupLimited.Ubuntu18.04onWindows_1804.2018.817.0_x64__79rhkp1fndgsc", download and extracted and ran exe and it install as normal user with no issues.

Running Windows 10 Enterprise v1709 16299.847

HRESULT:0x80070003 error

Hello,
I am getting error HRESULT:0x80070003 when trying to run Alpine.exe without arguments.

Have WSL installed and running ubuntu on top without problems.

Thanks

ReadLine? Not `Press enter...`

C:\alpine>alpine.exe
Using: C:\alpine\rootfs.tar.gz
Installing...
Installation complete
Press enter to continue...sdfsdfsdf
``` - showed typed symbols

installer should set Name alpine versioned, e.g. "Alpine-3.15.0"

Currently, installing alpine results in a new wsl.exe --list --verbose entry named Alpine.

Using release 3.1.5.0, for example:

PS> Invoke-WebRequest https://github.com/yuk7/AlpineWSL/releases/download/3.15.0-0/Alpine.zip -out Alpine.zip

PS> Expand-Archive Alpine.zip

PS> cd Alpine

PS> .\Alpine.exe
Using: .\rootfs.tar.gz
Installing...
Installation complete
Press enter to continue...

PS> wsl.exe --list --verbose
  NAME                   STATE           VERSION
  Alpine                 Stopped         2
  ...

I would like to be able to install Alpine releases "side by side". However, I presume they will both use WSL entry name Alpine (and overwrite the other). Also, having the Alpine version as part of the WSL name is informative.

I would prefer

PS> wsl.exe --list --verbose
  NAME                   STATE           VERSION
  Alpine-3.15.0-0        Stopped         2
  ...

Setting current directory of Visual Studio Code

I really love Alpine Linux, especially within WSL. I want to use it as the integrated terminal within Visual Studio Code. Setting that within settings.json works fine:

{
   "terminal.integrated.shell.windows": "C:\\Program Files\\Alpine\\Alpine.exe",
   ...
}

The problem is that Alpine sets the current directory to the home directory. The Ubuntu WSL starts on the current project's root directory when used as a integrated terminal in VS Code.

Is there a way to set the current directory manually or - even better - to behave like the Ubuntu WSL?

Losing glibc dependency

One of the main attraction of Alpine Linux distribution is that it uses muscle libc instead of GNU one. The former is much lighter and anything that links with this libc on the system gets smaller code size. Most of the mainstream software packages are available via Alpine's aports. The hard requirement of glibc is fading away.

Could we have a version of AlpineWSL in this repo that doesn't have glibc?

Proposal:

--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,6 @@ LNCR_EXE=Alpine.exe
 DLR=curl
 DLR_FLAGS=-L
 BASE_URL=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/x86_64/alpine-minirootfs-3.8.0-x86_64.tar.gz
-GLIBC_URL=https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.28-r0/glibc-2.28-r0.apk
 LNCR_ZIP_URL=https://github.com/yuk7/wsldl/releases/download/18102701/icons.zip
 LNCR_ZIP_EXE=Alpine.exe

@@ -36,14 +35,11 @@ rootfs.tar.gz: rootfs
        cd rootfs; sudo tar -zcpf ../rootfs.tar.gz `sudo ls`
        sudo chown `id -un` rootfs.tar.gz

-rootfs: base.tar.gz glibc.apk
+rootfs: base.tar.gz
        @echo -e '\e[1;31mBuilding rootfs...\e[m'
        mkdir rootfs
        sudo tar -zxpf base.tar.gz -C rootfs
        sudo cp -f /etc/resolv.conf rootfs/etc/resolv.conf
-       sudo cp -f glibc.apk rootfs/
-       sudo chroot rootfs /sbin/apk add /glibc.apk --allow-untrusted
-       sudo rm -rf rootfs/glibc.apk
        sudo chroot rootfs /sbin/apk update
        sudo chroot rootfs /sbin/apk add bash
        echo "# This file was automatically generated by WSL. To stop automatic generation of this file, remove this line." | sudo tee rootfs/etc/resolv.conf
@@ -54,10 +50,6 @@ base.tar.gz:
        @echo -e '\e[1;31mDownloading base.tar.gz...\e[m'
        $(DLR) $(DLR_FLAGS) $(BASE_URL) -o base.tar.gz

-glibc.apk:
-       @echo -e '\e[1;31mDownloading glibc.apk...\e[m'
-       $(DLR) $(DLR_FLAGS) $(GLIBC_URL) -o glibc.apk
-
 clean:
        @echo -e '\e[1;31mCleaning files...\e[m'
        -rm ${OUT_ZIP}
@@ -67,4 +59,3 @@ clean:
        -rm rootfs.tar.gz
        -sudo rm -r rootfs
        -rm base.tar.gz
-       -rm glibc.apk

If consumer wants glibc for some specific use case, they can install it by themselves. The base WSL image would remain leaner this way.

what's the password?

It's not my windows login password. I basically have one account with no permissions and no way to install software I can see.

Not work import distro

Not work install with Alpine.exe:

C:\Users\Admin>wsl
Системе не удается найти указанный путь.

I fixed it:
run Alpine.exe clean
and run wsl --import Alpine C:\alpine rootfs.tar.gz

[question] upgrade

Hello, I'm wondering if there is an easy way to upgrade an already install version of your project?

It seems I've installed version 3.11.3, and I would like to upgrade to 3.11.5.

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.