ติดตั้ง etch รุ่นทดลอง แบบ debootstrap

งานที่ทำในครั้งนี้คือ

  • แบ่งพาร์ติชั่น
  • ติดตั้ง debootstrap
  • ติดตั้ง etch รุ่นทดลอง (ย่อว่า etch-exp ในพาร์ติชั่นใหม่ โดยใช้ debootstrap

แบ่งพาร์ติชั่น

คราวที่แล้วเรามี

/dev/hda1    primary    /boot    100MB
/dev/hda2    primary    /        10GB
/dev/hda3    extend
/dev/hda5    logical    swap     512MB

คราวนี้เราจะเพิ่ม /dev/hda6 ขนาด 20G เพื่อทำเป็น / ให้กับ etch-exp

/dev/hda6    logical    /        20G

ในครั้งก่อน การติดตั้งของ sarge ไม่ยอมขยาย extended partition ให้เต็มพื้นที่
ในคราวนี้เราจะมาแก้ไขเรื่องนี้ด้วย
ขั้นตอนขยายพาร์ติชั่นและเตรียมการติดตั้งคือ

  1. หยุดการ swap ก่อน
  2. ลบ /dev/hda3 ทิ้ง และสร้างใหม่ให้เต็มพื้นที่
  3. สร้าง /dev/hda5 เป็น swap ใหม่
  4. สร้าง /dev/hda6 เป็น / ของ etch-exp ขนาด 20G
  5. รีบูตใหม่
  6. ฟอร์แมต /dev/hda6 เป็น ext3

หยุดการ swap
# swapoff -a

ลบ /dev/hda3 ทิ้ง
# fdisk /dev/hda
<<<--- d
<<<--- 3

สร้างใหม่ให้เต็มพื้นที่
<<<--- n
<<<--- e (extended)
Partition number (1-4):
<<<--- 3
First cylinder:
<<<--- DEFAULT
Last cylinder:
<<<--- DEFAULT

สร้าง /dev/hda5 เป็น swap ใหม่
<<<--- n
<<<--- l (logical)
First cylinder:
<<<--- DEFAULT
Last cylinder:
<<<--- +512M
<<<--- t
<<<--- 5
<<<--- 82

สร้าง /dev/hda6 เป็น / ของ etch-exp ขนาด 20G
<<<--- n
<<<--- l (logical)
First cylinder:
<<<--- DEFAULT
Last cylinder:
<<<--- +20G

เขียนลงดิสก์
<<<--- w

รีบูต เพื่อให้ระบบรู้จักพาร์ติชั่นใหม่
...

ฟอร์แมต /dev/hda6 เป็น ext3
# mkfs.ext3 /dev/hda6

ติดตั้ง debootstrap

# apt-get install debootstrap

ติดตั้ง etch ในพาร์ติชั่นใหม่ โดยใช้ debootstrap

สร้างจุดเมานต์ให้ /dev/hda6
# mkdir -p /mnt/disk

เมานต์
# mount /dev/hda6 /mnt/disk

เริ่ม debootstrap
# debootstrap --arch i386 etch /mnt/disk http://MY-APT-PROXY:9999/debian

คัดลอกข้อมูลระบบไปยัง etch-exp
# cp /etc/hosts /mnt/disk/etc
# cp /etc/network/interfaces /mnt/disk/etc
# cp /etc/apt/sources.list /mnt/disk/etc
# cp /etc/fstab /mnt/disk/etc

แก้ไข fstab โดยเปลี่ยนจาก /dev/hda2 เป็น /dev/hda6 อย่างอื่นเหมือนเดิม
# vi /mnt/disk/etc/fstab

...
/dev/hda6    /        ext3    defaults,errors=remount-ro 0       1
...

chroot ไป etch-exp
# mount -t proc proc /mnt/disk/proc
# mount -o bind /dev /mnt/disk/dev
# mount -t sysfs /sys /mnt/disk/sys
# chroot /mnt/disk /bin/bash

อัปเดตหนึ่งครั้ง
# apt-get update

ติดตั้งแพคเกจจำเป็น
# apt-get install locales console-data
# dpkg-reconfigure locales console-data
<<<--- Ok
<<<--- Don't touch keymap

แพคเกจอื่น
# apt-get install initrd-tools usbutils pciutils bzip2 ssh grub udev yaird ssh
# dpkg-reconfigure -a

ตอบค่าปริยายทั้งหมด
ยกเว้นรหัสผ่าน root, การเพิ่มผู้ใช้และรหัสผ่าน, โซนเวลา

ติดตั้งเคอร์เนล
# apt-get install linux-image-686
Create a symbolic link to the current kernel image?
<<<--- Y
Do you want to abort now?
<<<--- N

ออกจาก etch-exp
exit

กลับมาใช้ทรัพยากรของ etch เดิม
# umount /mnt/disk/proc
# umount /mnt/disk/dev
# umount /mnt/disk/sys
# sync
# ldconfig

ปรับแก้ grub เพิ่ม etch-exp
# vi /boot/grub/menu.lst
ปรับแก้ default ให้บูตเป็น etch-exp

...
default         2
...

ไปที่ท้ายไฟล์ (กด G)

...
title           Etch-Experiment, kernel 2.6.17-2-686
root            (hd0,0)
kernel          /vmlinuz-2.6.17-2-686 root=/dev/hda6 ro
initrd          /initrd.img-2.6.17-2-686
savedefault

เสร็จแล้ว สามารถรีบูตเข้า etch-exp เพื่อทดสอบได้เลย