เรื่องของเรื่องก็คือ ในขั้นตอนการทำ Cloud นั้น มันจะมี image ไฟล์ของเครื่องโหนดลูกที่เก็บไว้ที่เครื่องหลัก image ไฟล์เหล่านี้ ก็เสมือนฮาร์ดดิสต์ที่เราติดตั้ง OS และโปรแกรมต่างๆไว้พร้อมสำหรับบู๊ตเครื่องแบบต่างๆไว้ เมื่อเราสั่งติดตั้งโหนดลูก มันก็จะใช้ image ไฟล์เหล่านี้บู๊ตเครื่องขึ้นมา ซึ่งขั้นตอนการบู๊ตเครื่องนั้น จะเป็นอย่างไรก็อยู่ที่เราสร้าง image ไฟล์ไว้นั่นเอง
ปัญหาที่ผมเจอตอนนี้ คือ image ไฟล์ที่เขาสร้างไว้นั้น ยังมีบั๊กอยู่ ทำให้การติดตั้ง Cloud สะดุด ไม่สามารถติดตั้งโหนดลูกได้สมบูรณ์ เขาแนะนำว่าต้องเพิ่มโปรแกรมบางอย่างลงไป ซึ่งตอนนี้ถ้าเรารอได้ ก็รอให้เขาทำ image ไฟล์ตัวใหม่ออกมา แล้วเราก็แค่ update แต่ถ้ารอไม่ได้ก็ต้องทำ image ไฟล์ใหม่เอง ตามขั้นตอนที่เขาแนะนำ
ผมก็เลยทำตามขั้นตอนที่เขาแนะนำ และก็เลยคิดว่าควรจะบันทึกวิธีการหลักๆไว้ เพราะมีประโยชน์ในการนำไปใช้แก้ไข Firmware ต่างๆของเครื่องที่ใช้ระบบ Linux เช่น Firmware ของ Android เป็นต้น
หมายเหตุ: ขั้นตอนต่อไปนี้อาจจะต้องใช้สิทธิ์ของ root ในการสั่งงาน
ขั้นตอนแรก คือ mount image ไฟล์นั้นๆเข้ามาก่อน เช่น สมมติว่าเรามีไฟล์อยู่ที่ /home/test/amd64-boot.img อาจจะสั่ง mount ไปไว้ที่ /mnt ดังนี้
mount /home/test/amd64-boot.img /mnt
จากนั้น ใช้คำสั่ง chroot ซึ่งจะเปลี่ยนสภาพแวดล้อมการทำงานให้เรา เสมือนว่าเราทำงานอยู่บนอีกเครื่องหนึ่งที่มี root โฟลเดอร์อยู่ตรงที่ที่เราต้องการ เช่นในกรณีนี้ เราจะทำงานเสมือนว่าเราเปิดเครื่องมามีฮาร์ดดิสต์อยู่ที่ image ไฟล์ที่เรา mount ไว้แล้วที่ /mnt ดังนี้
chroot /mnt
เมื่อเราเสมือนว่าทำงานอยู่ที่ฮาร์ดดิสต์ตัวใหม่แล้ว เราก็สามารถแก้ไขข้อมูลต่างๆภายในได้ หรือแม้แต่รันโปรแกรมต่างๆ ก็จะเสมือนรันอยู่ที่เครื่องนั้น (จะต้องเป็นเครื่องที่มีสถาปัตยกรรมเหมือนกันกับเครื่องจริงที่กำลังทำงานอยู่) แต่ปัญหาของผมก็คือ ผมจะติดตั้งโปรแกรมโดยใช้คำสั่ง apt-get install แล้วเกิดปัญหาว่า ไม่สามารถติดต่อกับเน็ตเวอร์กได้ ทั้งๆที่เครื่องที่ทำงานอยู่ สามารถใช้เครือข่ายได้ตามปกติ สาเหตุก็คือ เราจะต้อง mount โฟลเดอร์พิเศษของระบบเข้ามาให้ถูกต้องด้วย นั่นคือโฟลเดอร์ /dev, /proc, /sys ซึ่งจะต้องเรียกก่อนที่จะใช้คำสั่ง chroot ดังนี้
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
เท่านี้ เราก็สามารถใช้คำสั่ง apt-get install เพื่อติดตั้งโปรแกรมต่างๆลงใน image ไฟล์ที่เราต้องการได้ จากนั้นเมื่อทำการแก้ไขเสร็จแล้ว ให้ออกโดยอย่าลืม umount ด้วยดังนี้
exit
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt