L'ordinateur que je configure possède trois partitions, une pour Windows 10, une pour Linux et une pour les fichiers et les programmes partagés entre elles. Existe-t-il un moyen d'installer des programmes sur la troisième partition (tels que Python, PyCharm, MATLAB, etc.) afin qu'ils fonctionnent sur les deux systèmes d'exploitation ou dois-je installer sur chaque système d'exploitation leur propre version de Python, C++, etc.? La troisième partition est-elle limitée au partage de fichiers ou peut-elle être utilisée pour partager des IDE, des applications, des compilateurs et des interprètes?
Vous ne pourrez pas installer de programmes dans la troisième partition pour pouvoir les exécuter sur les deux systèmes d'exploitation. Il y a une raison pour laquelle vous avez besoin de téléchargements différents en fonction de votre système d'exploitation. Chaque système d'exploitation a de nombreuses exigences en matière de logiciel.
Vous devriez pouvoir le configurer pour que les licences soient partagées, si vous en avez besoin, et vous pourrez peut-être le configurer de manière à ce que les fichiers produits soient partagés automatiquement, et peut-être même IDE les programmes eux-mêmes devront être installés dans chaque système.
Une solution de contournement pourrait consister à configurer la transmission x11 d’un système d’exploitation à l’autre, mais cela nécessiterait que les deux systèmes d’exploitation fonctionnent en même temps, ce qui est assez banal.
Remarque: si vous aviez 2 partitions avec Ubuntu au lieu d'Ubuntu et Windows, cela serait probablement possible.
Pour presque tous les programmes, non. Cela est dû au fait que Windows et Linux ont des appels API et des appels système différents (API). Les API sont des fonctions et définissent la manière dont les programmes communiquent entre eux. En règle générale, ils sont inclus dans des bibliothèques ou peuvent faire partie du système d'exploitation. Les appels système définissent la manière dont les programmes demandent au support/activité matérielle du noyau. Il est possible de convertir des appels d'API et des appels système d'un système d'exploitation en un autre, mais cela nécessite un effort considérable. WINE est en fait un excellent exemple de la traduction des API Windows en POSIX (par exemple, Linux). Cela crée une couche de compatibilité entre Windows et Linux, permettant à certains logiciels Windows de s'exécuter sous Linux. De plus, Windows et Linux ont différents formats exécutables binaires. Windows possède le format Portable Executable (PE) et Linux le format ELF (Executable Linkable Format).
Tout cela étant dit, je ne pense pas que ce que vous essayez de réaliser soit possible sans un effort significatif. Peut-être (gros peut-être) pourriez-vous installer WINE et le configurer sur votre partition partagée afin qu'il puisse contenir des programmes pour Windows et Linux. Mais c'est une théorie sauvage. Ce que Jeff a dit à propos des licences et d’autres fichiers est probablement plus facile à réaliser.
Voici la configuration de ma partition:
$ lsblk -o NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,MODEL
NAME FSTYPE LABEL MOUNTPOINT SIZE MODEL
sda 931.5G HGST HTS721010A9
├─sda4 ntfs WINRETOOLS 450M
├─sda2 128M
├─sda5 ntfs Image 11.4G
├─sda3 ntfs HGST_Win10 /mnt/d 919G
└─sda1 vfat ESP 500M
nvme0n1 477G Samsung SSD 960 PRO 512GB
├─nvme0n1p5 ext4 NVMe_Ubuntu_16.0 / 44.6G
├─nvme0n1p3 16M
├─nvme0n1p1 ntfs 450M
├─nvme0n1p6 swap Linux Swap [SWAP] 7.9G
├─nvme0n1p4 ntfs NVMe_Win10 /mnt/c 414.9G
├─nvme0n1p2 vfat /boot/efi 99M
└─nvme0n1p7 ntfs Shared_WSL+Linux /mnt/e 9G
nvme0n1p7
est partagé entre Windows et UbuntuJ'ai configuré une partition de 9 Go que WSL (sous-système Windows pour Linux) et Ubuntu peuvent avoir dans leur chemin et exécuté des programmes. Voici l'arbre pour cela:
$ Sudo tree /mnt/e -d
/mnt/e
├── bin
├── boot
│ └── grub
│ ├── fonts
│ ├── i386-pc
│ └── locale
├── Desktop
├── Documents
├── Downloads
│ └── WinScreeny-master
├── etc
│ ├── apt
│ │ ├── sources.list.d
│ │ └── trusted.gpg.d
│ ├── cron.d
│ │ └── test-directory
│ ├── cron.daily
│ ├── cron.hourly
│ ├── cron.monthly
│ ├── cron.weekly
│ ├── default
│ ├── ssmtp
│ └── systemd
│ ├── network
│ ├── system
│ │ ├── bluetooth.target.wants
│ │ ├── default.target.wants
│ │ ├── display-manager.service.wants
│ │ ├── final.target.wants
│ │ ├── getty.target.wants
│ │ ├── graphical.target.wants
│ │ ├── hibernate.target.wants
│ │ ├── hybrid-sleep.target.wants
│ │ ├── multi-user.target.wants
│ │ ├── network-online.target.wants
│ │ ├── paths.target.wants
│ │ ├── printer.target.wants
│ │ ├── sleep.target.wants
│ │ ├── sockets.target.wants
│ │ ├── suspend.target.wants
│ │ ├── sysinit.target.wants
│ │ └── timers.target.wants
│ └── user
├── lib
│ └── systemd
│ └── system-sleep
├── $RECYCLE.BIN
│ └── S-1-5-21-1568003092-1971238075-3041751339-1001
├── System Volume Information
├── Temporary Work
├── usr
│ ├── local
│ │ └── bin
│ │ ├── bell
│ │ │ └── sounds
│ │ ├── startup-scripts
│ │ └── zap
│ │ └── Assembly-Intro-hello
│ │ ├── BeOS
│ │ ├── FreeBSD
│ │ └── Linux
│ └── share
│ └── plymouth
│ └── themes
│ ├── details
│ ├── earth-sunrise
│ ├── text
│ ├── tribar
│ ├── ubuntu-logo
│ └── ubuntu-text
└── wsl-linux-tmp
71 directories
J'ai pris un de mes programmes bash: Application qui verrouille l'écran après un laps de temps défini pour Ubunt et l'a modifié pour le reconnaître lors de son exécution sous Windows 10 et émettre des commandes powershell
à la place de Ubuntu. commandes pour les bulles de message et les sons du système.
Par exemple, voici un extrait de code permettant de vérifier si l'environnement est Windows et en utilisant une commande différente de celle utilisée dans Ubuntu:
if [[ $WSL_running == true ]]; then
powershell.exe -c '(New-Object Media.SoundPlayer "C:\Windows\Media\notify.wav").PlaySync();'
else
ogg123 '/usr/share/sounds/ubuntu/stereo/phone-outgoing-calling.ogg' ;
fi
Voici le code bash complet une fois l’application hybride Windows/Ubuntu créée:
$ cat /mnt/e/bin/lock-screen-timer
#!/bin/bash
# NAME: lock-screen-timer
# PATH: $HOME/bin
# DESC: Lock screen in x minutes
# CALL: Place on Desktop or call from Terminal with "lock-screen-timer 99"
# DATE: Created Nov 19, 2016. Last revision Nov 12, 2017.
# UPDT: Updated to support WSL (Windows Subsystem for Linux)
# NOTE: Time defaults to 30 minutes.
# If previous version is sleeping it is killed.
# Zenity is used to pop up entry box to get number of minutes.
# If zenity is closed with X or Cancel, no screen lock timer is launched.
# Pending lock warning displayed on-screen at set intervals.
# Write time remaining to ~/.lock-screen-timer-remaining
MINUTES="$1" # Optional parameter 1 when invoked from terminal.
# if no parameters set default MINUTES to 30
if [ $# == 0 ]; then
MINUTES=30
fi
DEFAULT="$MINUTES" # When looping, minutes count down to zero. Save deafult for subsequent timers.
# Check if lock screen timer already running
pID=$(pgrep -f "${0##*/}") # All PIDs matching lock-screen-timer name
PREVIOUS=$(echo "$pID" | grep -v ^"$$") # Strip out this running copy ($$$)
if [ "$PREVIOUS" != "" ]; then
kill "$PREVIOUS"
rm ~/.lock-screen-timer-remaining
zenity --info --title="Lock screen timer already running" --text="Previous lock screen timer has been terminated."
fi
# Running under WSL (Windows Subsystem for Linux)?
if cat /proc/version | grep Microsoft; then
WSL_running=true
else
WSL_running=false
fi
while true ; do # loop until cancel
# Get number of minutes until lock from user
MINUTES=$(zenity --entry --title="Lock screen timer" --text="Set number of minutes until lock" --entry-text="$DEFAULT")
RESULT=$? # Zenity return code
if [ $RESULT != 0 ]; then
break ; # break out of timer lock screen loop and end this script.
fi
DEFAULT="$MINUTES" # Save deafult for subsequent timers.
if [[ $MINUTES == 0 ]] || [[ $MINUTES == "" ]]; then
break ; # zero minutes considered cancel.
fi
# Loop for X minutes, testing each minute for alert message.
(( ++MINUTES ))
while (( --MINUTES > 0 )); do
case $MINUTES in 1|2|3|5|10|15|30|45|60|120|480|960|1920)
notify-send --urgency=critical --icon=/usr/share/icons/gnome/256x256/status/appointment-soon.png "Locking screen in ""$MINUTES"" minute(s)." ;
if [[ $WSL_running == true ]]; then
powershell.exe -c '(New-Object Media.SoundPlayer "C:\Windows\Media\notify.wav").PlaySync();'
else
ogg123 '/usr/share/sounds/ubuntu/stereo/phone-outgoing-calling.ogg' ;
fi
;;
esac;
# Record number of minutes remaining to file other processes can read.
echo "$MINUTES Minutes" > ~/.lock-screen-timer-remaining
sleep 60
done
rm ~/.lock-screen-timer-remaining # Remove work file others can see our progress with
if [[ $WSL_running == true ]]; then
# Call lock screen for Windows 10
rundll32.exe user32.dll,LockWorkStation
else
# Call screen saver lock for Unbuntu versions > 14.04.
dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
fi
# Reset sound to Laptop or HDMI TV - Uncomment to fix sound device changing
# sleep 5 # HDMI deactivates when screen turned off. Give 5 seconds for TV to resync screen.
# hotplugtv
done # End of while loop getting minutes to next lock screen
exit 0 # Closed dialog box or "Cancel" selected.