Los kenel de linux (los fuentes) están en la página https://github.com/microsoft/WSL2-Linux-Kernel/releases/
*Solo válido para WSL2* NOTA: Aconseajble hacerlo con Ubuntu WSL..parece que con alguna otra distribución no compila correctamente.
A día de hoy, el kernel que está distribuido a traves de WU es el 4.19.128-microsoft-standard (se puede ver, ejecutando el comando uname -r en cualquier distribución WSL). Pero como se puede ver en la página de GitHub anterior, ya están los fuentes de otros kernel de la versión 5.
El bianrio no se localiza en la red. Pero teniendo los fuentes, podemos compilar el kernel y usarlo.
Para compilarlo, por ejemplo el linux-msft-5.4.81 el cual es el ultimo a dia de hoy, es sencillo: en cualquier distribucion WSL que tengamos instalada (Ubuntu, Kali, o la que sea):
1) Instalar los paquetes de linux necesarios para la compilacion (solo habria que hacerlo una vez)
2) Recuperamos el fuente de la pagina anterior que queremos instalar:
3) Optimizar el kernel:
De esta manera, podemos ver las opciones por defecto, e incluso modificarlar. Salimos guarandolas con el nombre .config (fijarse en el punto que precede a config).
4) Compilar el kernel:
el parámetro -j 8 indica que usemos para compilar 8 cores. Usar las máximas que tenga vuestro equipo ya que, si no, la compilación usaría por defecto un solo core y se eternizaría compilando.
5) Copiarlo a nuestra carpeta de usuario:
Cambiar <username> por vuestro usuario de windows (como podeis ver, WSL monta los discos de vuestro sistema, en particular el disco c:\ en /mnt/c por lo que se puede usar el comando copy -cp en linux- para copiarlo a nuestro sistema).
6) Ahora ya en windows, sabemos que el WSL busca un fichero .wslconfig (fijarse en el punto anterior al nombre) en nuestra carpeta de usuario y si existe, hace caso a lo que alli pone para confiruar el WSL 2.
Por tanto nos creamos con notepad en nuestra carpeta de usuario un fichero de texto llamado .wslconfig con el contenido:
[wsl2]
kernel=C:\\Users\\<username>\\bzImage
Cambiar <username> por vuetrso usuario, y es correcta la sintaxis de usar un doble \\ en la ruta completa a vuestro usuario en dicho fichero.
Con esto ya está. Ahora, ejecutamos simplemente:
wsl --shutdown
Y a continuación arrancar cualquier distribucion de linux WSL. Con el comando uname -r veremos que ha cogido dicho kernel.
Si queremos en cualquier momento volver al antiguo es tan sencilllo como borrar o renombrar ese archivo .wslconfig
*Solo válido para WSL2* NOTA: Aconseajble hacerlo con Ubuntu WSL..parece que con alguna otra distribución no compila correctamente.
A día de hoy, el kernel que está distribuido a traves de WU es el 4.19.128-microsoft-standard (se puede ver, ejecutando el comando uname -r en cualquier distribución WSL). Pero como se puede ver en la página de GitHub anterior, ya están los fuentes de otros kernel de la versión 5.
El bianrio no se localiza en la red. Pero teniendo los fuentes, podemos compilar el kernel y usarlo.
Para compilarlo, por ejemplo el linux-msft-5.4.81 el cual es el ultimo a dia de hoy, es sencillo: en cualquier distribucion WSL que tengamos instalada (Ubuntu, Kali, o la que sea):
1) Instalar los paquetes de linux necesarios para la compilacion (solo habria que hacerlo una vez)
Código:
sudo apt update && sudo apt -y upgrade sudo apt -y install build-essential libncurses-dev bison flex libssl-dev libelf-dev cpu-checker qemu-kvm aria2
Código:
aria2c -x 10 https://github.com/microsoft/WSL2-Linux-Kernel/archive/[COLOR=#e67e22][B]linux-msft-5.4.81[/B][/COLOR].tar.gz tar -xf WSL2-Linux-Kernel-[COLOR=#e67e22][B]linux-msft-5.4.81[/B][/COLOR].tar.gz cd WSL2-Linux-Kernel-[COLOR=#e67e22][B]linux-msft-5.4.81[/B][/COLOR]/
Código:
cp Microsoft/config-wsl .config make menuconfig
4) Compilar el kernel:
Código:
make -j 8
5) Copiarlo a nuestra carpeta de usuario:
Código:
cp arch/x86/boot/bzImage /mnt/c/Users/<username>/bzImage
6) Ahora ya en windows, sabemos que el WSL busca un fichero .wslconfig (fijarse en el punto anterior al nombre) en nuestra carpeta de usuario y si existe, hace caso a lo que alli pone para confiruar el WSL 2.
Por tanto nos creamos con notepad en nuestra carpeta de usuario un fichero de texto llamado .wslconfig con el contenido:
[wsl2]
kernel=C:\\Users\\<username>\\bzImage
Cambiar <username> por vuetrso usuario, y es correcta la sintaxis de usar un doble \\ en la ruta completa a vuestro usuario en dicho fichero.
Con esto ya está. Ahora, ejecutamos simplemente:
wsl --shutdown
Y a continuación arrancar cualquier distribucion de linux WSL. Con el comando uname -r veremos que ha cogido dicho kernel.
Si queremos en cualquier momento volver al antiguo es tan sencilllo como borrar o renombrar ese archivo .wslconfig
Comentario