วันพฤหัสบดีที่ 17 ธันวาคม พ.ศ. 2552

Look! It's alive! (Debian-Live USB Part I)

เมื่อต้นเดือนที่ผ่านมา ห้างเซนทรัลพลาซ่าได้เปิดตัวที่ขอนแก่น ผมเองก็พยายามไปเซนทรัลในช่วงสัปดาห์แรกอยู่ 2 - 3 หนเหมือนกัน แต่ไปไม่เคยถึงที่สักที ต้องกลับรถก่อน พอดีว่าช่วงนั้นมีงานไหมพอดี รถติดชะมัดยาด

หลังจากนั้นมาสักสัปดาห์หนึ่ง คนเริ่มซาลงก็เลยไปเยี่ยมชมดู ก็ตามความคาดหมายครับ ยิ่งใหญ่อลังการมาก โดยเฉพาะเรื่องร้านอาหาร มาเปิดให้บริการกันเยอะมาก เข้าใจว่าเขาคงมองเห็นช่องว่างการตลาด และกำลังซื้อของคนในจังหวัด

นอกจากร้านอาหารแล้วอีกอย่างหนึ่งที่ประทับใจก็คือร้านหนังสือ ก็ไม่เยอะหรอกนะ แต่ที่จะมารวมอยู่ที่เดียวกันหลาย ๆ ร้านอย่างนี้เดิมก็ไม่มีมาก่อน มีทั้ง ซีเอ็ดฯ ร้านนายอินทร์ B2S และ เอเซียบุ๊คส์ และที่ร้านเอเซียบุ๊คส์นี้เองที่ผมได้เห็นนิตยสารต่างประเทศ Linux Users Magazine (ผมอาจจะจำชื่อผิด - ขออภัย) ในฉบับนี้ท่านแถม DVD Easy Peasy Linux ก็สนใจขึ้นมา ก็นึก ๆ อยู่ว่าจะลองซื้อมาอ่าน แต่ราคาเกินที่จะจ่ายไหวครับ นิตยสารฉบับเดียวเกือบ 500 บาท ถ้าสัก 200 - 300 ยังพอซื้อไหว

กลับบ้านมาก็เลยเข้ามาค้นดูว่าเจ้า Easy Peasy Linux นี้คืออะไร ก็ได้ความว่าเป็นอนุพันธ์ของ Ubuntu ที่จัดให้เล็กลงเพื่อให้ลงใน Netbook ได้ ชื่อเดิมของมันคือ Ubuntu Eee พอรู้จักเจ้าตัวนี้ก็เกิดสนใจดิสตริบิวชั่นจำพวกขนาดเล็ก (Minimalist) และพวก Live ขึ้นมาเพราะที่บ้านแฟนใช้วินโดว์อยู่ หากจำเป็นต้องใช้เครื่องของเขาเราก็ไม่อยากจะไปแตะฮาร์ดดิสก์ของเขา เผื่อพลาดพลั้งขึ้นมาข้อมูลเขาหายไปด้วยจะลำบาก ถ้าใช้แบบ Live ก็ไม่ต้องลงโปรแกรม ไม่ต้องยุ่งกับฮาร์ดดิสก์เขา และเนื่องจากผมใช้ Debian อยู่ ตัวเลือกแรกสำหรับผมก็คือ Debian-Live นี่เอง

แหล่งข้อมูลที่ค้นเจอเรียงตามลำดับที่พบคือ Pendrivelinux.com แต่เป็นการสร้างอิมเมจของเดเบียนบนวินโดว์ซึ่งยังไม่ใช่สิ่งที่ต้องการ แต่ก็มีประโยชน์มาก แหล่งถัดมาซึ่งจริง ๆ น่าจะพบก่อนด้วยซ้ำก็คือเว็บไซต์โปรเจ็คของ Debian-Live เองซึ่งมีคู่มือพร้อม เมื่อมีข้อมูลแล้วก็เริ่มลองผิดลองถูกกันได้

สิ่งที่ต้องมี
  1. เครื่องที่จะใช้สร้างอิมเมจของ Live นี้เรียกว่าโฮสต์ โฮสต์จะต้องมีแพคเกจ live-helper ติดตั้งอยู่ ถ้ายังไม่มีก็ใช้ Synaptic ช่วยในการติดตั้งก็ได้
  2. เนื่องจากการสร้างจะต้องโหลดแพคเกจทั้งหลายจาก Repository ดังนั้นระบบจึงจะต้องติดต่อกับอินเตอร์เนตได้
  3. พื้นที่ในฮาร์ดดิสก์เพื่อใช้เก็บไฟล์ที่จำเป็นในระหว่างการสร้างอิมเมจและตัวอิมเมจเอง จากที่ทดลองทำผมต้องใช้พื้นที่ไม่น้อยกว่า 3 GB สำหรับการสร้างอิมเมจแบบน้อยที่สุดที่ผมรับได้ขนาด 700 MB
  4. และแน่นอน ตัว USB Drive ความจุไม่น้อยกว่าขนาดของอิมเมจที่สร้างได้
  5. (ถ้ามีก็ดี) แพคเกจ qemu พร้อมกับตัวเร่งความเร็วของมัน (ถ้ามี) และ RAM ไม่น้อยกว่า 128 MB สำหรับการทดลองบูตอิมเมจที่สร้างได้ในอีมูเลเตอร์ (Run Linux within Linux) จะได้ไม่ต้องรีบูตเครื่องเพื่อทดสอบบ่อย ๆ
สิ่งที่ต้องทำ (แบบคร่าว ๆ)
  1. สร้างไดเร็คทอรีสำหรับสร้างและเก็บอิมเมจและไฟล์อื่น ๆ ที่ live-helper จะสร้างขึ้นมา และเข้าไปในไดเร็คตอรีนั้น
  2. แปลงร่างเป็น root เสีย ผมคิดว่าระบบของท่านจะใช้อะไรก็น่าจะได้ ไม่ว่าจะเป็น su sudo หรือว่า fakeroot แต่ที่ผมใช้คือ su ซึ่งที่มาของมันจริง ๆ ก็คือผมใช้ sudo ไม่เป็น ฮ่า ฮ่า ฮ่า
  3. เรียกคำสั่ง lh_config -b usb-hdd -p gnome-core ขึ้นมา คำสั่งนี้จะสร้างไดเร็คทอรีและไฟล์ที่ตั้งค่าต่าง ๆ ขึ้น ตัวเลือก -b usb-hdd เป็นการระบุว่าอิมเมจที่เราต้องการนั้นจะเป็นอิมเมจสำหรับ usbdrive ซึ่งชื่อของมันจะเป็น binary.img โดยอัตโนมัติ และตัวเลือก -p gnome-core จะใช้ Gnome Desktop แบบเฉพาะตัวหลัก (ตัวเลือกอื่น ๆ ขอบันทึกทีหลัง)
  4. เรียกคำสั่ง lh_build ขึ้นมา คำสั่งนี้จะโหลดแพคเกจที่จำเป็นต่าง ๆ มาและสร้างระบบไฟล์ของลินุกซ์ขึ้นและแปลงระบบไฟล์เป็นอิมเมจในที่สุด ขั้นตอนนี้อาจใช้เวลาค่อนข้างนานเพราะ script จะโหลดแพคเกจจาก Repository มา จะใช้เวลานานเท่าใดก็แล้วแต่ความเร็วในการติดต่อนั่นแหละครับ หลังจากโหลดแพคเกจมาแล้วก็ยังต้องใช้เวลาสร้างไบนารีอิมเมจอีก ระบบของผม (Pentium M 1.5 GHz + LAN Connection) ใช้เวลารวมประมาณ 2 - 3 ชั่วโมงครับ เคยลองรัน lh_build ตอนต่อกับโมเดมที่ความเร็ว 480kbps ก็ใช้เวลาข้ามคืนครับ
  5. เมื่อได้อิมเมจมาแล้ว เราสามารถลองบูตอิมเมจนี้ได้โดยไม่ต้องรีบูตเครื่องโดยใช้ qemu binary.img ผลที่ได้เป็นดังรูป
เมื่อมั่นใจว่าอิมเมจที่สร้างใช้ได้ ก็เขียนลง UsbDrive ได้เลย แต่ต้องเป็น UsbDrive ที่ว่าง ๆ นะครับ ข้อมูลสำคัญให้สำเนาเก็บไว้ให้เรียบร้อยก่อน เพราะข้อมูลมันจะถูกลบทิ้งไปทั้ง Drive เลย

เขียนอิมเมจลงไดรว์โดยใช้คำสั่ง
#dd if=binary.img of=/dev/sdx
เมื่อ /dev/sdx คือดีไวซ์ของ UsbDrive ของเรา ในกรณีของผมคือ /dev/sda ในกรณีของท่านอื่น ๆ อาจจะต่างกันไป เช่น /dev/sdb เป็นต้น กระบวนการนี้อันตรายมากสำหรับคนที่ไม่แน่ใจว่าตนกำลังทำอะไรอยู่ เพราะหากเป็นระบบที่ใช้ Serial HDD บางทีฮาร์ดดิสก์ของท่านอาจจะเป็น /dev/sda ก็ได้ แล้วคำสั่งข้างบนก็จะไปทำลายข้อมูลในฮาร์ดดิสก์ของท่านจนหมด กู้ไม่ได้ เพราะฉะนั้นขอให้ทำด้วยความระมัดระวังนะครับ

เราอาจจะทราบดีไวซ์ของ UsbDrive ของเราได้โดยใช้คำสั่ง
#fdisk -l
ภายใต้สิทธิ์ของ root ให้มองหาดีไวซ์มีความความจุเท่ากับ UsbDrive ของเรา อันนั้นน่าจะเป็นอันที่ถูกต้อง ถ้ายังไม่แน่ใจ ให้เอา UsbDrive ออก แล้วสั่งใหม่ ดีไวซ์ไหนหายไปดีไวซ์นั้นคือ UsbDrive ของเรานั่นเอง เมื่อบันทึกลง UsbDrive ได้แล้วก็ลองรีบูตเครื่องและบูตจาก USB ดู น่าจะเข้าสู่ live boot ได้
.
.
.
ในระหว่างการลองผิดลองถูกครั้งนี้ก็ได้เรียนรู้อะไรน่าสนใจหลายอย่าง บางอย่างลองแล้ว แต่มันยาว เลยยังไม่บันทึก บางอย่างก็ไม่ยาวนักแต่ยังไม่ได้ลองก็เลยยังไม่บันทึก หากมีเวลาจะกลับมาบันทึกเรื่องน่าสนใจเหล่านั้นในเร็ว ๆ นี้

วันเสาร์ที่ 5 ธันวาคม พ.ศ. 2552

การใช้ KiCad ครั้งแรก

ผมมีความต้องการจะใช้โปรแกรมออกแบบลายวงจรในลินุกซ์มานานแล้ว แต่ก่อนผมพยายามจะใช้ geda แต่ขอเรียนตามตรงว่าความสามารถผมไม่ถึงจริง ๆ ผมว่า geda ใช้ยากนะ

ผมเห็น KiCad ใน Reprository มานานแล้ว แต่ไม่ได้จะใช้ด้วยความคิดแบบไร้เดียงสาว่า ตัว K เกี่ยวข้องกับ KDE และจะต้องลง KDE ทั้งชุดซึ่งผมไม่อยากทำ

สุดท้ายก็ตัดสินใจลง KiCad จนได้ ความประทับใจก็คือมันใช้ง่ายมากเลยครับ ทำให้เรียนรู้ได้ง่าย ไม่จำเป็นต้องเป็นคนที่รู้เรื่องกระบวนการ EDA มาก่อนก็ได้

Tutorial ชุดแรกที่ผมอ่านคือ Mini Tutorial - KiCad ซึ่งผลงานชิ้นแรกผมทดลองทำ Instrument Amplifier แบบที่ใช้ OpAmp 3 ตัว ผลงานก็แสดงดังรูปครับ






วันพุธที่ 14 ตุลาคม พ.ศ. 2552

การสร้างและเพิ่มไลบารีให้ xfig

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

แต่ก็มีสิ่งหนึ่งที่สร้างความไม่สะดวกมาตลอด ก็คือสัญลักษณ์ทางไฟฟ้าและอิเล็กทรอนิกส์ที่มีให้มากับ xfig นั้นมันจัดขนาด โดยเฉพาะขั้วต่อภายนอกไม่ตรงกับ Snap และ Grid คือมันจะเหลื่อมกันทำให้ต้องวาดสัญลักษณ์สำหรับไดอะแกรมใหม่เสมอ (ผมทำ Copy & Paste ข้ามไฟล์ใน xfig ไม่เป็น T_T)

จนบัดนี้จึงได้มาพบกับวิธีสร้างและเพิ่มไลบารีให้กับ xfig จาก http://www.xsteve.at/prg/xfig/

เว็บไซต์ของสตีฟระบุขั้นตอนไว้อย่างนี้ครับ
  1. สร้างสัญลักษณ์ที่จะใช้ขึ้นมา Save ในชื่อสัญลักษณ์นั้น ๆ เอง เช่นสร้าง NPN BJT ขึ้นมาก็อาจ Save ในชื่อ npn_bjt.fig ก็ได้
  2. สร้างสัญลักษณ์อื่น ๆ ที่สามารถจัดเข้าอยู่ในกลุ่มเดียวกันขึ้นมา และเก็บไว้ในไดเร็คตอรีเดียวกัน เช่นในกรณีตัวอย่างเป็นสัญลักษณ์ในวงจรอิเล็กทรอนิกส์ อาจเก็บไว้ใน ~/myxfiglib/electronic ก็ได้
  3. สร้าง Symbolic Link ในไดเร็คตอรีไลบรารีของ xfig ลิงก์มาที่ไลบราลีของเรา (ผมเข้าใจถูกไหมนะ) โดยใช้คำสั่ง

    ln -s ~/myxfig/library/electronic / /usr/X11R6/lib/X11/xfig/Libraries/nlogic

  4. เมื่อเรียก xfig ขึ้นมาและเปิดไลบรารีควรจะเห็นไลบรารี electronic ของเราอยู่ในรายการด้วย
แต่สิ่งที่สตีฟบอกไว้มันใช้กับระบบของผมไม่ได้โดยตรงแฮะ ทั้ง ๆ ที่ใช้ Debian 5.0 ตอนที่เป็น Stable Release แล้วและไม่เคยเข้าไปแก้ไขอะไร แต่พอเข้าไปใน /usr/X11R6 แล้วมันไม่เจอ lib มันมีแต่ bin ก็เลยเดาเอาว่าสงสัยเป็นเพราะโครงสร้างของ X11 ว่ามันเปลี่ยนไปนานแล้ว เคยได้ยินใครในอินเตอร์เนตนี่แหละ เล่าให้ฟัง ก็เลยค้นหาดูในระบบแฟ้ม ว่ามีอะไรที่คล้าย ๆ อย่างนี้ไหม ปรากฏว่าเจออยู่ที่

/usr/share/xfig/Libraries

ก็เลยลองทำสร้างลิงก์ไว้ในไดเร็คตอรีนั้นแหละ โดยใช้คำสั่ง

ln -s ~/myxfiglib/electronic /usr/share/xfig/Libraries/electronic

เมื่อเสร็จแล้ว หากไป ls ดูใน /usr/share/xfig/Libraries ก็เจอลิงก์มาที่ ~/myxifglib/electronic แล้วก็ลองเรียก xfig และเปิดไลบรารีดู ก็พบผลงานของตัวเองอยู่ในไลบรารีเรียบร้อยพร้อมใช้งาน :)

หมายเหตุ: มีข้อควรระวังนิดหน่อยว่าไม่ควรตั้งชื่อไลบรารีของตัวเองซ้ำกับไลบรารีที่ติดมากับ xfig อยู่แล้ว ผมไม่รู้หรอกว่าจะเกิดอะไรขึ้น แต่คิดว่าคงจะมีปัญหาแหง ๆ