การสร้าง Ubuntu VM เพื่อแจกจ่าย


19

ฉันเป็น TA สำหรับหลักสูตรการเขียนโปรแกรมและมอบหมายให้สร้างอิมเมจเครื่องเสมือนตาม Ubuntu 14.04 LTS พร้อมซอฟต์แวร์ที่จำเป็นทั้งหมด (สำหรับการพัฒนา C ++ และ Python) ติดตั้งไว้ล่วงหน้าเพื่อให้นักเรียนทุกคนมีระบบเสมือนจริงที่ทำงานอยู่และเราหลีกเลี่ยงการต่อสู้ การได้รับทุกอย่างเพื่อทำงานกับเครื่องจักรและระบบปฏิบัติการที่หลากหลาย เราตั้งใจที่จะใช้ Virtual Box เป็นซอฟต์แวร์ VM โฮสต์ซึ่งเป็นแพลตฟอร์มข้ามที่ว่างและใช้ได้

ไม่จริงฉันจะใช้ Ubuntu 14.04 LTS อิมเมจดิสก์แล้วรันใน Virtual Box ของฉันติดตั้งลงในฮาร์ดดิสก์เสมือน (VDI) ตั้งค่าบัญชี "นักเรียน" ด้วยรหัสผ่านที่กำหนดไว้ล่วงหน้าติดตั้งซอฟต์แวร์ที่จำเป็นทั้งหมดปิด ลงเครื่องเสมือนและแจกจ่ายไฟล์ VDI เราขอให้นักเรียนแต่ละคนนำเข้า VDI ไปยังกล่องเสมือนเรียกใช้และตั้งค่าบัญชีส่วนตัว (หรือใช้บัญชีนักเรียนเริ่มต้น)

  • ขั้นตอนข้างต้นเป็นไปได้หรือไม่
  • สิ่งที่ผิดพลาดที่ต้องระวังคืออะไร? เราต้องการสิ่งนี้เพื่อพิสูจน์คนโง่มาก เราคาดหวังว่านักเรียนมากกว่า 80 คนและเป็นเพียงสี่คนเท่านั้นดังนั้นเราจึงไม่สามารถให้การสนับสนุนเป็นรายบุคคล
  • มีข้อเสียในการใช้ HDD เสมือนที่จัดสรรแบบไดนามิกหรือไม่
  • ฉันสามารถติดตั้งการเพิ่มข้อมูลผู้เยี่ยมชม Virtual Box ได้ทันทีหรือไม่มันทำอะไรกับโฮสต์โดยเฉพาะหรือไม่?
  • มีวิธีที่สง่างามกว่านี้ในการจัดการการสร้างบัญชีผู้ใช้หรือไม่? ตามหลักการแล้ว Ubuntu จะใส่ตัวช่วยสร้างบัญชีและตั้งรหัสผ่าน (รวมถึงเพิ่มไปยังไฟล์ sudoers) ในครั้งแรกที่พวกเขาบู๊ตอิมเมจ นี่ไม่ใช่ลำดับความสำคัญ ฉันเดาว่าการมีบัญชีเริ่มต้นนั้นใช้ได้

3
โปรดทราบว่าคุณต้องรวมข้อเสนอสำหรับซอร์สโค้ดเนื่องจากคุณกระจายซอฟต์แวร์ภายใต้ข้อกำหนดของ GPL
ChrisInEdmonton

@ChrisInEdmonton จุดที่ดี เนื่องจากฉันไม่ได้เขียนโค้ดใด ๆ ด้วยตนเองนี่เป็นการดัดแปลงทางเทคนิคหรือเป็นเพียงการแจกจ่ายซ้ำหรือไม่ มันเพียงพอแล้วหรือไม่ที่จะให้นักเรียนชี้ไปที่อูบุนตูหรือแหล่งข้อมูลของบุคคลที่สามที่พวกเขาควรถาม (พวกเขาจะไม่) หรือฉันจำเป็นต้องจัดหาแหล่งที่มาเชิงรุกหรือไม่ เป็นเรื่องสำคัญหรือไม่ที่ฉันจะไม่เผยแพร่ภาพ แต่มอบให้กับผู้ชมที่ จำกัด ด้วยการเข้าถึงที่ จำกัด ?
Jonas Greitemann

ฉันจะชี้ให้คุณไปที่ GPL เพราะฉันไม่ใช่ทนายความ มันไม่น่าเป็นไปได้มากที่จะเป็นปัญหาที่นี่ :)
ChrisInEdmonton

2
ฉันจะบอกว่าคุณไม่จำเป็นต้องทำเช่นนั้นร่วมกับอิมเมจของ Ubuntu เอง: gnu.org/licenses/ ......เพียงเขียนคำแนะนำวิธีการดาวน์โหลดซอร์สโค้ด
Markon

1
คุณอาจต้องการตรวจสอบนโยบายทรัพย์สินทางปัญญาและการแจกจ่ายซ้ำของ Canonical อย่างละเอียดก่อนดำเนินการ ในขณะที่ซอฟต์แวร์ GPL มีอิสระที่จะแจกจ่ายกับแหล่งที่มาและเกือบทุกใบอนุญาตอื่น ๆ ที่คุณจะได้พบกับซอฟแวร์ภายใต้ใบอนุญาตในการกระจาย Linux ทั่วไปช่วยให้แจกจ่ายภายใต้เงื่อนไขที่เหมาะสมอย่างน้อยเมื่อเร็ว ๆ นี้ได้มีการโต้เถียงเกี่ยวกับนโยบายทรัพย์สินทางปัญญาเป็นที่ยอมรับของ
CVN

คำตอบ:


18

ในขณะที่คำถามนี้ค่อนข้างความเห็นตามระดับ:

ใช่ขั้นตอนนี้เป็นไปได้ - ฉันเชื่อว่ามันจะสำเร็จสิ่งที่คุณกำลังมองหาและเป็นสิ่งที่ฉันได้ทำในอดีตกับการกระจายลินุกซ์อื่น ๆ

ข้อผิดพลาดที่แท้จริงเพียงอย่างเดียวคือการเว้นวรรคดิสก์ ... ตรวจสอบให้แน่ใจว่าเครื่องนักเรียนของคุณมีพื้นที่ดิสก์เพียงพอที่จะจัดการขนาดของดิสก์เสมือน นอกจากนี้ตรวจสอบให้แน่ใจว่าคุณเก็บสำเนาออฟไลน์ไว้ในเครื่องอย่างน้อยหนึ่งเครื่องเพื่อให้คุณสามารถใช้เทมเพลต / ดิสก์อ้างอิงเพื่อสร้างดิสก์ใหม่ได้อย่างรวดเร็วเมื่อนักเรียนฆ่าเครื่องของพวกเขา

ข้อเสียของดิสก์แบบไดนามิกคือโฮสต์ระบบปฏิบัติการจะต้องจัดสรรพื้นที่ว่างในดิสก์มากขึ้นเรื่อย ๆ เมื่อ VM เติบโตขึ้นพร้อมกับข้อมูล / การปรับปรุง นี่เป็นค่าใช้จ่ายด้านประสิทธิภาพซึ่งอาจทำให้ปวดหัวในบางครั้ง - โดยเฉพาะถ้าคุณใช้ VM ที่ใช้พลังงานต่ำ (กำลังของเครื่องโฮสต์กำลังไฟลบด้วยการใช้เพื่อขยายดิสก์มักจะทำให้ VM ช้าลงเล็กน้อย จึงไม่สามารถส่งได้ (ไม่ใช่ทุกเครื่องในห้องปฏิบัติการของคุณอาจมี 100GB + เมื่อนักเรียนยุ่งกับ VM)

ผู้ใช้งานแอดออนไม่ใช่เครื่องจักรเฉพาะ .. พวกมันค่อนข้างเป็นชุดไดรเวอร์ เมื่อคุณนำเข้า VM ไปยังโฮสต์ใหม่ไดรเวอร์ VM จะตรวจจับและปรับแต่งฮาร์ดแวร์ของคุณเพื่อทำงานกับโฮสต์ใหม่

การสร้างผู้ใช้ที่สง่างาม - ไม่แน่ใจว่าอาจเป็นสคริปต์ที่ทำงานในการเปิดตัวครั้งแรกและขอให้ผู้ใช้สร้างบัญชีใหม่ก่อนที่สคริปต์จะทำลายตัวเองหรือไม่ ฉันจะขุดและกลับไปหาคุณเมื่อฉันมีเวลา 5 นาที

หวังว่าอย่างน้อยก็ช่วยได้บ้าง


2
ขอบคุณมันช่วยได้ค่อนข้างมาก ความกังวลหลักของฉันคือไม่ทำให้ยุ่งพื้นฐาน อย่าใช้เวลามากเกินไปในการสร้างผู้ใช้ มันไม่สำคัญจริงๆ ฉันแค่คิดว่าเนื่องจากฉันถูกถามอยู่แล้วฉันก็อาจถามว่ามีกลไกในตัวที่จะจัดการกับมันหรือไม่เพราะฉันคิดว่ามันเป็นปัญหาที่พบบ่อย
Jonas Greitemann

1
อย่างแน่นอน - และเป็นไปได้ทั้งหมดว่ามีวิธีแก้ปัญหาในตัวดังนั้นฉันต้องการค้นหามัน
Fazer87

13

ตอบคำถามของคุณอย่างแน่นอนหากคุณต้องการปรับแต่ง VM และส่ง VirtualBox VM ที่ส่งมอบได้ฉันแนะนำให้ใช้Packerเพื่อทำแพ็คเกจ VM ใหม่ให้พร้อมกับการพึ่งพาที่จำเป็นทั้งหมด มันถูกสร้างขึ้นเพื่อวัตถุประสงค์นี้และช่วยให้คุณสามารถหมุนภาพจาก ISOดำเนินการจัดเตรียมใด ๆ ที่คุณต้องการกับภาพนั้นแล้วสร้างภาพ VirtualBox VM ที่ส่งมอบได้ สิ่งนี้เป็นสิ่งที่ดีสำหรับคุณเช่นกันเพราะเป็นเอกสารสิ่งที่ทำเพื่อส่งมอบในกรณีที่คุณต้องการทำซ้ำ / เพิ่มบางสิ่งลงไป นอกจากนี้คุณสามารถตรวจสอบโครงการในระบบควบคุมแหล่งที่มาและทำการเปลี่ยนแปลง นี่คือตัวอย่างของการทำเพื่อให้คุณเริ่มต้น

แต่ถ้าคุณต้องการให้พวกเขาได้รับการทำงานได้อย่างรวดเร็วผมขอแนะนำให้ใช้จรจัดและจัดจำหน่ายให้กับนักเรียนของคุณ Vagrantfile ที่มีประสิทธิภาพที่ต้องการการตั้งสำรองที่คุณต้องการในภาพอูบุนตูมาตรฐาน นี่มีข้อดีหลายประการ:

  • Vagrant ทำงานนอกกรอบด้วย VirtualBox และจะจัดการทุกส่วนที่ยากสำหรับนักเรียนเช่นการตั้งค่าโฟลเดอร์ที่ใช้ร่วมกันเพื่อให้พวกเขาสามารถคัดลอกไฟล์ระหว่าง VM และเครื่องโฮสต์ได้อย่างง่ายดายกำหนดค่าเครือข่ายเพื่อให้สามารถเข้าถึงอินเทอร์เน็ตได้ ฯลฯ นอกจากนี้ยังช่วยให้คุณประหยัดเวลาในการแก้ไขปัญหาเอกสาร / การดีบัก VirtualBox สำหรับพวกเขา
  • Vagrantfile มีขนาดเล็กกว่า VM ที่ส่งมอบได้มาก หากคุณต้องการเปลี่ยน / เพิ่มบางสิ่งลงใน VM ผ่านทางหลักสูตรที่คุณไม่ต้องสร้าง VM ใหม่เพียงแค่ให้ Vagrantfile ที่อัปเดตแล้ว
  • หากพวกเขาทำอะไรบางอย่างที่เกินความสามารถในการซ่อมแซมพวกเขาสามารถทำลาย / ปรับใช้ VM อีกครั้งอย่างไม่ลำบาก
  • ไฟล์ Vagrantfile จะแสดงให้นักเรียนของคุณเห็นถึงสิ่งที่ทำกับ VM เพื่อให้เมื่อถึงจุดที่พวกเขาเข้าใจเพียงพอพวกเขาสามารถเห็นสิ่งที่เกิดขึ้นภายใต้ประทุนและอาจเรียนรู้จากสิ่งนั้น

นี่คือตัวอย่างของ Vagrantfile ที่แสดงวิธีทำการจัดสรรบางอย่างบนอิมเมจ Ubuntu 14.04


3
คนพเนจรและ / หรือเกย์เป็นวิธีที่จะทำสิ่งนี้
Sandy Chapman

9

เป็นไปได้อย่างสมบูรณ์แบบ ทางเลือกจะเป็น Vagrant, Puppet, Chef หรือสิ่งที่คล้ายกันในการสร้าง VM ตั้งแต่เริ่มต้น แต่นั่นเป็นงานที่ต้องตั้งค่ามากมาย

ทีมพัฒนาในหนึ่งในไซต์ของฉันทำเช่นเดียวกันเพื่อให้ผู้พัฒนาใหม่สามารถเริ่มต้นใช้งานได้อย่างรวดเร็ว
1 บัญชีที่ตั้งไว้ล่วงหน้า (ที่มีสิทธิ์ sudo) ในภาพและเอกสารคำสั่งสั้น ๆ พร้อมขั้นตอนที่พวกเขาต้องดำเนินการเพื่อสร้างบัญชีส่วนตัว

โปรดทราบ: คุณอาจต้องการการเข้าถึงเครือข่าย / อินเทอร์เน็ตภายใน VM ที่สามารถเชื่อมโยงหรือ NATted ไปยังโฮสต์ ไม่ว่าคุณจะเลือกแบบใดคุณจะต้องสอนนักเรียนเกี่ยวกับวิธีกำหนดค่าโฮสต์ของสิ่งนี้ เพียงแค่ติดตั้ง NIC ภายใน VM เป็นอุปกรณ์ DHCP นั่นเป็นจุดเริ่มต้นที่ปลอดภัยสำหรับการกำหนดค่าส่วนใหญ่แม้ว่าผู้ใช้ในภายหลังจะต้องกำหนดค่าที่อยู่ IP แบบคงที่ด้วยตนเอง
การใส่ที่อยู่ IP แบบคงที่ใน VM กำลังถามถึงปัญหาจริงๆ มันถูกผูกไว้จะถูกใช้งานแล้วโดย VM อื่นกำลังออนไลน์บน LAN เดียวกัน ...


3
แม้ว่า "การทำงานจำนวนมากในการตั้งค่า" จะขึ้นอยู่กับว่าคุณต้องสร้างภาพบ่อยแค่ไหน คุณกำลังเรียนหลักสูตรเดียวกันในภาคการศึกษาถัดไปอีกครั้งหรือไม่ คุณอาจจะกำลังเรียนหลักสูตรคล้าย ๆ กันกับภาษาอื่นในภาคการศึกษาถัดไปหรือไม่? คุณต้องการทำให้ชีวิตง่ายขึ้นสำหรับผู้สืบทอดหรือไม่? คอมไพเลอร์ C ++ มีข้อบกพร่องที่ได้รับการแก้ไขในรุ่นที่ใหม่กว่า มาตรฐาน C ++ ใหม่ออกมาในปี 2560 โปรดจำไว้ว่าโปรแกรมเมอร์คือบุคคลที่ใช้เวลา 2 ชั่วโมงในการเขียนโปรแกรมเพื่อทำงานใน 2 วินาทีซึ่งใช้เวลา 2 นาทีด้วยมือ ;-)
Jörg W Mittag

2
@ JörgWMittagแน่นอนคุณมีประเด็นแล้ว แต่ถ้าคุณไม่คุ้นเคยกับ Vagrant และช่วงเวลาการเรียนรู้อาจจะค่อนข้างสูงชัน / เวลามาก โดยส่วนตัวแล้วฉันอาจจะใช้โซลูชัน VM เพื่อแก้ปัญหาอย่างรวดเร็วในภาคเรียนนี้และในระหว่างภาคการศึกษาใช้เวลาในการพัฒนาเป็นโซลูชันอื่นสำหรับแนวทางระยะยาว
Tonny

2
เกี่ยวกับการเข้าถึงเครือข่าย VMs แบบกระจายอาจมีที่อยู่ MAC ที่เหมือนกัน อาจไม่มีปัญหากับ NAT แต่เป็นความคิดที่ดีที่จะรีเซ็ตที่อยู่ MAC ใหม่
user1937198

1
@ user1937198 MAC ถูกตั้งค่าโดย VirtualBox / vmdk ไม่ได้ตั้งค่าใน VDI เอง หากคุณชี้และคลิก VM ใหม่เข้าด้วยกันใน VirtualBox แล้วเพิ่มไฟล์ VDI คุณจะได้รับ MAC ใหม่ (โดยการนำเข้าจาก OVA คุณจะถูกถามว่าจะรีเซ็ต MAC หรือไม่) แต่คุณพูดถูก เป็นอย่างอื่นที่ต้องพิจารณาและแน่นอนปัญหาหากเครือข่ายทำงานในการเชื่อมโยง
Tonny

1
@SteveBarnes ฉันเห็นด้วยกับวลีสุดท้ายของคุณ: ไม่ว่าการสอนจะดีแค่ไหนคนก็จะเข้าใจผิดเมื่อพวกเขาทำตาม พวกเขาข้ามขั้นตอน (หรือทำผิดลำดับ) ทำผิดในคำสั่งที่พวกเขาต้องการดำเนินการหรือพวกเขาคิดว่าพวกเขารู้ดีกว่าและเบี่ยงเบนจากสคริปต์ หากเป็นไปโดยอัตโนมัติ (เครื่องตรวจตัวสะกดของฉันไม่แน่ใจว่าเป็นคำนั้นจริง ๆ ) วิธีที่ดีที่สุดยังคงเป็นไปโดยอัตโนมัติ: ไม่มีที่ว่างสำหรับข้อผิดพลาด
Tonny
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.