私がセットアップしているコンピューターには、Windows 10用、Linux用、ファイルとプログラム間で共有するための3つのパーティションがあります。 3番目のパーティション(Python、PyCharm、MATLABなど)にプログラムをインストールして両方のOSで動作する方法はありますか、または各OSにPython、C++などの独自のバージョンをインストールする必要がありますか? 3番目のパーティションはファイルの共有に限定されていますか、それともIDE、アプリケーション、コンパイラ、インタープリターの共有に使用できますか?
3番目のパーティションにプログラムをインストールして、両方のOSで実行できるようにすることはできません。 OSに応じて異なるダウンロードを行う必要がある理由があります。各OSにはソフトウェアのさまざまな要件があります。
ライセンスが必要な場合はライセンスを共有するように設定する必要があります。また、生成されるファイルが自動的に共有されるように設定できる場合があります。おそらくIDE設定でもプログラム自体を各システムにインストールする必要があります。
1つの回避策は、1つのOSから他のOSへのx11転送を設定することですが、そのためには両方のOSを同時に実行する必要があり、かなり厄介です。
サイドノートとして、UbuntuとWindowsの代わりにUbuntuで2つのパーティションがある場合、これはおそらく可能でしょう。
ほとんどすべてのプログラムで、いいえ。これは、WindowsとLinuxが異なるAPI(アプリケーションプログラミングインターフェイス)呼び出しとシステム呼び出しを持っているためです。 APIは関数であり、プログラムが相互に通信する方法を定義します。通常、それらはライブラリに含まれているか、オペレーティングシステムの一部である場合があります。システムコールは、プログラムがカーネルにハードウェアサポート/アクティビティを要求する方法を定義します。あるオペレーティングシステムのAPIコールとシステムコールを別のオペレーティングシステムに変換することは可能ですが、多大な労力が必要です。 WINEは、実際にはWindows APIをPOSIX(Linuxなど)に変換する典型的な例です。これにより、WindowsとLinuxの間に互換性レイヤーが作成され、一部のWindowsソフトウェアをLinuxで実行できるようになります。さらに、WindowsとLinuxには異なるバイナリ実行形式があります。 WindowsにはPortable Executable(PE)形式があり、LinuxにはELF(Executable Linkable Format)があります。
それはすべて、あなたが達成しようとしていることは、多大な努力なしに可能だとは思いません。おそらく(大きなかもしれませんが)WINEをインストールし、共有パーティションに構成して、WindowsとLinuxの両方のプログラムを保持できるようにします。しかし、それはワイルドな理論です。ライセンスや他のファイルに関して仲間のユーザーJeffが言ったことは、可能性が高く、達成するのがはるかに簡単です。
パーティションのセットアップは次のとおりです。
$ 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
はWindowsとUbuntuで共有されますWSL(Linux用Windowsサブシステム)とUbuntuの両方がパスに持つことができる9 GBパーティションをセットアップし、プログラムを実行します。以下がそのツリーです。
$ 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
私はbashプログラムの1つを取りました: Ubuntuの設定時間後に画面をロックするアプリケーション 、Windows 10で実行しているときに認識されるように修正し、メッセージバブルとシステムサウンドに対してUbuntuコマンドの代わりにpowershell
コマンドを発行します。
たとえば、環境がWindowsであるかどうかを確認し、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
アプリケーションがWindows/Ubuntuハイブリッドになった後の完全なbashコードは次のとおりです。
$ 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.