Apa cara termudah untuk menjalankan aplikasi GUI di Windows Subsystem untuk Linux pada 2018?


89

Saya mencari-cari, dan saat ini ada dua metode yang disarankan; menginstal perangkat tambahan untuk Windows Subsystem untuk Linux dan menginstal XServer.

Saya ingin tahu metode mana yang paling bebas dari kerumitan (mudah untuk menginstal DAN untuk digunakan), dan mana yang kurang memori-berat.

Saya hanya ingin Synaptic dan CMake. Mengapa itu tidak menjadi fitur bawaan?


1
Perasaan pribadi saya adalah bahwa WSL adalah lelucon! Mengapa tidak sekadar memuat VM?
Charles Green

3
@CharlesGreen memory ... Saya saat ini menggunakan laptop yang cukup tua.
George Hovhannisian

Saya juga, tetapi saya menjalankan Windows 10 dalam VM untuk satu program yang saya butuhkan yang hanya berjalan di Windows
Charles Green

1
@CharlesGreen VirtualBox?
George Hovhannisian

"Saya benar-benar ingin menjalankan Steam dan akhirnya memainkan Portal 2 di Linux! ' WSL bukan Linux jadi tidak akan pernah terjadi. WSL juga tidak dimaksudkan sebagai platform game. Ini adalah platform untuk melepaskan kekuatan BASH ke Windows. Tidak lebih. Dan untuk menjalankan steam pada WSL Anda tidak hanya membutuhkan desktop di WSL Tetapi juga STEAM untuk mendukung WSL. Tidak akan pernah terjadi
Rinzwind

Jawaban:


29

Jawaban singkatnya adalah Anda tidak bisa karena WSL belum mendukung fungsi ini. WSL bukan instalasi Linux lengkap dengan kernel Linux, ini memungkinkan Anda untuk menjalankan beberapa perintah / binari linux asli pada kernel Windows (Microsoft) dan memiliki keterbatasan.

Lihat https://github.com/Microsoft/WSL/issues/2356

Anda dapat, bagaimanapun, menginstal server X pihak ke-3, seperti xming, dan ssh ke WSL Anda.

https://virtualizationreview.com/articles/2017/02/08/graphical-programs-on-windows-subsystem-on-linux.aspx

Saya tidak menyalin tutorial itu di sini karena cukup ada di mana-mana (X over ssh) dan saya berharap beberapa aplikasi tidak akan bekerja bahkan dengan teknik ini.


Jadi, bebas repot bukan pilihan, kalau begitu? Mungkin seseorang akan membuat Synaptic untuk Windows untuk bekerja dengan WSL di masa depan ....
George Hovhannisian

1
Program grafis pada WSL tidak berarti Anda dapat menggunakan Steam pada WSL. Anda perlu Valve untuk membuat dukungan untuk WSL.
Rinzwind

7
Ingatlah bahwa Anda tidak harus menggunakan SSH sama sekali. Cukup atur DISPLAYdan Anda siap melakukannya (untuk xming dan VcXsrv).
dma1324

5
Saya akan menurunkan suara jawaban ini karena 1: tidak sepenuhnya akurat, dan 2: tidak dalam semangat pertanyaan - ya, Anda dapat menjalankan aplikasi gui di wsl dengan xserver. Op tidak bertanya tentang aplikasi yang didukung. (instal vcxserve atau yang serupa, sudo apt-get install synaptic setelah mengatur DISPLAY, tidak perlu ssh) ...
decuser

1
@decuser Upvote jawaban yang lebih baik: Jika tidak ada, tulis satu.
Thorbjørn Ravn Andersen

62

VcXsrv

Saya memilih untuk menggunakan VcXsrvWSL (Windows 10 Subsystem untuk Linux). Saya sarankan semua orang melakukan riset antara xming(jawaban yang diterima) dan VcXsrv sebelum memilih satu atau yang lain untuk dukungan Graphical User Interface (GUI) di Windows 10 Ubuntu 16.04.

Instalasi

Instalasi lurus ke depan. Pada 17 Maret 2019 Anda cukup menerima default. Jika Anda ingin menelepon geditdari dalam Bash Shell / Terminal Anda, Anda perlu mengedit ~/.bashrcdan menyisipkan baris ini:

export DISPLAY=localhost:0.0

Apa yang dapat Anda lakukan setelah VcXsrv diinstal?

Saya bisa lari:

sudo apt install ubuntu-desktop
sudo apt install yad
sudo apt install gedit

... untuk menginstal perangkat lunak desktop GUI. Ini kemudian memungkinkan saya untuk menjalankan geditdan nautilus. Juga saya kemudian dapat menginstal aplikasi GUI tertentu melalui CLI (Command Line Interface) menggunakan aptatau apt-getperintah.

Ketika saya ingin mencoba banyak skrip bash Ubuntu saya di dalam WSL VcXsrv harus diinstal jadi zenitydan yadkotak dialog x-windows ditampilkan untuk input pengguna.

Seperti orang lain telah mencatat GUI dalam WSL tidak sempurna dan Anda dapat menghabiskan waktu untuk memecahkan masalah. Juga beberapa perangkat lunak GUI tidak akan berfungsi di WSL.

Catatan pengaturan

Saya memodifikasi /etc/environmentmenu tweak GUI:

PATH="/mnt/e/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
export LIBGL_ALWAYS_INDIRECT=Yes
export DISPLAY=localhost:0.0
  • /mnt/e/binadalah jalur yang tidak biasa karena ini adalah tempat saya menyimpan skrip yang digunakan di Windows 10 dual boot WSL dan Ubuntu 16.04 dual boot. Sebagian besar pengguna tidak akan memasukkan ini pada mesin mereka.

1
@GeorgeHovhannisian Keuntungan bagi saya adalah saya bisa menggunakan gedityang saya kenal dari pengalaman Ubuntu Desktop. Juga banyak skrip bash saya menggunakan zenityatau yaduntuk kotak dialog x-windows. Skrip bash ini tidak akan berjalan kecuali VcXsrvdiinstal.
WinEunuuchs2Unix

6
+1 hanya lucu: Bagaimana saya bisa secara diam-diam mengubah sistem Windows saya ke Ubuntu dari dalam?
hidangan penutup

8
Ini tidak menyakitkan: Di Windows, unduh VcXsrv menggunakan tautan yang disediakan. Menginstal dan meluncurkannya. Lalu saya membuka shell Ubuntu dan masuk export DISPLAY=:0. Sekarang saya bisa menjalankan xhost, xeyesdan gnuplotdi Ubuntu (asalkan program ini sudah diinstal di WSL Ubuntu).
Daniel K.

2
@daftarkan +1 ke komentar Anda. Ini lucu ganda mengingat nama pengguna saya berarti "Terbatas oleh Pengguna Windows beralih ke Unix". Berkat WSL saya menggunakan Windows 10 sesekali sekarang karena saya dapat menjalankan Ubuntu di dalamnya. Panggil aku WinEunuuchs2Unix2WinSub4Linux? : p
WinEunuuchs2Unix

2
juga export LIBGL_ALWAYS_INDIRECT=1dan Anda mendapatkan akselerasi perangkat keras di aplikasi GL melalui X menggunakan VcXsrv
Jippers

19

Saya sudah memiliki pengalaman yang sangat positif dengan VcXsrv di Win 10 Bash di Ubuntu di Windows (Ubuntu 16.04 Xenial x86_64 Linux 4.4.0-17074-Microsoft). Saya tidak fokus menjalankan Unity desktop karena tidak berguna dan menghabiskan sumber daya. Saya hanya menjalankan aplikasi dari bash dalam mode GUI dari desktop Windows10 menggunakan XServer.

  1. Instal VcXsrv dari sini di Sourceforge

  2. Jalankan aplikasi VcXsrv secara langsung, jangan luncurkan XLaunch. Anda akan melihat localhost:0.0 - 0 clientsketika Anda mengarahkan kursor ke ikon di Win10 Taskbar

  3. Buka Bash Ubuntu:

    cd /mnt
    

    (hasil dalam localhost @ localhost: / mnt $)

    cd .. 
    

    (localhost @ localhost: / $ artinya perintah ini membawa Anda ke awal hard drive sejauh yang dapat dilihat WSL ...)

    sudo apt-get install dbus synaptic nautilus --install-suggests --show-progress
    

    (ini akan menginstal "dbus" untuk membuat konektor virtual untuk GUI, "Synaptic Package Manager" dan "Nautilus" file explorer untuk unity-desktop

    cd /usr/share/dbus-1 && sudo vi session.conf
    

    (Ketika session.confdibuka di vi editor)

    Tekan iuntuk masuk ke mode penyisipan dan tambahkan

    <!-- <listen>unix:tmpdir=/tmp</listen> || Original Command --> to preserve original rules
    

    dari tambahkan:

    <listen>tcp:host=localhost,bind=0.0.0.0,port=0</listen>
    <auth>EXTERNAL</auth>
    <auth>DBUS_COOKIE_SHA1</auth>
    <auth>allow_anonymous</auth> 
    

    Tekan ESC ketika Anda selesai mengedit file dan :wquntuk menyimpan file.

    Jalankan perintah ini dan periksa hasilnya:

    $ export DISPLAY=localhost:0
    $ sudo service dbus start
    * Starting system message bus dbus                 [OK]
    $ echo $DISPLAY
    localhost:0
    
  4. Kamu selesai! Sekarang jalankan saja synaptic, nautilus atau firefox dari Bash dan mereka harus memuat pada desktop Win10. Opsi GUI seperti ini bersifat buggy tetapi operasional. Anda dapat menginstal ubuntu-desktop, unity, ccsm, compizdan mencoba untuk menjalankan Unity Desktop untuk Ubuntu . Saya tidak mencoba untuk mengatur "Steam" karena saya masih menderita rrying untuk menjalankan "Unreal", Selamat mencoba :)

Jika seseorang tahu cara menjalankan gnome-terminalXServer dan bukannya XTerm, silakan bagikan ...

PS
Anda dapat menambahkan VcXsrv sebagai bootable Win10

Untuk memaksimalkan sumber Anda dengan "Steam" sebagaimana ditentukan dalam posting asli, sesuaikan sedikit Windows Anda untuk manajemen paket jaringan (untuk menurunkan latensi) dan prioritas CPU / GPU untuk membuat Win10XBox ... :)

Meskipun Anda akan menjalankan "Steam" di bawah "Unix" shell masih "Windows" yang memungkinkan Anda untuk meluncurkan "Steam" pada "Unix" ...

Tcp Prep:;

Di regedit:

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces

Di sini Anda perlu melihat daftar sub-kunci untuk menemukan entri adaptor jaringan yang digunakan untuk terhubung ke Internet. Jika Anda menggunakan DHCP, Anda perlu mencari DhcpIPAdddressentri (dengan nilai data sistem TIDAK :0.0.0.0) untuk menemukan adaptor yang benar.

Setelah Anda menemukan kunci yang benar, klik kanan dan pilih New> Dword (32-bit) Value .

Beri nama TcpFrequency dan klik ok.

Klik dua kali nilai setelahnya dan tetapkan nilai Desimal ke 1. (Untuk mengembalikan pengaturan default, ubah nilainya menjadi 2 atau hapus tombol) Sekarang navigasikan ke tombol berikut: HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ

Klik kanan tombol itu lagi dan pilih New> Dword (32-bit) Value .

Beri nama parameter baru TcpDelay

Klik dua kali setelahnya dan ubah nilainya Decimal menjadi 1. (Untuk mengembalikan kunci pada titik waktu kemudian ubah ke 0 atau hapus kunci)

Algoritma Nagle

Algoritma Nagle menggabungkan beberapa paket kecil menjadi satu paket yang lebih besar untuk transmisi yang lebih efisien. Ini dirancang untuk meningkatkan efisiensi pengiriman data. Menonaktifkan "cerewet" dapat membantu mengurangi latensi / ping di beberapa game. Algoritma Nagle diaktifkan di Windows secara default. Untuk menerapkan penyesuaian ini, modifikasi kunci registri berikut.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{NIC-id}

Untuk itu {NIC-id}, cari yang dengan alamat IP Anda tercantum; di bawah {NIC-id}kunci ini buat nilai DWORD berikut:

  • TcpFrequency dan atur ke 1 untuk menonaktifkan "cerewet" untuk bermain game.
  • TCPDelay dan atur juga ke 1 untuk menonaktifkan "cerewet"
  • TcpTicks dan atur ke 0

catatan:

Beberapa laporan mengatakan bahwa tweak mengurangi latensi saat bermain Dota 2 dan League of Legends tetapi tidak berhasil untuk beberapa orang. Saya telah mencobanya dan latensi saya meningkat dari 110 menjadi 90ms (SEA Server) saat bermain Dota 2.

Indeks Pelambatan Jaringan

Windows menerapkan mekanisme pelambatan jaringan, ide di balik pelambatan tersebut adalah bahwa pemrosesan paket jaringan dapat menjadi tugas yang membutuhkan banyak sumber daya. Adalah bermanfaat untuk mematikan pembatasan seperti itu untuk mencapai throughput maksimum.

Untuk menerapkan penyesuaian ini, jalankan regedit dan ubah registri

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile. 

Di bawah SystemProfile , buat nilai DWORD dan beri nama ke NetworkThrottlingIndex kemudian tetapkan nilai Heksadesimalnya menjadi ffffffff untuk game dan throughput maks: ffffffff sepenuhnya menonaktifkan pelambatan.


System Gaming Responsiveness (Tidak begitu yakin tentang yang satu ini :)

Streaming multimedia dan beberapa game yang menggunakan layanan "Multimedia Class Scheduler" (MMCSS) hanya dapat memanfaatkan hingga 80% dari CPU. Layanan "Penjadwal Kelas Multimedia" (MMCSS) memastikan akses yang diprioritaskan ke sumber daya CPU, tanpa menyangkal sumber daya CPU untuk aplikasi latar belakang prioritas rendah.

Untuk menerapkan perubahan ini, jalankan regedit dan ubah kunci registri

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile. 

Dari sana, buat DWORD baru dan beri nama ke SystemResponsiveness atur nilainya desimal menjadi 00000000 untuk gaming / streaming murni.

Di sarang Registry yang sama dengan tweak di atas, Anda juga dapat mengubah prioritas Game. Untuk menerapkan penyesuaian ini, buka

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games

dan ubah nilai registri berikut:

  • "Prioritas GPU" mengubah nilainya menjadi 8 untuk bermain game.
  • "Prioritas" diatur ke 1 untuk bermain game.

Semua sorakan untuk "tidak diketahui" (maafkan saya sudah cukup lama sejak saya menyalin petunjuk Anda) penulis tweak Windows = Xbox ini ...

PPS: Jika XServer gagal pada apa yang ingin Anda lakukan, coba temukan solusinya dengan Docker.


6-5-7; : 5-6-7 ...
tenedas

Terima kasih atas jawaban yang sangat terperinci. Kalau tidak, terima kasih kepada siapa pun yang menyarankan pengeditan, saya tidak percaya, orang-orang sebenarnya menyarankan solusi untuk menjalankan Steam. Di sisi lain, orang-orang masih terus menyarankan desktop, yang saya masih tidak tahu apa yang akan digunakan itu, saya pribadi bahkan tidak memerlukan file manager, apalagi desktop flex penuh.
George Hovhannisian

Saya menginstal Xming pada Windows, kemudian menggunakan semua langkah dari bagian 3. di sini (di atas) - instal dbus (tidak perlu synaptic atau nautilus, tetapi nautilus adalah pemeriksaan yang baik), buat edit session.conf, dan mulai dbus layanan. Nautilus kemudian mulai dengan sukses dengan beberapa pesan kesalahan.
MikeW

Apa yang Anda maksud dengan "Jalankan aplikasi VcXsrv secara langsung" - bagaimana tepatnya melakukan ini?
Erel Segal-Halevi

Ubah <auth>allow_anonymous</auth>ke <auth>ANONYMOUS</auth>, lalu, service dbus restartdan gnome-terminalseharusnya berfungsi
ZAB

9

Meskipun lingkungan desktop GUI lengkap tidak 'secara resmi' didukung oleh Microsoft, itu dapat berfungsi.

Menghidupkan atau mematikan fitur Windows
Mengaktifkan Subsistem Windows untuk Linux
Restart Komputer
Luncurkan
Pencarian Microsoft Store untuk Ubuntu
Pilih Ubuntu 18.04 di bawah Aplikasi
Klik Dapatkan
Luncurkan Ubuntu dan tunggu instalasi
Setel nama pengguna dan kata sandi

Jalankan Perintah berikut:

sudo apt-get update -y
sudo apt-get install ubuntu-desktop -y
sudo apt-get install xfce4 xorg xrdp -y
sudo sed -i 's/port=3389/port=3390/g' /etc/xrdp/xrdp.ini

Buat dan modifikasi .xsession

cd /home/user/
sudo vim .xsession

Tambahkan teks:

gnome-session --session=ubuntu-2d

Simpan dan keluar vi

sudo chmod 755 .xsession
sudo systemctl enable xrdp

Anda memerlukan akun kedua di Ubuntu

sudo adduser remote
sudo usermod -aG sudo remote

Ubah startwm.sh

cd /etc/xrdp
sudo chmod 777 startwm.sh
vim startwm.sh

Komentari dua baris terbawah

#test -x /etc/X11/Xsession && exec /etc/X11/Xsession
#exec /bin/sh /etc/X11/Xsession

Tambahkan teks:

startxfce4

Simpan dan keluar vi

exit

Di Windows, mulai ulang Ubuntu dan jalankan:

sudo /etc/init.d/xrdp start

Di Windows jalankan
Komputer mstsc.exe : 127.0.0.1:3390
Biarkan nama pengguna kosong
Sambungkan

Sesi: Xorg
nama pengguna:
kata sandi jarak jauh : kata sandi

Nikmati xfce!

Setelah selesai, tutup koneksi desktop jarak jauh
Kembali ke baris perintah Ubuntu

sudo /etc/init.d/xrdp stop
exit

1
Ini bekerja Saya menggunakan ubuntu 16. Saya tidak memiliki tampilan GUI asli ubuntu. Xorg tidak tersedia dalam daftar
xrdp

Saya terus menerima pesan kesalahan berikut - "gagal masuk untuk tampilan 0". Pikiran? Mengapa xrdp tidak mengizinkan saya untuk masuk?
J-Dizzle

2

Karena Anda menginginkannya mudah ... Ada aplikasi di Microsoft Store bernama x410 . Ini pada dasarnya server Cygwin X11 tanpa menggunakan Cygwin itu sendiri. Setelah pemasangan - yaitu nol konfigurasi - Anda dapat menjalankan Aplikasi WSL X11! (atau bahkan seluruh desktop). Anda mungkin ingin memasukkan baris berikut ke .bashrc Anda (dari akun pengguna WSL Anda) sehingga Anda dapat menjalankan aplikasi dari terminal bash Anda.

### Setup a D-Bus instance that will be shared by all X-Window apps
pidof dbus-launch 1> /dev/null || dbus-launch --exit-with-x11 1> /dev/null 2> 
/dev/null

## Export
export DISPLAY=127.0.0.1:0.0

Saya membeli x410 dengan salep sekitar 5 euro .. Jadi, jika terlalu banyak, mungkin menunggu penjualan!


2

Jika Anda ingin solusi rak yang mudah, gunakan MobaXTerm . Ini adalah emulator terminal multitabbed yang hebat dengan dukungan langsung untuk WSL, dan memiliki server X yang dioptimalkan. Saya menggunakan sinaptik sepanjang waktu di Moba. Bahkan RStudio.


1

Saya memilih jawaban Panther bukan hanya karena itu satu-satunya, tetapi juga karena itu jawaban yang benar; tidak ada cara yang mudah untuk menjalankan aplikasi gui.

Saya juga menggunakan tutorial ini , dengan beberapa perubahan:

  1. Saya tidak menginstal xfce, karena saya tidak tahu mengapa saya membutuhkan desktop.
  2. Memilih Multiple Windowsdi XLaunch(No DE, maka tidak perlu untuk satu jendela raksasa)
  3. Tidak perlu untuk memperbaiki mkdir dan tidak perlu untuk terminal yang terpisah.

Aplikasi gui apa yang saya pasang? Hanya Synaptic dan CMake, karena saya benar-benar tidak dapat memikirkan hal lain yang saya perlukan di WSL.

Saya tidak melakukan VM / Dual Boot, karena alasan yang sama Panther tunjukkan; Saya membutuhkan lingkungan dev yang nyaman (bagi saya), bukan OS fleksibel penuh.


vagrantup.com/docs/other/wsl.html - vagrant adalah alat yang sangat baik untuk dengan cepat memutar lingkungan dev. Sepertinya mendukung wsl. Padahal saya belum mencobanya.
TamusJRoyce

1

Berdasarkan penelitian saya, wsl pada awalnya tidak dirancang untuk pengguna GUI. Namun, kita dapat menginstal X-server dari pihak ketiga untuk menampilkan GUI. Saya telah menguji bahwa VcXsrv dengan beberapa pengaturan yang tepat dapat digunakan untuk menampilkan Debian Linux-desktop.

Saya pikir pendekatan saya berfungsi dengan baik untuk menampilkan mate-desktop (GUI) pada windows subsistem Linux Debian. Saya telah membuat video tentang cara menginstal dan menampilkan mate-desktop (GUI) di wsl Debian dari awal. Tautan: https://youtu.be/QjogEWudpaM

Instalasi mate-desktop pada Ubuntu sedikit berbeda.

Langkah 1 : instal wsl

  • Buka PowerShell sebagai administrator dan ketikEnable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • Instal "Debian" atau "Ubuntu" dari toko Microsoft.

Langkah 2 : instal antarmuka pengguna Grafis, seperti mate desktop.

Untuk Pengguna Debian :

  • Buka konsol Linux di windows 10 dan instal mate-desktop dengan mengetik:, sudo apt-get updatetekan enter.
  • Setelah pembaruan selesai, ketik sudo apt install task-mate-desktop, tekan enter.

ATAU untuk Pengguna Ubuntu :

  • buka konsol ubuntu dari windows 10
  • ketik sudo apt install tasksel, tekan enter
  • ketik sudo apt update, tekan enter
  • ketik sudo tasksel install ubuntu-mate-desktop, tekan enter

Langkah 3 : Instal X server di windows 10. Saya menggunakan server open-source yang disebut VcXsrv. Itu dapat diunduh dari https://sourceforge.net/projects/vcxsrv/ .
Setelah instalasi selesai:

  • buka XLauch di windows 10

  • lakukan pengaturan berikut:

    • Pilih: "One large window"
    • Pilih Display number: 0
    • klik next
    • Pilih Start no client
    • klik next
    • klik finish

Langkah 4 : pengaturan di konsol Linux:

  • Tipe export DISPLAY=:0

  • ketik export LIBGL_ALWAYS_INDIRECT=1(mungkin pujian ini tidak diperlukan)

Langkah 5 : Tampilkan pasangan-desktop GUI:

  • ketik mate-sessionuntuk pengguna Debian

  • ketik mate-sessionatau lightdm-sessionuntuk pengguna Ubuntu

Jika Anda bingung dengan deskripsi saya, Anda dapat memeriksa video youtube saya Instal GUI (mate desktop) ke Microsoft Windows Subsystem Linux .


-1

Biasanya host tamu VirtualBox dapat dihubungi di 10.0.2.2

Sekarang Anda dapat melakukan program WSL X di desktop Fedora Anda, bahkan dengan Windows yang mulus.


Sekarang, ini menarik. Saya bukan penggemar fedora besar sendiri. Bisakah hal yang sama dilakukan dengan Arch?
George Hovhannisian

Sepertinya begitu. Server X dapat diakses di Fedora melalui ssh secara default, Anda mungkin harus mengubah beberapa pengaturan sshd di Arch.
weberjn
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.