Windows Subsystem for Linux หรือ WSL เวอร์ชัน 2 ถือเป็นฟีเจอร์ใหญ่ของ Windows 10 รุ่นล่าสุด (จะมาในเวอร์ชัน 20H1) การเปลี่ยนแปลงสำคัญคือมันเป็นลินุกซ์ที่ใช้เคอร์เนลตัวเต็ม ทำให้ได้ฟีเจอร์ต่างๆ เทียบเท่ากับดิสโทรลินุกซ์จริงๆ ที่รันอยู่ใน Windows 10 อีกทีผ่าน VM
ล่าสุดไมโครซอฟท์เพิ่มฟีเจอร์ให้ WSL 2 ใน Build 18945 ให้ฝั่ง Windows สามารถเข้าถึง WSL 2 ภายในเครื่องเดียวกัน ด้วยการเรียก localhost แทนการระบุ IP แบบเดิม นั่นแปลว่าเราสามารถโฮสต์เซิร์ฟเวอร์ใน WSL 2 แล้วใช้เบราว์เซอร์พิมพ์ localhost เพื่อเข้าใช้งานได้ทันที โดยที่ไม่ต้องตั้งค่าอะไรเพิ่มเลย
ของใหม่อย่างอื่นของ WSL 2 ได้แก่
ผู้ที่สนใจใช้งาน จำเป็นต้องใช้กับ Windows Insider กลุ่ม Fast Ring ซึ่งเป็นตัวทดสอบของ Windows 10 20H1 ที่จะออกในปีหน้า
ที่มา - Microsoft Devblogs
Comments
ดีเลย จะได้ไม่ต้องมาแก้ host file ทุกครั้งที่ reboot
Hell YEAH!!!
ต่อไปคงเรียก ip docker ใน WSL2 ตรงๆได้เลยไหม
รอให้มา main branch ครับ
ซื้อ Windows Pro รอไว้แล้วใช่ไหมครับ (Home อดนะ)lewcpe.com, @wasonliw
มายืนยันครับว่า WSL 2 ใช้กับ windows 10 home ไม่ได้ ?
สงสัยผมจะจำผิดแฮะ เพราะ Docker Desktop ต้องการ Windows Pro ขออภัยครับ
lewcpe.com, @wasonliw
อ้าวซะงั้น ใน faq ยังบอกว่ารองรับอยู่เลย https://docs.microsoft.com/en-us/windows/wsl/wsl2-faq#does-wsl-2-use-hyper-v-will-it-be-available-on-windows-10-home
ค่อนข้างสับสนมากครับ อ่านในเว็บของไมโครซอฟท์บอกว่า hyper-v ไม่มีใน home (ซึ่งไม่มีจริงๆ ลองแล้วไม่ได้ ต้องอัพเกรด)
แต่ในลิงค์นี้บอกว่า wsl2 ทำงานกับ hyper-v และใช้กับ home ได้
เวียนหัวเลย
ตอบกลับผิดcomment
UPDATE: ผมทดลองอีกรอบพบว่า WSL 2 ใช้ใน Windows 10 home ได้ครับ ที่รอบแรกไม่ผ่านน่าจะเป็นเพราะทดสอบใน VirtualBox หรือไม่ก็ไฟล์ image ที่ใช้ติดตั้งครั้งแรกเสียหาย
เฮ้ย ...เอ้า งงสิผม ขอบคุณครับ เดี๋ยวลองเลยจะได้ไม่ต้องแบกแมคบุคของออฟฟิสเวลาทำงานอยู่บ้าน
ทาง Docker ก็ยืนยันว่าสามารถใช้ทั้ง WSL2 กับ Docker Desktop for WSL2 ใน Windows10 Home ได้ (สงสัยเป็นเพราะไม่ได้รันบน Hyper-V แล้ว)
https://engineering.docker.com/2019/06/docker-hearts-wsl-2/
ขอบคุณครับ เเเเเเเเเเย้ เดี๋ยวลองแล้วมาบอกครับ
WSL 2 ทำงานบน Virtual Machine Platform ที่มี Hyper-V เป็นระบบเบื้องหลังครับ
แหะๆ ขอบคุณครับที่จำได้ว่าผมมี Windows Home
เครื่อง coding ผมเป็น Windows 10 Home แต่เครื่อง gaming PC ของผมเป็น Windows 10 Pro ครับ
กำลังคิดจะสลับเครื่องกันอยู่ เคยคิดสั้นจะเอาเครื่อง gaming มาทำงานด้วยครับ
ผมใช้เครื่อง gaming ส่วนตัวทำงานไปด้วยเลยครับ ห่ะๆๆ
กลัวทำให้ performance เกมตกอ่ะครับ ไม่รู้คิดไปเองมั้ย
ผมเช็คแล้ว framerate ผมไม่ตกก็เลยโอเคครับ ทำถึงขนาดว่างานทำใน desktop 2 (ถ้ามีงานอื่นก็จะใส่ desktop 3) พอเพื่อนมาผมก็กลับมา desktop 1 แล้วเปิดเกมเล่นเลย เย้ เฟรมเรตไม่ตก งานไม่ปิด แค่ถ้าอยู่ใน process ที่กินเครื่องก็อาจจะกดไปหน้าที่มันไม่กินทิ้งไว้เฉยๆ เลยครับ
ป.ล. ผมอัดแรมไว้ 32GB ?
อิอิ หุหุหุ เดี๋ยวจัด ขอบคุณครับ
อันนี้โหด
คือผมสงสัยว่า WSL เอาไปใช้ทำอะไรได้บ้างในเมื่อแอพเซอร์วิสที่รันบนลีนุกซ์ก็มีอยู่ในวินโดวส์ด้วย
เหมาะกับ dev ครับ
หลักๆ ผมใช้แค่ Docker ครับ เพราะ Docker on Windows เดิมมันไปรัน VM อีกทีทำให้เปลือง resouce มากๆ ครับ ส่วนใน WSL จะ lightweight กว่ามาก
กำลังจะเข้ามาถามคำถามนี้เหมือนกัน
ว่าจะมายุ่งอะไรกับ Win10 นักหนา ทำไมไม่ไป add ที่ฝั่ง server ก็น่าจะพอแล้ว
แต่พอได้คำตอบว่าใช้กับงาน dev ก็.... โอเค๊~
server จริงๆ เขาน่าจะใช้ลินุกซ์กันเลย
lewcpe.com, @wasonliw
ถ้าจะให้ลงรายละเอียดจริงๆคือระบบ Path ของ Windows ไม่เหมาะกับงาน Dev เลยครับ งาน DevOp ก็ไม่เหมาะด้วยกรณีที่เรา Develop งานบน linux
อย่าง macOs ต่อให้ไม่ใช่ linux แต่ Path เหมือนกันระบบ Permission เหมือนกันเลยสามารถใช้แทน Linux ได้รวมถึงมี UI/UX ดีกว่าหลายๆส่วนเลยเป็นที่นิยมกันในการ Dev แถมช่วงแรกๆ Macbook Pro ถึกทรหดมากๆ ปัญหาน้อยกว่าฝั่ง Windows Laptop เยอะด้วย
ผมไม่ค่อยมีปัญหากับระบบ path ของ Windows แฮะ คือมันก็แค่ separator คนละตัว โอเคพอ Windows มันมีเรื่อง drive เข้ามามันก็จะดูวุ่น ๆ หน่อย
แต่แบบจะเหมาว่า Dev ทุกคนไม่ชอบ Path ของ Windows ผมว่าก็คงจะมี Windows Developer บางคนบ่นว่า ทำไม Path บน Linux ใช้ / เป็น separator เหมือนกัน
ผมว่าความจริงก็คือ ในเมื่อโค๊ดมันรันบน Linux และ Linux ใช้ Path แบบ POSIX แล้ว ถ้าเราสามารถ assume ว่า โค๊ดจะใช้ POSIX path เสมอ ก็จะทำให้ลดความซับซ้อนของโค๊ดลงได้มาก (เพราะใช้ / แทนตัวแปรระบบได้เลย)
ในทางเดียวกัน ถ้าโค๊ดมันรันเฉพาะบน Windows เราก็ assume ไปเลยว่า ใช้ path แบบ DOS/Windows
ความยากจริง ๆ อยู่ที่การเขียนให้มันรันแบบ cross-platform มากกว่า ซึ่งการใช้ WSL2 ก็จะลดปัญหาตรงนี้ลงได้มาก เพราะว่า WSL2 ก็เป็นแค่ Linux VM ตัวนึงเท่านั้นเอง
แต่ทั้งนี้ไม่ใช่ว่า Path แบบไหนไม่เหมาะกับงาน Dev เพราะมันจะกลายเป็นว่า ไอ้คนที่เป็น Windows Developer ที่วัน ๆ เขียนแต่ Windows App ก็ควรจะใ้ช้ POSIX path ด้วย อันนี้ก็ไม่ถูกซะทีเดียวเหมือนกัน (ถ้าทำจริงก็คงวุ่นวายน่าดู เพราะมันแปลงไปมาตรง ๆ ไม่ได้)
และอันนึงที่ผมว่าไม่ควร Assume คือ Assume ว่า Developer ทุกคนทำงานกับ Linux ครับ เพราะว่ามีอีกหลายงานที่ไม่ได้ใช้ Linux เหมือนกัน
ให้ด่าทุกคนที่ไม่ใช้ standard API ในการ join/split path ครับ ใครบอกว่าโปรแกรมมีบั๊กเพราะ path separator ต้องด่าเลย
lewcpe.com, @wasonliw
เห็นด้วยครับ (และจริง ๆ ผมก็ใช้นะถ้าไม่มีเหตุผลที่จะไม่ใช้)
แต่บางทีบางภาษามันก็ไม่มีให้ใช้ หรือไอ้ที่มีก็ไม่ค่อยเวิร์คก็มีอยู่ครับ
น่าจะใช่นะครับ ผมก็ไม่ควรเหมาว่า Dev ทุกคนใช้ Linux ซักหน่อย แต่หลังๆอยู่กับ Linux มากไปมั้ง 5555
ถ้าจะให้พูดก็ต้องบอกว่าสามารถทำให้ Windows ทำงานได้ทั้งด้าน Linux เพิ่มขึ้นมาด้วยเพื่อจะได้ตอบรับได้ทุกด้านมากกว่า
เห็นด้วยนะเรื่อง path
คือตัว lang, runtime หรือ lib ที่ทำงานได้ข้าม OS ไปมาระหว่าง Windows/Linux จะมีคำแนะนำในเรื่องนี้ว่าควรจะกำหนดและจัดการอย่างไรเป็นพื้นฐาน ถ้าไม่รู้ว่าจัดการยังไง แสดงว่าตอนเราศึกษาเราข้ามจุดนี้ไป ซึ่งจริงๆ ควรกลับไปดูและปรับตามคำแนะนำ
แล้วก็สงสัยอีกอย่างหนึ่งคือในเมื่อเครื่องมือ dev ในวินโดวส์ก็มีเยอะแยะแถมมีทั้ง VS ที่ Linux ไม่มี แล้วยังมีความจำเป็นในการใช้ WSL หรือ Linux อย่างไรบ้างครับ
สำหรับผมคือตอนทำงานกับ python, nodejs แต่จะเจอปัญหาบาง library ลงไม่ได้บน windows เพราะ build ไม่ผ่านหรือมีปัญหาตอนทำงาน ก็จะไปใช้ WSL รันเอาครับ
ตามความเห็นบนครับ library บางอันมันเป็น platform specific หรือบางอันบน Windows ก็ลงยากกว่า
แล้วตอนนี้ WSL2 เราสามารถใช้ Windows เปิด File ที่อยู่ใน Linux ได้ด้วยครับ แบบเปิดด้วย explorer.exe ได้เลย รวมไปถึง VS Code ก็เปิด Folder พวกนั้นได้ตรงๆ แถมยังเลือกให้ Terminal เป็น Bash ได้ด้วย
ที่ทำงานมานะครับ
คำถามคือทำไมไม่ใช้เซิฟเวอร์ที่เป็นวินโดวส์?
คำถามกลับคือ ทำไมต้องใช้เซิฟเวอร์ที่เป็นวินโดวส์?
Russia is just nazi who accuse the others for being nazi.
someone once said : ผมก็ด่าของผมอยู่นะ :)
อันนี้เคยคุยกับ Sysadmin องค์กรณ์ใหญ่หน่อย เค้าว่า Windows Server บริหารจัดการง่ายกว่า เพราะว่ามันเป็น GUI ในขณะที่ Service บน Linux ส่วนใหญ่จะเป็น file based กับ CLI (จริง ๆ ก็มี Web based Configuration ด้วย แต่หลายที่ก็ไม่ได้ใช้ครับ)
ถ้าพูดแบบนี้ไปจะโดนบางคนแขวะว่า แหวะ ไม่โปรเลย ใช้ GUI แต่ว่าความจริงคือ GUI มันง่ายกว่าจริง ๆ มันจำได้ง่ายกว่าว่าอะไรอยู่ตรงไหน
แต่จะว่าไป คนที่พูดข้างบนสุดท้ายก็ต้องใช้ Linux ร่วมด้วย เพราะมี service หลายตัวรันบน Linux อย่างเดียว รันบน Windows ไม่ค่อยได้ครับ
ขอบคุณครับ คิดว่าสมัยนี้ใช้กันแต่ Server Core ไม่ลง DE ซะอีก
Russia is just nazi who accuse the others for being nazi.
someone once said : ผมก็ด่าของผมอยู่นะ :)
คิดว่าคงไม่ใช่ทุกที่ที่เลิกใช้ DE น่ะครับ
แต่ที่เขาเล่าให้ฟังก็หลายปีแล้วเหมือนกันนะ อาจจะเปลี่ยนแล้วก็ได้ครับ
ส่วหนึ่งอาจจะเพราะความคุ้นเคยเพราะถ้าทีมทำงานกับ linux/unix มาตลอดรวมถึงระบบอื่นๆด้วย (เมื่อก่อนนู้น windows server ไม่ค่อยเป็นที่นิผม) ถ้าไม่แยก server ออกมาจริงจังแบบเป็น plateform ใหม่หรือมี requirement เฉพาะที่ต้องใช้ windows การใช้ linux/unix ต่อก็ไม่เสียนะครับ
คร่าวๆ
ข้างบนตอบไปแล้ว
ถ้าคุณถามคำถามนี้ใน linux community เมื่อ 12 ปีที่แล้ว คุณจะได้รับประสบการณ์ที่ดีครับ (ฮิๆ)
จากใจและมุมมองของคนข้างนอกนะครับ แม้กระทั่งในตอนนี้ หากคุณเอื้อนเอ่ยคีย์เวิร์ด "(Microsoft) Windows" ในชุมชนเหล่านั้น ประสบการณ์ที่ได้ ไม่น่าจะต่างกันเท่าไหร่ครับ
คนขี้ลืม | คนบ้าเกม | คนเหงาๆ
ผมเคยไปขลุกอยู่ในชุมชน Linux เมื่อหลายปีก่อน (สมัย TLE) ผมว่าหลาย ๆ คนเฉย ๆ กับ Windows กับ Office กันนะครับ จะมีอยู่จำนวนน้อยมากที่ Trash Talk ใส่ Microsoft
ที่จำได้ท่านนึงเป็นระดับ รศ. อยู่ในมหาวิทยาลัยแถว ๆ ภาคอีสาน จำชื่อไม่ได้ แต่คนนี้คือไปพูดโปรดักท์เสียเงินกับเขาไม่ได้เลยนะ แม้กระทั่ง Red Hat, Debian หรือ Distro ดัง ๆ บางตัวก็ด่าเหมือนกัน จะคุยกับเขาต้องเป็น Linux Distro บางตัวเท่านั้นถึงจะคุยได้เหมือนคนมีการศึกษาทั่วไป (คุ้น ๆ ว่าแกเป็นสาย Gentoo ครับ จะทำอะไรต้องคอมไพล์โค๊ดเอง)
แม้กระทั่ง Linus เองยังไม่ค่อย Trash Talk ใส่ Microsoft แบบไม่มีเหตุผลเลยนะ แกจะด่าเฉพาะอะไรที่แกไม่ชอบจริง ๆ แต่ก็มีเหตุผลมารองรับเสมอ
เอาค่า license มาจ่ายโบนัสพนักงานครับ (ฮา)
ถึงเวลาจริงๆ ก็ไม่จ่ายนะ ฮ่าๆๆ
TL;DR มันมีที่ของมัน (ซึ่งไม่ใช่ field ที่ผมทำ) ครับ