Dark Moon est un émulateur de terminal open source développé par Mehdi Boutayeb Ferkatou, étudiant à l'université Paul Sabatier, et édité par MBK logiciel dans sa version UWP sur le Microsoft Store.
Dark Moon est à ce jour la seule distribution GNU/Cygwin disponible sur le Microsoft Store et sur le site de l’éditeur.
Sommaire
Présentation
Dark Moon est un ensemble de logiciels libres basé sur Cygwin rendu portable permettant l’exécution de commandes POSIX dans le but d’émuler un environnement UNIX sur plate‐forme Windows x64. Dark Moon permet de créer des scripts et des programmes utilisant les commandes grâce à une grande collection d’outils GNU et open source intégrée dans le terminal.
Embarquer une collection d’API POSIX sous la forme d’un exécutable nous permet d’envisager une informatique hyper‐transportable pour les émulateurs et distributions GNU/Cygwin, il suffit alors de trouver du courant et un processeur hôte pour exécuter l’application, ce qui aurait été auparavant impossible avant la naissance de Dark Moon. L’objectif technique recherché est de fournir un environnement de développement ainsi qu’un émulateur UNIX cloisonnés dans un exécutable apportant une mobilité au logiciel, permettant d’exécuter l’application sur n’importe quel système Windows.
Idée générale
Dark Moon est autonome, ce qui le distingue d’autres distributions équivalentes. Il est possible d’exécuter des commandes Shell et Bash ainsi que de créer et exécuter des scripts sur la console. L’application est également un outil de développement, notamment en offrant aux utilisateurs un environnement de développement libre tel que GCC.
Cette distribution est également un outil UNIX complet, personnalisable et offrant une mobilité ne demandant pas d’installation préalable. Elle est née en vue de fournir aux utilisateurs des possibilités étendues en complément de l’interpréteur de commande Windows. Il est possible de manipuler des fichiers ainsi que la ruche de registre sans déposer aucune empreinte sur l’ordinateur hôte, afin d’éviter d’apporter des modifications durables à un poste utilisé temporairement.
L’émulateur a fait l’objet d’une ouverture au public du code source, le logiciel libre est sous licence GNU GPL, il n’y a donc pas de restriction d’utilisation et de modification du logiciel tant que les conditions de la licence sont respectées.
En comparaison d’autres distributions Cygwin et GNU/Linux, l’application ne requiert aucun composant externe, les fichiers étant cloisonnés dans l’exécutable même, permettant un emploi à partir d’un stockage amovible comme une clé USB.
Différentes bibliothèques ont été incluses, notamment MinGW qui travaille avec des composants Windows comme la bibliothèque MSVCRT liée à Microsoft Visual C++. Busybox est intégré pour l’implémentation d’un grand nombre des commandes. Par ailleurs, il est également possible d’utiliser un agent d’authentification OpenSSH.
Le code source ainsi que les fichiers compilés ont été emballés dans l’exécutable pour respecter le concept de portabilité (il suffit de l’extraire avec 7zip pour avoir accès aux fichiers sources).
Liste des commandes actuellement disponibles
Voi job_spec [&] history [-c] [-d offset] [n] or hist>
(( expression )) if COMMANDS; then COMMANDS; [ elif C>
. filename [arguments] jobs [-lnprs] [jobspec ...] or jobs >
: kill [-s sigspec | -n signum | -sigs>
[ arg... ] let arg [arg ...]
[[ expression ]] local [option] name[=value] ...
alias [-p] [name[=value] ... ] logout [n]
bg [job_spec ...] mapfile [-d delim] [-n count] [-O or>
bind [-lpsvPSVX] [-m keymap] [-f file> popd [-n] [+N | -N]
break [n] printf [-v var] format [arguments]
builtin [shell-builtin [arg ...]] pushd [-n] [+N | -N | dir]
caller [expr] pwd [-LP]
case WORD in [PATTERN [| PATTERN]...)> read [-ers] [-a array] [-d delim] [->
cd [-L|[-P [-e]] [-@]] [dir] readarray [-n count] [-O origin] [-s>
command [-pVv] command [arg ...] readonly [-aAf] [name[=value] ...] o>
compgen [-abcdefgjksuv] [-o option] [> return [n]
complete [-abcdefgjksuv] [-pr] [-DE] > select NAME [in WORDS ... ;] do COMM>
compopt [-o|+o option] [-DE] [name ..> set [-abefhkmnptuvxBCHP] [-o option->
continue [n] shift [n]
coproc [NAME] command [redirections] shopt [-pqsu] [-o] [optname ...]
declare [-aAfFgilnrtux] [-p] [name[=v> source filename [arguments]
dirs [-clpv] [+N] [-N] suspend [-f]
disown [-h] [-ar] [jobspec ... | pid > test [expr]
echo [-neE] [arg ...] time [-p] pipeline
enable [-a] [-dnps] [-f filename] [na> times
eval [arg ...] trap [-lp] [[arg] signal_spec ...]
exec [-cl] [-a name] [command [argume> true
exit [n] type [-afptP] name [name ...]
export [-fn] [name[=value] ...] or ex> typeset [-aAfFgilnrtux] [-p] name[=v>
false ulimit [-SHabcdefiklmnpqrstuvxPT] [l>
fc [-e ename] [-lnr] [first] [last] o> umask [-p] [-S] [mode]
fg [job_spec] unalias [-a] name [name ...]
for NAME [in WORDS ... ] ; do COMMAND> unset [-f] [-v] [-n] [name ...]
for (( exp1; exp2; exp3 )); do COMMAN> until COMMANDS; do COMMANDS; done
function name { COMMANDS ; } or name > variables - Names and meanings of so>
getopts optstring name [arg] wait [-n] [id ...]
hash [-lr] [-p pathname] [-dt] [name > while COMMANDS; do COMMANDS; done
help [-dms] [pattern ...] { COMMANDS ; }
Voi job_spec [&] history [-c] [-d offset] [n] or hist>
(( expression )) if COMMANDS; then COMMANDS; [ elif C>
. filename [arguments] jobs [-lnprs] [jobspec ...] or jobs >
: kill [-s sigspec | -n signum | -sigs>
[ arg... ] let arg [arg ...]
[[ expression ]] local [option] name[=value] ...
alias [-p] [name[=value] ... ] logout [n]
bg [job_spec ...] mapfile [-d delim] [-n count] [-O or>
bind [-lpsvPSVX] [-m keymap] [-f file> popd [-n] [+N | -N]
break [n] printf [-v var] format [arguments]
builtin [shell-builtin [arg ...]] pushd [-n] [+N | -N | dir]
caller [expr] pwd [-LP]
case WORD in [PATTERN [| PATTERN]...)> read [-ers] [-a array] [-d delim] [->
cd [-L|[-P [-e]] [-@]] [dir] readarray [-n count] [-O origin] [-s>
command [-pVv] command [arg ...] readonly [-aAf] [name[=value] ...] o>
compgen [-abcdefgjksuv] [-o option] [> return [n]
complete [-abcdefgjksuv] [-pr] [-DE] > select NAME [in WORDS ... ;] do COMM>
compopt [-o|+o option] [-DE] [name ..> set [-abefhkmnptuvxBCHP] [-o option->
continue [n] shift [n]
coproc [NAME] command [redirections] shopt [-pqsu] [-o] [optname ...]
declare [-aAfFgilnrtux] [-p] [name[=v> source filename [arguments]
dirs [-clpv] [+N] [-N] suspend [-f]
disown [-h] [-ar] [jobspec ... | pid > test [expr]
echo [-neE] [arg ...] time [-p] pipeline
enable [-a] [-dnps] [-f filename] [na> times
eval [arg ...] trap [-lp] [[arg] signal_spec ...]
exec [-cl] [-a name] [command [argume> true
exit [n] type [-afptP] name [name ...]
export [-fn] [name[=value] ...] or ex> typeset [-aAfFgilnrtux] [-p] name[=v>
false ulimit [-SHabcdefiklmnpqrstuvxPT] [l>
fc [-e ename] [-lnr] [first] [last] o> umask [-p] [-S] [mode]
fg [job_spec] unalias [-a] name [name ...]
for NAME [in WORDS ... ] ; do COMMAND> unset [-f] [-v] [-n] [name ...]
for (( exp1; exp2; exp3 )); do COMMAN> until COMMANDS; do COMMANDS; done
function name { COMMANDS ; } or name > variables - Names and meanings of so>
getopts optstring name [arg] wait [-n] [id ...]
hash [-lr] [-p pathname] [-dt] [name > while COMMANDS; do COMMANDS; done
help [-dms] [pattern ...] { COMMANDS ; }
Voi job_spec [&] history [-c] [-d offset] [n] or hist>
(( expression )) if COMMANDS; then COMMANDS; [ elif C>
. filename [arguments] jobs [-lnprs] [jobspec ...] or jobs >
: kill [-s sigspec | -n signum | -sigs>
[ arg... ] let arg [arg ...]
[[ expression ]] local [option] name[=value] ...
alias [-p] [name[=value] ... ] logout [n]
bg [job_spec ...] mapfile [-d delim] [-n count] [-O or>
bind [-lpsvPSVX] [-m keymap] [-f file> popd [-n] [+N | -N]
break [n] printf [-v var] format [arguments]
builtin [shell-builtin [arg ...]] pushd [-n] [+N | -N | dir]
caller [expr] pwd [-LP]
case WORD in [PATTERN [| PATTERN]...)> read [-ers] [-a array] [-d delim] [->
cd [-L|[-P [-e]] [-@]] [dir] readarray [-n count] [-O origin] [-s>
command [-pVv] command [arg ...] readonly [-aAf] [name[=value] ...] o>
compgen [-abcdefgjksuv] [-o option] [> return [n]
complete [-abcdefgjksuv] [-pr] [-DE] > select NAME [in WORDS ... ;] do COMM>
compopt [-o|+o option] [-DE] [name ..> set [-abefhkmnptuvxBCHP] [-o option->
continue [n] shift [n]
coproc [NAME] command [redirections] shopt [-pqsu] [-o] [optname ...]
declare [-aAfFgilnrtux] [-p] [name[=v> source filename [arguments]
dirs [-clpv] [+N] [-N] suspend [-f]
disown [-h] [-ar] [jobspec ... | pid > test [expr]
echo [-neE] [arg ...] time [-p] pipeline
enable [-a] [-dnps] [-f filename] [na> times
eval [arg ...] trap [-lp] [[arg] signal_spec ...]
exec [-cl] [-a name] [command [argume> true
exit [n] type [-afptP] name [name ...]
export [-fn] [name[=value] ...] or ex> typeset [-aAfFgilnrtux] [-p] name[=v>
false ulimit [-SHabcdefiklmnpqrstuvxPT] [l>
fc [-e ename] [-lnr] [first] [last] o> umask [-p] [-S] [mode]
fg [job_spec] unalias [-a] name [name ...]
for NAME [in WORDS ... ] ; do COMMAND> unset [-f] [-v] [-n] [name ...]
for (( exp1; exp2; exp3 )); do COMMAN> until COMMANDS; do COMMANDS; done
function name { COMMANDS ; } or name > variables - Names and meanings of so>
getopts optstring name [arg] wait [-n] [id ...]
hash [-lr] [-p pathname] [-dt] [name > while COMMANDS; do COMMANDS; done
help [-dms] [pattern ...] { COMMANDS ; }
Syntaxe
Avec les appliquettes de commande mises à disposition, il est possible de créer des scripts aisément, comme présenté ci‐dessous :
#Mon premier script
function()
{
local variableLocal="function 1"
echo "$variableLocal"
echo "Nombres de paramètres : $#"
echo $1
echo $2
}
function "Hello" "World"
Pour lancer le script, placez‐vous dans le dossier contenant le script (obligatoire) :
cd C:\Users\[Userprofile]\Documents\script-Shell
Faites un chmod
:
chmod 700 MonPremierScript
Et exécutez‐le :
Nombres de paramètres : 2
Hello
World
Aller plus loin
- Licence GNU GPL et code source du projet Dark Moon (298 clics)
- Dark Moon Project (1231 clics)
- Cygwin (253 clics)
# Eeeuuuhhhh
Posté par pasBill pasGates . Évalué à 8.
Maintenant qu'on peut faire tourner une distrib Linux entière dans Windows, je pense que ces plateformes perdent leur sens.
[^] # Re: Eeeuuuhhhh
Posté par monseigneur . Évalué à 5.
En fait son avantage c'est qu'il ne requiert aucune installation sur le poste. Ça peut être pratique en cas de dépannage.
[^] # Re: Eeeuuuhhhh
Posté par katsuo49 . Évalué à 4.
Ça dépend ce que tu cherches à faire. Personnellement j'ai testé bash for Windows pour remplacer Git Bash (que j'utilise comme un terminal linux dans Windows), et même si Git Bash est plutôt lent, Bash for Windows l'était beaucoup plus.
Dark Moon se base sur les mêmes outils que Git Bash donc je suppose que niveau performance c'est similaire à ce dernier.
Dans le même temps, le sous système linux a des gros inconvénients :
- il faut l'installer avec les droits administrateurs
- il prend beaucoup de place
- c'est un second OS dans Windows (donc il faut le mettre à jour etc.)
- on est root d'office dans le sous système linux, donc on peut faire un peu n'importe quoi par erreur
- le terminal est un cmd, donc pas très configurable
- il faut penser à lancer la commande bash à chaque fois qu'on veut un terminal (c'est là aussi qu'on perd du temps entre le démarrage du cmd et de bash ensuite)
[^] # Re: Eeeuuuhhhh
Posté par Claude SIMON (site web personnel) . Évalué à 1.
Négatif ! Il faut faire un
sudo
pour pouvoir faire unaptitude update
, par exemple.Pas sûr que ça s'oppose à ton affirmation, mais on peut le lancer dans conEmu, par exemple,
Là aussi, pas sûr que ça s'oppose à ton affirmation, mais on peut le lancer à partir d'une icône.
Pour nous émanciper des géants du numérique : Zelbinium !
[^] # Re: Eeeuuuhhhh
Posté par xcomcmdr . Évalué à 6. Dernière modification le 17 août 2018 à 09:32.
J'utilise GOW avec ConEmu.
Le sous-système Linux pour Windows, merci mais non merci :
"Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)
[^] # Re: Eeeuuuhhhh
Posté par Aerath . Évalué à 2.
Utilisateur de la version Debian du WSL, je ne suis pas root (mais fait partie du groupe sudo) et je n'ai aucun problème à utiliser cmd (si par là tu entends l'émulateur de terminal), une fois celui-ci configuré à mon goût.
J'y retrouves tous les aspects auquels je suis habitué des émulateurs Linux, sauf les onglets et splits mais, pour ma part, je suis plutôt amateur de screen et tmux … En tout cas je serais curieux de savoir quels défauts te font rejeter cmd.
[^] # Re: Eeeuuuhhhh
Posté par bunam . Évalué à 1.
je lance WSL ubuntu dans Git Bash, tout simplement pour avoir le select text = copy text
Mais utilisant aussi macOS et Linux coté serveur c'est vraiment de la bidouille tout ça sous Windows…alias ubuntu='winpty /c/WINDOWS/system32/bash'
[^] # Re: Eeeuuuhhhh
Posté par Mehdi . Évalué à 1.
Compatible également avec Windows 7, 8, 10… Sur le site de l'éditeur.
# ruche de registre ?
Posté par AncalagonTotof . Évalué à 3.
C'est peut-être une traduction correcte, mais il m'a fallu un moment pour comprendre qu'il s'agit certainement de la "registry" … Correct ?
[^] # Re: ruche de registre ?
Posté par Benoît Sibaud (site web personnel) . Évalué à 5.
https://support.microsoft.com/fr-fr/help/256986/windows-registry-information-for-advanced-users
[^] # Re: ruche de registre ?
Posté par AncalagonTotof . Évalué à 3.
Oui, oui, j'avais deviné.
Mais franchement ? Je suis pas le seul à voir cette expression pour la première fois ?
[^] # Re: ruche de registre ?
Posté par xcomcmdr . Évalué à 2. Dernière modification le 17 août 2018 à 09:34.
Si.
Le Registry a plusieurs ruches : HKLM, HKCU, …
"Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)
[^] # Re: ruche de registre ?
Posté par pulkomandy (site web personnel, Mastodon) . Évalué à 9.
La version anglaise dit la même chose:
Donc ce n'est pas une traduction bizarre. La base de registre est découpée en plusieurs ruches.
Je ne connaissais pas ce terme, moi non plus.
# Alerte de l’antivirus
Posté par Olivier . Évalué à 2.
L’antivirus de Comodo (Comodo Security Suite) me lance une alerte quand j’exécute ce logiciel.
Fichier incriminé : C:\Users[user_name]\AppData\Local\Temp\IXP000.TMP\cmdow.exe
Identifiant du malware : ApplicUnwnt@#9l1z84ybav03
[^] # Re: Alerte de l’antivirus
Posté par Mehdi . Évalué à 2.
Étant donné qu'il s'agit d'une application utilisant toutes les ressources systèmes, il est possible qu'il y ait de faux positifs,
L'application dispose d'autorisation RunFullTrust (confiance totale) attribué par l'équipe de certification du Microsoft Store (indispensable)
Cela arrive également avec d'autres distributions Linux sur le Windows Store,
[^] # Re: Alerte de l’antivirus
Posté par steph1978 . Évalué à 2.
Mauvais antivirus, changer d'antivirus.
# Executer des scripts c'est bien ...
Posté par Christophe B. (site web personnel) . Évalué à 1. Dernière modification le 17 août 2018 à 10:23.
Mais peut tu lancer ce scripts via l'excellllllleeeeeennnnnt planificateur de taches de windows ?
[^] # Re: Executer des scripts c'est bien ...
Posté par Mehdi . Évalué à 1.
Normalement Oui
[^] # Re: Executer des scripts c'est bien ...
Posté par xcomcmdr . Évalué à 1.
C'est une blague ?
"Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)
[^] # Re: Executer des scripts c'est bien ...
Posté par Mehdi . Évalué à 1. Dernière modification le 17 août 2018 à 11:54.
C'est possible en lançant un .bat Windows contenant la commande suivante :
# Opensource ??
Posté par crile . Évalué à 1. Dernière modification le 17 août 2018 à 16:07.
J'ai mal cherché ou il n'y a pas de code source ?
Lorsque je clique sur "code source de dark moon", j'obtiens un zip avec le binaire d'installation.
De plus, la description parle d'une application portable alors que le binaire est un fichier d'installation.
Enfin, comme dans les commentaires ci-dessous, il y a le binaire cmdow.exe qui ne plait pas à l'antivirus, donc impossible à lancer.
[^] # Re: Opensource ??
Posté par Benoît Sibaud (site web personnel) . Évalué à 4. Dernière modification le 17 août 2018 à 16:15.
Dans la dépêche :
[^] # Re: Opensource ??
Posté par Mehdi . Évalué à 2.
L'application portable est inclus dans l'installateur, il est possible de récupérer l'exécutable et ainsi l'utiliser sur une clé USB par exemple…
[^] # Re: Opensource ??
Posté par Mehdi . Évalué à 2. Dernière modification le 17 août 2018 à 17:47.
C'est bien l'application portable qu'il faut extraire et non pas le Setup dans lequel se trouve l'application en question.
[^] # Re: Opensource ??
Posté par Tonton Th (Mastodon) . Évalué à 10.
Ces machins windows, ça semble bien compliqué…
# Une mise à jour arrive
Posté par Mehdi . Évalué à 0. Dernière modification le 19 août 2018 à 22:01.
Pour le moment, voici la liste des fonctionnalités qui y seront intégrés :
Gnat, Gcc, G++, Nano, Vim…
source (site web)
[^] # Re: Une mise à jour arrive (v1.0.02)
Posté par Mehdi . Évalué à -1. Dernière modification le 19 août 2018 à 22:10.
Gcc était déjà présent, mais jusque là, c'était surtout orienté scripts shell
# stakanovist alternative
Posté par bandix400 . Évalué à 4.
Je ne sais pas pour les toutes dernières versions de Windows mais si la caractéristique principale des applis portables reste l'opportunité de les utiliser sur des Windows où l'on ne peut rien installer (sic), pour simuler une "cygwin portable" je m'étais contenté de l'installer dans un Windows plus accueillant (où je possédai les droits admin) pour en de recopier toute l"arborescence sur une clé USB … En les lançant de puis la clé ou après avoir copié cette arborescence sur le PC Windows sécurisé (où je ne pouvais rien installer) j'ai eu la surprise de pouvoir exécuter toutes les applis (dont un server SSH : re-sic) …
# V1.0.0.2
Posté par Mehdi . Évalué à 2.
Elle est arrivée:
-L'exécution se déroule dans la même fenêtre,
-Plus de commandes "de bases" ont été intégrés,
-On peut naviguer dans tout le disque C:
-Des compilateurs sont présents (Gnat,G++,Python…)
Lien:
Dak-Moon 1.0.0.2
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.