วิธีการเริ่มระบบเครือข่ายบนอินเตอร์เฟสแบบมีสายก่อนเข้าสู่ระบบใน Ubuntu Desktop Edition


17

ปัญหา

Ubuntu 9.10 Desktop Edition (และอาจเป็นเวอร์ชั่นก่อนหน้านี้เช่นกันฉันยังไม่ได้ทดสอบ) ไม่มีการเชื่อมต่อเครือข่ายหลังจากบู๊ตจนกว่าผู้ใช้อย่างน้อย 1 คนจะเข้าสู่ระบบซึ่งหมายความว่าบริการใด ๆ ที่ต้องใช้เครือข่าย (เช่น openssh-server) บางคนลงชื่อเข้าใช้แบบโลคัลผ่าน gdm, kdm หรือ TTY

พื้นหลัง

Ubuntu 9.10 Desktop Editionใช้บริการ NetworkManager เพื่อรับคำสั่งจาก nm-applet ใน Gnome (หรือเทียบเท่าใน KDE) ตามที่ฉันเข้าใจแล้วในขณะที่ NetworkManager กำลังทำงานอยู่ในขณะบู๊ตจะไม่มีคำสั่งให้เชื่อมต่อจนกว่าคุณจะเข้าสู่ระบบเป็นครั้งแรกเพราะ nm-applet ไม่ทำงานจนกว่าคุณจะเข้าสู่ระบบและเซสชัน Gnome ของคุณเริ่มต้น ฉันไม่แน่ใจว่าสิ่งใดที่ทำให้ NetworkManager เชื่อมต่อกับเครือข่ายเมื่อคุณเข้าสู่ระบบผ่าน TTY

มีตัวแปรที่เกี่ยวข้องหลายอย่างที่เกี่ยวข้องในการเริ่มการเชื่อมต่อเครือข่าย ได้แก่ :

  • Wired vs Wireless (และไดรเวอร์ที่เกิดขึ้น, SSID, รหัสผ่านและลำดับความสำคัญ)
  • VS คงที่ DHCP
  • อินเทอร์เฟซหลาย

ข้อ จำกัด

  • รองรับ Ubuntu 9.10 Karmic Koala (คะแนนโบนัสสำหรับเวอร์ชั่นที่รองรับเพิ่มเติม)
  • รองรับอินเตอร์เฟสแบบมีสาย eth0
  • รับที่อยู่ IP ผ่าน DHCP
  • รับข้อมูล DNS ผ่าน DHCP (เห็นได้ชัดว่าเซิร์ฟเวอร์ DHCP ต้องให้ข้อมูลนี้)
  • เปิดใช้งานเครือข่ายในเวลาที่เหมาะสม (เช่นบางครั้งหลังจากโหลดระบบไฟล์ แต่ก่อนที่จะให้บริการเครือข่ายเช่นการเริ่มต้น ssh)
  • การเปลี่ยน distros หรือเวอร์ชั่น (เช่น Server Edition) ไม่ใช่วิธีการแก้ปัญหาที่ยอมรับได้
  • การเปลี่ยนเป็นการกำหนดค่า IP แบบคงที่ไม่ใช่โซลูชันที่ยอมรับ

คำถาม

  • จะเริ่มระบบเครือข่ายบนอินเตอร์เฟสแบบมีสายก่อนเข้าสู่ระบบใน Ubuntu Desktop Edition ได้อย่างไร

ดูสิ่งนี้ด้วย

อ้างอิง

คำตอบ:


9

หากต้องการให้เน็ตเวิร์กอินเตอร์เฟสของคุณกำหนดค่าโดยอัตโนมัติผ่าน DHCP เมื่อบูตให้เพิ่มบรรทัดต่อไปนี้ลงใน /etc/network/interfaces:

auto eth0
iface eth0 inet dhcp

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


Ahh นั่นเป็นเพียงการพิมพ์ผิดเมื่อฉันทำคำถาม แต่นั่นคือสิ่งที่ฉันได้ลอง ที่กล่าวว่าการทำ /etc/init.d/networking restart จะช่วยให้: "* กำหนดค่าอินเทอร์เฟซเครือข่ายใหม่ ... " แต่อินเทอร์เฟซนั้นไม่ได้ถูกนำมาใช้ การรีบูตไม่ทำให้อินเทอร์เฟซปรากฏขึ้นด้วยการตั้งค่าเหล่านี้
Burly

ฉันคิดว่า: auth eth0 แทนที่จะ: auto eth0 ในโพสต์ของคุณยังคงเป็นตัวพิมพ์ที่คุณทำในโพสต์ใช่ไหม?
goedson

ฉันก็ไม่ได้ติดตั้งใหม่ของ Ubuntu 9.10 แก้ไข / etc / เครือข่าย / อินเตอร์เฟซตามที่ระบุไว้ข้างต้นและออกsudo /etc/init.d/networking restartไม่ได้รับ eth0 ขึ้นและการกำหนดค่าผ่าน DHCP
goedson

โอ้โห Mega-Fail! : facepalm: ฉันไม่ได้พิมพ์ผิดที่คุณพูดถึง แต่ฉันมี 'auth' แทน 'auto' ในบรรทัดแรก ฉันเชื่อว่าคุณต้องแก้ไขคำตอบของคุณเพื่อให้ฉันเปลี่ยนการลงคะแนนของฉันเพราะยาวเกินไป (ใช่ไหม) ฉันได้ลบส่วน "สิ่งที่ฉันพยายาม" ออกจากคำถามเพื่อหลีกเลี่ยงความสับสนเนื่องจากฉันพิมพ์ผิด บางทีอาจจะเพิ่มสิ่งที่ชอบ: "เพิ่มต่อไปนี้ใน/etc/network/interfacesการป้องกัน NetworkManager จากการจัดการอินเตอร์เฟซและนำมันขึ้นผ่าน DHCP" ผมมีการตรวจสอบและดูว่าการแก้ไขนี้จะนำมาขึ้นที่บูตกับ NM ติดตั้ง ...
แข็งแกร่ง

ฉันเปลี่ยนคำตอบแล้วมันชัดเจนว่าอะไรคือทางแก้ปัญหา
goedson

1

Debian / Ubuntu มีโปรแกรมของตัวเองในการจัดการเซิร์ฟเวอร์ในเวลาบูต

ลอง update-rc.d STARTUP-SCRIPT defaults

ค้นหาสคริปต์เฉพาะสำหรับ eth0 และเปิดใช้งานด้วยสิ่งนี้

คุณสามารถทำให้คุณเป็นสคริปต์ของตัวเองได้เสมอวางไว้ใน init.d และการเรียกใช้คำสั่งก่อนหน้านี้จะทำให้โหลดในเวลาบูต

หรือเพียงแค่ใส่คำสั่งเหล่านั้น (ifconfig up, dhcpcd) ใน /etc/rc.local (ไฟล์นี้จะได้รับการอ่านทุกครั้งในเวลาบูต)


ฉันเคยใช้ update-rc.d ก่อนหน้านี้ แต่ปัญหากำลังค้นหา STARTUP-SCRIPT เฉพาะสำหรับ eth0 อย่างน้อยใน Ubuntu 9.10 DE ไม่มีเลย มีเพียง /etc/init.d/networking script ซึ่งจริงๆแล้วเป็นเพียงการเรียกงานเริ่มต้น (/ lib / init / update-job เริ่มต้นเครือข่ายเป็นสิ่งที่มันเรียกโดยเฉพาะ) ดังที่ได้กล่าวไว้ข้างต้นการเรียก /etc/init.d/networking start / lib / init / update-job เริ่มต้นเครือข่ายและ / หรือการเริ่มต้น / เริ่มระบบเครือข่ายบริการ / ไม่ได้นำอินเทอร์เฟซน้อยกว่ารับ IP มาก ฉันสามารถเขียนสคริปต์ของตัวเอง แต่ฉันหวังว่าจะได้คำตอบที่ดีกว่านี้
Burly

การวาง dhclient eth0 ใน rc.local อาจเป็นทางเลือกเดียวของฉัน ฉันต้องลองสิ่งนี้เพื่อดูว่าใช้งานได้หรือไม่ ปัญหาของการวางที่นี่คือบริการเริ่มต้นอื่น ๆ ไม่สามารถพึ่งพาได้ (เช่น ssh) เพราะ rc.local ไม่ได้ทำงานจนกว่าจะเริ่มบริการของระบบทั้งหมดแล้ว
Burly

1
การหลีกเลี่ยงปัญหา: การเพิ่มdhclient eth0ลงใน /etc/rc.local ทำให้อินเทอร์เฟซ eth0 ทำงานอย่างถูกต้องเมื่อเริ่มต้นและรับ IP ผ่าน DHCP อย่างน้อยสำหรับฉัน SSH ก็พร้อมใช้งานก่อนที่จะมีใครเข้าสู่ระบบในเครื่องตอนนี้เนื่องจาก openssh-server ถูกตั้งค่าให้เริ่มที่ runlevels 234 ฉันไม่ทราบว่าบริการที่เปิดใช้งานเครือข่ายทั้งหมดจะทำงานได้สำเร็จหรือไม่ เช่น ntpdate) อย่างไรก็ตามเนื่องจาก rc.local ถูกเรียกใช้หลังจากบริการของระบบ
Burly
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.