วันอังคารที่ 16 มีนาคม พ.ศ. 2553

ผลพลอยได้จากการเข้าร่วมกิจกรรม Thailand Mini DebCamp 2010

จากที่เขียนไปก่อนหน้านี้ว่า โน้ตบุ๊กมีปัญหาหลังจากพยายามอัพเกรดให้เป็น sid แล้วทำไม่ได้ต้องแก้ระบบกลับคืน

อาการแรกก็คือ Gnome หาย เหลือไว้แต่ TWM อันนี้ไม่ยาก เพราะ wvdial ยังอยู่ apt-get ยังอยู่ ก็ต่ออินเตอร์เนตด้วย wvdial แล้วก็ Install Gnome โดยใช้ apt-get เสร็จไปอย่างหนึ่ง

วันรุ่งขึ้นยังคาใจ เลยพยายามอัพเกรดระบบให้เป็น squeeze ผลคือ Kernel เดิมมีปัญหากับ udev รุ่นใหม่ แล้วเราไม่รู้เรื่อง ก็เลยพาให้ X มีปัญหาตามไปด้วย อาการคือ X Window หายไปเลย เหลือแต่จอดำ ๆ เปล่า ๆ

เอาล่ะสิ จะ Install ใหม่ มันก็ได้อยู่หรอกนะ แต่ว่ามันน่าจะแก้ได้ใช่ไหมล่ะ ก็เลยคิดวิธีการแก้ไว้อย่างนี้
  1. หาทางให้ระบบบูตขึ้นมาใน Text Mode ให้ได้ก่อน ตอนนี้ระบบพยายามจะใช้ X แล้วใช้ไม่ได้อยู่
  2. ถ้าบูตเข้า Text Mode ได้แล้ว ค่อยหาทางใช้อินเตอร์เนตของที่ทำงานให้ได้เป็นรายการต่อมา เพราะต้องใช้ apt-get ลงแพคเกจอีกหลายตัว
  3. จากนั้นก็ค่อยอัพเกรด Kernel และ Firmware ให้เรียบร้อย
  4. ถ้าไม่มีปัญหา ก็จะได้อัพเกรดระบบที่เหลือทั้งหมด
บูตยังไงให้เข้า Text Mode
ด่านแรกคือทำยังไงกระบวนการบูตจึงจะหยุดอยู่ที่ Text Console ไม่ไปเรียก GDM ซึ่งรันอยู่บน X เข้าไปดูในอินเตอร์เนต เจออยู่หลายเว็บ แต่ไม่ได้ตอบคำถามที่อยากรู้เลย ส่วนมากจะบอกเพียงว่า จะต้องไปแก้ไขไฟล์ไหนเท่านั้น แต่ตอนนี้ระบบของเราเดี้ยงอยู่ เราจะเข้าไปแก้ไฟล์นั้นไฟล์นี้ได้อย่างไร

สุดท้ายก็ได้พบคำตอบจาก https://help.ubuntu.com/community/BootOptions ว่า ตอนที่เครื่องรัน Grub อยู่นั้น เราสามารถใส่ Boot Option ได้ โดยเลือก OS ที่เราต้องการ กด e เพื่อ Edit Boot Command ซึ่งถ้าเป็น Linux หน้าตาของ Boot Command จะคล้าย ๆ อย่างนี้
boot: /boot/vmlinuz-x.x.x-x root=/dev/hdax ro quiet
เราเติม option ว่า text ลงไปข้างท้ายบรรทัดที่ว่าจะได้
boot: /boot/vmlinuz-x.x.x-x root=/dev/hdax ro quiet text
พอแก้ไขเสร็จ กด b ระบบก็จะบูตและกระบวนการก็จะไปหยุดอยู่ที่ Prompt ไม่เรียก GDM ให้เครื่องเราเดี้ยงอีกต่อไป

จะใช้เน็ตเวิร์กยังไง
ด่านต่อมาก็คือ แต่ก่อนแต่ไรมาเราก็ต่อเน็ตเวิร์กตอนที่อยู่ใน Gnome ทั้งนั้น ไม่เคยต่อโดยใช้บรรทัดคำสั่งเลย แต่มันต้องทำได้สิน่า ลองหาดูก่อน ก่อนอื่นเลยคำสั่งแรก เคยใช้มาบ้างแล้วคือ ifconfig
sudo ifconfig
เพื่อแสดงรายการเน็ตเวิร์กดีไวซ์ของเราเสียก่อน เครื่องผมมี 2 ตัว พอดีทราบมาก่อนแล้วว่า eth0 คือเน็ตเวิร์กดีไวซ์แบบมีสายที่เราจะใช้นี่แหละ ก็ตั้ง ip ตามที่ admin เคยให้ข้อมูลมาเสียให้เรียบร้อยด้วย
sudo ifconfig eth0 xxx.xxx.xxx.xxx
sudo ifconfig eth0 up
อันที่จริง ไม่ต้องสั่ง up ก็ได้ มันจะ up ให้อัตโนมัติ ทดสอบว่าเชื่อมต่อกับเน็ตเวิร์กแล้วโดยการ ping ไปที่ gateway ซึ่งในระบบที่ผมใช้ admin เขาให้รายละเอียดมา ก็ไม่ต้องไปค้นหาให้ลำบาก ปัญหาต่อมาก็คือ เชื่อมต่อกับเน็ตเวิร์กแล้ว แต่ต่อออกข้างนอกไม่ได้เพราะยังไม่ได้บอกระบบว่า DNS ที่เราจะใช้อยู่ที่ไหน จากการค้นอินเตอร์เนตทำให้ทราบว่ารายชื่อของ DNS จะอยู่ในไฟล์ชื่อ /etc/resolve.conf ให้ใช้สิทธิ์ root ไป Edit ไฟล์นี้โดยให้แน่ใจว่ามีบรรทัดที่ระบุ DNS อยู่เช่น
nameserver xxx.xxx.xxx.xxx
ถ้ามี DNS มากกว่าหนึ่งตัวก็เติมเข้าไปในไฟล์นี้แหละ ทดสอบว่าระบบรู้จักกับ DNS แล้วหรือยังด้วยคำสั่ง
host google.com
ควรจะได้รายการ IP Address ของกูเกิลออกมา ถ้าได้มาก็แสดงว่าตั้งค่า DNS เสร็จแล้ว ต่อมาก็ต้องระบุ Proxy Server สำหรับ apt-get ให้เรียบร้อย ให้เปิดไฟล์ /etc/apt/apt.conf ดูด้วยคำสั่ง
cat /etc/apt/apt.conf
ก็ได้น่าจะเห็นอะไรคล้าย ๆ ข้างล่างนี้อยู่
Acquire::http::Proxy "http://proxy.server.name:PORT";
ถ้าไม่มีก็เติมเข้าไปให้ถูกต้อง ตอนนี้ apt-get ของเราก็พร้อมเชื่อมต่อกับอินเตอร์เนตแล้ว ถ้ายังไม่ได้กำหนด Reprository หรือไม่แน่ใจก็ให้ดูที่ /etc/apt/source.list ก็ได้ สำหรับ Debian ตอนนี้ Debianclub ประกาศ Reprository มาหลายที่เพื่อความสะดวกของผู้ใช้ ผมอยู่ขอนแก่นก็ใช้ Reprository ของคุณนิวตรอน ก็ให้แน่ใจว่ามีบรรทัดอย่างนี้อยู่ใน /etc/apt/source.list
deb http://neutron.debianclub.com/debian squeeze main contrib non-free
ตอนนี้ apt-get ก็พร้อมแล้ว เมื่อพร้อมแล้วก็ใช้ apt-get อัพเกรด linux-image และ firmware ที่จำเป็นให้เสร็จก่อน อาจใช้ wildcard ช่วย และเลือกจากรายการที่ apt-get แสดงให้ดู เมื่อเสร็จแล้วจึงอัพเกรดทั้งระบบ หรือจะเลือกอัพเกรดเฉพาะ X และ Gnome ก่อน ก็ได้ ต่อไปจะได้เข้าไปแก้ไขระบบใน Gnome ตามที่คุ้นเคยต่อไป

วันจันทร์ที่ 15 มีนาคม พ.ศ. 2553

ได้เข้าร่วม Thailand Mini DebCamp 2010

ชาว debianclub ได้ร่วมกันเป็นเจ้าภาพ Thailand Mini DebCamp 2010 ซึ่งจัดให้มีขึ้น ณ สำนักนวัตกรรมการเรียนการสอน มหาวิทยาลัยขอนแก่น ในระหว่างวันที่ 13 - 19 มีนาคม 2553

ผมเองก็ลงชื่อไปกับเขาด้วย อันที่จริงก็เกรงใจผู้จัดอยู่ว่าเราเองถือเป็นผู้ใช้ปลายทาง แม้แต่ Build แพคเกจเองยังไม่เคยลองทำสักครั้ง จะไปประชุมอะไรกับเขาได้ แต่หนึ่งในทีมงานผู้จัดงานให้กำลังใจว่า เขามาจัดถึงหน้าบ้านแล้ว และคงไม่ได้มาบ่อย ๆ หากมีโอกาสก็น่าจะเข้าไปร่วมงานกับเขาสักครั้ง จะได้เรียนรู้การทำงานจากคนเก่ง ๆ ได้ ซึ่งก็ขอขอบคุณมา ณ ที่นี้ด้วยที่ให้โอกาส :)

วันแรก (13 มีนาคม 2553) ก็เป็นการบรรยายภาพรวมของการทำงาน ว่าจะประกอบด้วยอะไรและต้องทำอย่างไรบ้าง แต่เนื่องจากโน้ตบุ๊กของผมมันไม่ค่อยเสถียร เลยไม่กล้าหยิบเครื่องขึ้นมาทดลองทำตามที่เขาแนะนำ แต่ก็จดรายละเอียดไว้ เอาไว้มาอ่านจากอินเตอร์เนตประกอบด้วยในภายหลัง

วันที่สอง (14 มีนาคม 2553) ตามกำหนดการคือ BSP (Bug Squash Party?) ทั้งห้องเงียบมาก เรียกว่าต่างคนก็ต่างแก้บั๊กที่ตนอยากแก้ตั้งแต่เช้ายันค่ำ เงียบมากจริง ๆ

ส่วนผมน่ะหรือ? :p มัวแต่เซตอัพระบบเพื่อให้พร้อมใช้ Build แพคเกจต่าง ๆ ก็หมดไปหนึ่งวันแล้ว สาเหตุที่ใช้เวลานานก็คือ
  1. หาทางต่อระบบของตนเองเข้ากับเน็ตเวิร์กที่เขาเตรียมไว้ให้ นี่ใช้เวลาไปกว่าชั่วโมง
  2. ผมนึกว่าจะช่วยเขา Debug ได้ ระบบของผมต้องเป็น sid (ซึ่งมันต้องเป็นอย่างนี้จริง ๆ หรือเปล่าผมก็ยังไม่ทราบ) จึงอัพเกรดระบบของตนเองจาก lenny เป็น sid นี่ใช้เวลาไปอีกกว่าชั่วโมง
  3. เกิด Error ขึ้นระหว่างการอัพเกรด! จึงต้องหาทางทำให้ระบบกลับเป็นเหมือนเดิมนี่ก็อีกกว่าชั่วโมง
  4. พอย้อนระบบได้เหมือนเดิมปั๊บ ก็ลองทำตามที่เขาแนะนำทันที คือสร้างระบบ base system เพื่อทดสอบการ build แพคเกจโดยใช้คำสั่ง pbuilder ปรากฏว่า pbuilder ของผมมันจะมี error ที่คนอื่นเขาไม่มีกัน
  5. ก็นึกว่าเป็นเพราะการเซตอัพพวก configuration file ของเราไม่ดี ก็หาทางแก้ ลองผิดลองถูกอยู่เกือบครึ่งวันปรากฏว่า
  6. คนอื่นเขาใช้ pbuilder เวอร์ชั่นสูงกว่าที่เราใช้ ที่เราใช้เป็นเวอร์ชั่นจาก lenny ซึ่งค้นดูในอินเตอร์เนต เขาก็ระบุว่า ถ้าเป็นเวอร์ชั่นนี้ มันก็จะมี error อย่างนั้นแหละ -_- แต่เขามีวิธีแก้ (Work Around) ให้ด้วย ก็เลยใช้ pbuilder สำเร็จ ตอนที่ทุกคนกำลังเก็บของจะกลับบ้านนั่นแหละ
เรียกว่าวันนี้ทั้งวัน นอกจากจะไปกินข้าวของเขาฟรี ๆ แล้ว (อร่อยมาก) ยังไปกินแบนด์วิดธ์ของเขาฟรี ๆ อีก บั๊กสักตัวก็แก้ให้เขาไม่ได้ ฮะ ฮะ ฮะ แต่ก็ได้เรียนรู้อะไรใหม่ ๆ ที่คงจะไม่มีโอกาสเรียนรู้ได้เองถ้าอยู่คนเดียวเยอะแยะ นับเป็นประสบการณ์ที่ดี

ก็ตั้งใจไว้ว่า ในระหว่างนี้ก็จะหัดทำอะไรแบบนี้ให้เก่งขึ้น แล้วหากมีกิจกรรมนี้อีกคราวหน้า จะไม่ให้ผู้จัดเสียข้าวสุกไปเปล่า ๆ แน่นอน...สู้โว้ย!