บูต ISO image จาก hard disk ด้วย Unetbootin

การบูตจากไฟล์ ISO image ที่เก็บใน hard disk เป็นเรื่องที่ GRUB ทำได้มาตั้งนานแล้ว GRUB2 ก็ทำได้ และสะดวกกว่าด้วย เพียงแต่ขั้นตอนจะยุ่งยากสักหน่อยสำหรับคนที่ไม่เข้าใจ แต่ OMG!Ubuntu! ไปเจอวิธีการตั้งค่า GRUB2 แบบง่ายๆ โดยที่ไม่ต้องพิึ่ง command-line เลย ขอเพียงแต่มี Unetbootin (ตัวสร้าง LiveUSB สารพัดประโยชน์) เท่านั้น

วิธ๊มีตามนี้

  1. ก่อนอื่นก็ต้องลง Unetbootin ก่อน ถ้ายังไม่มีก็ลงซะ จะใช้ apt-get, Synaptic, หรือ Ubuntu Software Center ก็ตามสะดวก
  2. ตรงช่อง “Diskimage” เลือกเป็น ISO แล้วก็เลือก path ไปยังไฟล์ ISO ของเรา, ตรงช่อง “Type” เลือกเป็น “Hard Disk” และตรงช่อง “Drive” ใส่ “/” (ไม่ต้องมีเครื่องหมายคำพูด) แล้วกด OK
  3. รอไปเรื่อยๆ พอ Unetbootin ทำงานเสร็จเรียบร้อยให้รีสตาร์ตเครื่อง ตรง GRUB2 menu น่าจะมีตัวเลือก “Unetbootin” ปรากฏขึ้นมาแล้ว ถ้า GRUB2 ไม่ยอมขึ้น menu มาให้เลือก กด SHIFT ค้างไว้

หากอยากถอนเอาตัวบูต ISO ออก ก็ให้รัน Unetbootin อีกรอบ คราวนี้จะมีหน้าต่างเตือนว่า “Unetbootin is currently installed. Remove the existing version?” ให้กด OK โลด มันจะลบตัวเลือกบูตเข้า ISO ออกจาก GRUB2 Menu ให้ (ไม่ต้องกลัว มันไม่ได้ลบ Unetbootin ออกจากเครื่อง)

แต่ถ้าใครเป็นพวกมาโซคิสต์ ใช้โปรแกรมช่วยแบบ GUI แล้วเกิดอาการแพ้ ก็ลุยแก้ GRUB2 ได้เลยด้วยคำสั่ง (แนะนำโดย Dan Sonny Radu จากความเห็นในเว็บ OMG!Ubuntu!)

sudo gedit /etc/grub.d/40_custom

จากนั้นเพิ่มข้อความข้างล่างนี้เข้าไป

menuentry "Boot Ubuntu 10.10 Live ISO" {
loopback loop (hd0,1)/home/ubuntu-10.10-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/home/ubuntu-10.10-desktop-i386.iso
initrd (loop)/casper/initrd.lz
}

ตรง hd0,1 นี่ต้องหาเอาเองนะครับว่า partition ที่คุณเก็บไฟล์ ISO มันมีชื่อว่าอะไรใน GRUB ผมก็รู้คร่าวๆ ว่าเลขตัวแรกหมายถึง hard disk นับจากลูกที่ 0,… ส่วนเลขตัวที่สองหมายถึง ลำดับพาร์ติชันใน hard disk ลูกนั้น นับจาก 0,… เหมือนกัน ใน GRUB2 การนับพาร์ติชันเปลี่ยนเป็นนับจากเลข 1, ไปเรื่อยๆ… (ใน GRUB legacy จะนับจาก 0, ….) เช่น hd0,1 หมายถึง hard disk ลูกแรก พาร์ติชันที่หนึ่ง (หรือ hard disk ลูกแรก พาร์ติชันที่สอง ใน GRUB legacy)

พอเพิ่มเข้าไปเรียบร้อยก็ให้ save ซะ แล้วรันคำสั่งอัพเดต GRUB2

sudo update-grub2

เท่านี้ก็น่าจะเรียบร้อย รีสตาร์ตอีกครั้งก็น่าจะมีเมนูให้เลือกบูตเข้า ISO (ถ้าไม่มีอะไรผิดพลาดโดยเฉพาะตรง hdX,X)

แต่ยังไง ผมก็คงใช้ Unetbootin ดีกว่า 😛

ที่มา http://www.webupd8.org/2011/02/how-to-boot-iso-with-grub2-easy-way.html

แต่ง Ubuntu ให้เร็วขึ้นด้วย GRUB profile ใน GRUB2

ตั้งแต่สมัย Ubuntu 9.04 Jaunty Jackalope ผมเคยเขียนวิธีการปรับ Ubuntu ให้ boot เร็วขึ้นด้วย GRUB profile แต่ว่านับจาก Ubuntu 9.10 Karmic Koala เป็นต้นมา GRUB bootloader ของ Ubuntu เปลี่ยนเวอร์ชันไปเป็น GRUB2 ซึ่งวิธีการทำ profile แบบเดิมใช้ไม่ได้

การทำ GRUB profile ช่วยลดเวลาในการบูตโดยการสร้าง profile หรือรายการที่จะเรียกเฉพาะ driver และ service ต่างๆ ที่จำเป็นในการบูตระบบเท่านั้น ส่วนอันอื่นๆ ที่ไม่จำเป็นก็ไม่ต้องไปยุ่งกับมันให้เสียเวลา

การทำ profile ใน GRUB2 ดูจะยุ่งยากกว่า GRUB legacy เล็กน้อย วิธีการมีดังนี้

1. เปิดไฟล์ /etc/default/grub ด้วยสิทธิของ root

sudo gedit /etc/default/grub

2. มองหาบรรทัดตามข้างล่างนี้

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

แล้วเติมคำว่า “profile” (ไม่ต้องใส่เครื่องหมายคำพูด) ต่อท้ายบรรทัดนั้น ตามตัวอย่าง

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash profile”

3. เซฟและปิด gedit กลับไปที่ Terminal แล้วรัน

sudo update-grub2

Reboot หนึ่งครั้ง เมื่อเครื่องรีสตาร์ตขึ้นมา GRUB ก็จะสร้าง profile ไว้สำหรับการบูตครั้งต่อๆ ไป การบูตครั้งนี้อาจจะกินเวลานานกว่าปกติสักเล็กน้อย

4. เมื่อ Reboot เข้ามาถึง Desktop แล้วก็ให้เปิดไฟล์ /etc/default/grub อีกครั้ง

sudo gedit /etc/default/grub

5. ลบคำว่า “profile” ที่เพิ่งเติมลงไปออกจากท้ายบรรทัดเดิมนั้น แล้วก็ sudo update-grub2 ซ้ำอีกรอบ

ถ้าอยากรู้ผลก็ควรจะลองจับเวลา Reboot ดูอีกสักครั้งหรือสองครั้ง ผมทำดูแล้วลดได้ประมาณ 1-2 วินาที แต่ยังไงก็ไม่เร็วเท่าตอนที่ format ลง Ubuntu ใหม่ๆ สถิติดีสุดคือแค่ใกล้เคียง

ที่มา http://www.ghacks.net/2010/07/12/speed-up-your-ubuntu-machines-boot-time/

GRUB 1.97.2 ออกแล้ว

GRUB 2 เวอร์ชันใหม่ 1.97.2 ได้ออกตัวเต็มแล้วในตอนเย็นวันอาทิตย์ (หรือประมาณเช้ามืดวัันนี้ตามเวลาบ้านเรา) ซึ่งเวอร์ชันใหม่นี้ก็มีจุดแก้ไขหลายจุดด้วยกันทั้งทางเทคนิคและทางลิขสิทธิ์ เนื่องจากในเวอร์ชันก่อนหน้านี้ มี License ของ header บางตัวที่มีปัญหากับ BSD license เช่น มีบางอันที่ License ขาดหายไป หรือมีบางอันที่ข้อความที่ระบุไว้ใน License ไม่สอดคล้องกับเนื้อหาของ GPL

Most importantly, it fixes two problems with header files of BSD origin:

  • A number of header declarations had their copyright/license headers missing. They had been imported in GRUB Legacy many years ago, and recently found their way into the 1.97 release. Vladimir Serbinenko spotted this problem and fixed it by tracking down the header origin and adding the missing copyright and license.
  • In one of those cases (the bootinfo structure, used for booting the kernel of FreeBSD), the original license was the unrevised BSD license with advertisement clause [*], which made it impossible for 3rd parties to comply with GPL requirements and legally distribute GRUB. Again, Vladimir fixed this by rewriting the bootinfo struct declaration.

จาก http://lists.gnu.org/archive/html/grub-devel/2010-01/msg00316.html

เรื่องจุดแก้ไขทางเทคนิค ผมอ่านไม่ค่อยรู้เรื่องเลยไม่สนใจเท่าไร แต่ที่ผมแปลกใจกับ Release Announcement ของ GRUB 1.97.2 คือเรื่องการแจ้งจุดแก้ไขเกี่ยวกับ License นี่แหละ ถ้าใครเคยเห็นซอฟท์แวร์ตัวอื่นมีการแจ้งจุดแก้ไขเกี่ยวกับ License ยิบย่อยใน Release Announcement แบบนี้ ก็บอกผมต่อด้วย หรือจะให้ดีเอามาลิงค์มาแปะโชว์เลยก็ได้

อ๋อ เกือบลืมเรื่องสำคัญอีกอย่าง คือ GRUB 1.97.2 นี่เลื่อนออกช้ากว่าที่ควรจะเป็นเล็กน้อยนะครับ เพราะมีเรื่องพบ Security bug ร้ายแรงก่อน ทำให้  GRUB Project ต้องออกตัวอัพเดตย่อยมาแก้ไขด่วน ซึ่ง Bug ที่ว่าใน GRUB 2 เวอร์ชัน 1.97.x จะยอมให้คนที่ใส่ตัวอักษรอะไรก็ได้ในช่อง password แก้ไข GRUB ได้ทันที โดยไม่จำเป็นต้องรู้ password แค่เดาตัวอักษรให้ถูกอย่างน้อย 1 ตัวก็พอ เช่น ถ้าตั้ง password “grub” ใส่แค่ตัว “g” หรือ “r”, “u”, “b” ก็จะเข้าไปได้ทันที (Bug นี้ปล่อยหลุดมาได้ไงเนี่ย?)

ที่มา http://www.phoronix.com/scan.php?page=news_item&px=NzkyMA

โดนหมี Koala กัดเข้าให้แล้ว

หลังจากที่ลง Ubuntu 9.10 Karmic Koala บนเครื่องคอมพิวเตอร์โน็ตบุ๊กมาได้เกือบสัปดาห์ วันนี้ผมวางแผนที่จะลงเจ้าหมี Karmic Koala บนเครื่องคอมพิวเตอร์ตั้งโต๊ะบ้างอีกเครื่อง

ที่จริงการฟอร์แมตและลง Ubuntu มันไม่ใช่เรื่องยากอะไรเลย (ถ้าเคยทำมาก่อน) แต่ปัญหาของผมคือ CD-R ที่บ้านมันหมดเกลี้ยงไปตั้งแต่ปีมะโว้แล้ว และเครื่องคอมพิวเตอร์ตั้งโต๊ะเครื่องเก่าของผมมันก็ไม่สนับสนุนการบูตจาก USB Flash Drive ซะด้วย จะใช้ LiveUSB ก็ไม่ได้

เมื่อสองวันก่อนผมเห็นโพสต์สอนวิธีการลง Ubuntu 9.10 แบบไม่ต้องง้อ CD ด้วยความขี้เกียจ+งก ผมเลยลองทำดู หลักการของวิธีนี้ก็ไม่ได้ยากเย็นอะไรมาก โดยสรุปก็คือ

  1. สร้าง Partition ว่างๆ ขนาด 700 MB ขึ้นไป ขึ้นมา 1 อัน
  2. Extract ไฟล์จาก ISO image เข้าไปที่ partition ใหม่ที่สร้างขึ้นมา
  3. ตั้งค่า GRUB ให้ชี้ไปที่ Partition นั้นตอนบูต (ดังนั้นเครื่องที่จะใช้วิธีนี้ได้ต้องมี GRUB อยู่แล้ว)
  4. บูตเข้า Live session จาก Partition นั้นและ Install

ผมลองทำตามดู ก็บูตเข้า Live session ได้ (กรณีของผมต้องแก้บรรทัด initrd เป็น initrd  /casper/initrd.lz) และ Install ได้ตามปกติ แต่พอลงเสร็จ รีสตาร์ตใหม่ กลายเป็นว่า GRUB 2 ดันมองไม่เห็น Ubuntu OS ซะงั้น ในรายชื่อ OS มีแต่ Memtest กับ Windows

แต่ผมก็ยังใจเย็นอยู่ เพราะว่าเห็นใกล้ๆ โพสต์สอนวิธีการลง มีโพสต์สอนวิธีการ Recover GRUB 2 อยู่ อ่านไปอ่านมาก็รู้แล้วว่าต้องออกไปซื้อ CD-R มา burn แน่แล้ว (ทำไมไม่ออกไปซื้อแต่แรกกก… ไม่น่าขี้เกียจเลย) เพราะต้องเข้าไปแก้จาก LiveCD หรือ LiveUSB อย่างเดียว

เอาละ ไปซื้อ CD-R กลับมา (ผมต้องเดินไปซื้อถึงซีคอนสแควร์ด้วยนะ เพราะว่าช่วงนี้เสรีเซ็นเตอร์กำลังปรับปรุงห้างอยู่… โชคร้ายสุดๆ) ก็ burn Ubuntu ISO เลยทันที ใช้เครื่อง MacBook เลยซะด้วย เพราะว่าอยากให้เสร็จเร็วๆ

หลังจากยัดแผ่นที่ burn เสร็จเข้าไป บูตเข้า Live session ผมก็นึกได้ว่า “ไหนๆ บูตมาแล้วก็ Reinstall ใหม่เลยแล้วกัน GRUB มันจะได้เช็ค OS เอง ไม่ต้องเข้าไปแก้ให้เหนื่อย” คิดได้ดังนี้ ผมจึงกด Install และ Format ใหม่ไปเลย (ลงใหม่ยังไงก็เสียเวลาแค่ไม่กี่นาทีอยู่แล้ว)

รีสตาร์ตใหม่อีกรอบ นึกว่าเรื่องจะจบแบบ Happy ending ซะแล้ว ผลกลับออกมาว่า คราวเคราะห์ผมยังไม่หมด GRUB 2 ยังคงมองไม่เห็น Ubuntu เหมือนเดิม เริ่มเครียดหน่อยๆ แล้ว

ไม่เป็นไร ทำตามวิธีการ Recover GRUB 2 ก็ได้ ผมก็บูตเข้า Live session อีกครั้ง และลองทำตามขั้นตอนที่เขาบอกดู สารภาพเลยว่าทำตามโดยที่ไม่รู้เรื่องเลยว่าอะไรเป็นอะไร เพราะ GRUB 2 เป็นของใหม่ที่ผมยังไม่ได้ศึกษามาก่อน

และแล้วเรื่องนี้ก็กลายเป็นโศกนาฏกรรมประจำวันจนได้ คราวนี้ในรายการของ GRUB มองเห็นแต่ Memtest อย่างเดียว แม้แต่ Windows ก็หายไปแล้วด้วย

ที่เล่ามาทั้งหมดนี้ ไม่ได้หมายความว่าโพสต์บทความ How to ทั้งสองอันข้างต้นใช้ไม่ได้นะครับ ผมคิดว่าสาเหตุมันน่าจะมาจากที่ผมไม่ยอมทำความเข้าใจกับการตั้งค่าของ GRUB 2 ให้ดีซะก่อน

ไว้วันหลัง ถ้าผมแก้ไขสถานการณ์เลวร้ายนี้ได้ ผมจะมาเขียนวิธีแก้ต่ออีกครั้ง

วันนี้พอแค่นี้ก่อน เครียดมากเดี๋ยวเผลอพังเครื่องตัวเองแบบคลิปนี้

Ubuntu 9.10 Karmic Koala จะใช้ GRUB 2

ยังคงมีข่าวทยอยออกมาเรื่อยกับสิ่งใหม่ๆที่จะมากับ Karmic เดือนตุลาคมนี้ นอกจากที่ได้เคยเสนอไปแล้ว ข่าวล่าสุดจากทาง Phoronix ก็บอกว่า Ubuntu 9.10 จะเปลี่ยนไปใช้ GRUB 2 เป็น default boot loader ด้วย

GRUB หรือ GRand Unified Boot-loader เป็น Boot loader ที่นิยมใช้กันทั่วไปสำหรับ *nix OS หลายตัวมาช้านานแล้ว ซึ่งปัจจุบัน GRUB Legacy (เลขเวอร์ชัน 0.9x) ได้หยุดพัฒนาไปแล้ว แต่ Linux distro ยอดนิยมหลายตัวก็ยังใช้กันอยู่

ส่วน GRUB 2 (ชื่อเดิม PUPA) นั้นเป็น Boot loader ตัวใหม่ที่พัฒนากันมาหลายปีแล้วเพื่อจะมาแทน GRUB Legacy ตัวเดิม เลขเวอร์ชันจะเป็น 1.9x ฟีเจอร์ที่เพิ่มขึ้นจากตัวเดิมก็ได้แก่

  • มี Graphical interface
  • รองรับ script
  • สามารถ port ไปยัง architecture อื่นๆได้
  • รองรับ internationalization
  • ฯลฯ

ส่วนแผน 10s boot time นี่ยังอยู่เหมือนเดิมนะ