จุดประสงค์คือ จะสร้างเซอร์เวอร์สำหรับการทดลอง ไว้แทนตัวเก่าที่ปลดประจำการไปทำ เครื่องเขียนซีดี
เพื่อเวลาจะทดสอบอะไร ก็สามารถลบและลงใหม่แบบคล่องตัว
จะติดตั้ง sarge เพื่อเป็นฐานในการทดลองรันเซิร์ฟเวอร์แบบต่าง ๆ
เพื่อให้ประหยัดแบนวิธ จะเขียนเป็น text ทั้งหมด
/dev/hda1 primary /boot 100MB /dev/hda2 primary / 10GB /dev/hda3 extend /dev/hda5 logical swap 512MB
ที่เหลือปล่อยว่างไว้เพื่อใช้ในการทดสอบและติดตั้งระบบต่อไป
เริ่มเลย
- บูตเครื่องด้วยแผ่นติดตั้งเดเบียน sarge
Press F1 for help, or ENTER to boot:
<<<--- linux26
Choose Language
<<<--- English
Choose country of region
<<<--- other <<<--- Asia <<<--- Thailand
Select a keyboard layout
<<<--- American English
...
ถ้ามีเราเตอร์หรือ dhcp server ก็ข้ามขั้นตอนนี้ไปได้
Configure the network
<<<--- Configure network manually
IP address:
<<<--- 192.168.1.5
Netmask:
<<<--- 255.255.255.0
Gateway:
<<<--- (ใส่ค่าไอพีของ router) 192.168.1.1
Name server addresses:
<<<--- (เหมือนเดิม) 192.168.1.1
Hostname:
<<<--- server1
Domain name:
<<<--- (ใส่ชื่อโดเมนของเรา) example.com
Partition disks
<<<--- ใส่ค่าตามที่ตั้งใจไว้
/dev/hda1 primary /boot 100MB /dev/hda2 primary / 10GB /dev/hda5 logical swap 512MB
Installing the Debian base system
...
Install the GRUB boot loader to the master boot record?
<<<--- Yes
Installation complete
<<<--- Continue
รีบูตเข้าระบบใหม่
Welcome to your new Debian system!
<<<--- Ok
Is the hardware clock set to GMT?
<<<--- No
Are you in the Asia/Bangkok time zone?
<<<--- Yes
Root password:
<<<--- ใส่ค่ารหัสผ่านของ root
Re-enter password to verify:
<<<--- เหมือนเดิม
Enter a full name for the new user:
<<<--- user1
Enter a username for your account:
<<<--- user1
Enter a password for the new user:
<<<--- ใส่รหัสผ่านของ user1
Re-enter password to verify:
<<<--- เหมือนเดิม
Archive access method for apt:
<<<--- cdrom
CD-ROM device file:
<<<--- /dev/cdrom
Scan another CD?
<<<--- No
Testing apt sources
...
Choose software to install
เราไม่เลือกอะไรเลย เพราะจะทำเป็นฐานเพื่อไปงานอื่นเฉย ๆ
<<<--- Ok
...
General type of mail configuration:
<<<--- local delivery only; not on a network
Root and postmaster mail recipient:
<<<--- user1
Thank you for choosing Debian!
<<<--- Ok
เสร็จแล้ว
ทีแรกจะทำฐานเป็น sarge และตัวทดลองจริงเป็น etch
แต่การเปลี่ยน base-package จาก sarge เป็น etch มันเยอะเกินไป
แก้สคริปต์ debootstrap ไม่ไหว อัปเกรดเลยดีกว่า
แก้ apt-sources เปลี่ยน sarge เป็น etch ให้หมด
# vi /etc/apt/sources.list
deb http://MY-APT-PROXY:9999/debian etch main contrib non-free deb-src http://MY-APT-PROXY:9999/debian etch main contrib non-free deb http://security.debian.org/debian etch main contrib non-free deb-src http://security.debian.org/debian etch main contrib non-free
อัปเดทและอัปเกรด
# apt-get upgdate; apt-get dist-upgrade
ตอบค่าปริยายทั้งหมด
ติดตั้งเคอร์เนลใหม่
# apt-get install linux-image-686
ตอบ Y ทั้งหมด
รีบูตใช้เคอร์เนลใหม่
...
ถอดเคอร์เนลเก่า
# apt-get remove --purge linux-image-2.6.8-2-386
เสร็จแล้ว
งานที่ทำในครั้งนี้คือ
คราวที่แล้วเรามี
/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 ให้เต็มพื้นที่
ในคราวนี้เราจะมาแก้ไขเรื่องนี้ด้วย
ขั้นตอนขยายพาร์ติชั่นและเตรียมการติดตั้งคือ
หยุดการ 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
# apt-get install 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 เพื่อทดสอบได้เลย
เนื่องจากขั้นตอนเยอะ น่าจะทำเป็นสคริปต์ติดตั้งเอาไว้เลย กันพลาดภายหลัง
เนื้องจากต้องมีการ chroot จึงต้องทำสคริปต์เป็นสองไฟล์
สคริปต์แรก ชื่อ d.debootstrap.stage1
# vi d.debootstrap.stage1
#!/bin/bash # EDIT THESE VARIABLE DISK=/dev/hda6 # etch-exp PARTITION MNT=/mnt/disk # MOUNT POINT # VARIABLE RELEASE=etch PROXY="http://archive.debian.org/debian" ###### COMMANDS NEED TO RUN BEFORE CALLING THIS SCRIPT echo "----- Prerequist command: -----" echo "# mkfs.ext3 $DISK" echo "# mount $DISK $MNT" echo "# debootstrap $RELEASE $MNT $PROXY" echo "-------------------------------" read -p "*** THIS SCRIPT WILL DESTROY $DISK, PRESS Y TO CONTINUE: " CONFIRM if [ $CONFIRM != "Y" ]; then exit 1; fi # BEGIN STAGE 1 cp /etc/hosts $MNT/etc cp /etc/network/interfaces $MNT/etc/network cp /etc/hostname $MNT/etc cp /etc/fstab $MNT/etc cp /etc/apt/sources.list $MNT/etc/apt mount -t proc proc $MNT/proc mount -o bind /dev $MNT/dev mount -t sysfs /sys $MNT/sys cp d.debootstrap.stage2 $MNT echo "edit /etc/host /etc/network/interfaces /etc/hostname /etc/fstab /etc/apt/s ources.list" echo "then run d.debootstrap.stage2" chroot $MNT /bin/bash # umount $MNT/proc umount $MNT/dev umount $MNT/sys ldconfig sync; sync; sync echo "Edit /boot/grub/menu.lst to boot into new system." echo "AT:TOP" echo "--- default 0" echo "+++ default 2" echo "AT:BOTTOM" echo "+++ title Etch-Experiment, kernel 2.6.17-2.686" echo "+++ root (hd0,0)" echo "+++ kernel /vmlinuz-2.6.17-2-686 root=$DISK ro" echo "+++ initrd /initrd.img-2.6.17-2-686" echo "+++ savedefault"
และสคริปต์สอง ตั้งชื่อว่า d.debootstrap.stage2
# vi d.debootstrap.stage2
#/bin/bash apt-get update apt-get install locales console-data dpkg-reconfigure locales apt-get install initrd-tools usbutils pciutils bzip2 ssh grub udev yaird ssh # # FOR X-WINDOWS-SYSTEM # apt-get install xorg gdm gnome # # FOR PRINT SERVER # apt-get install cupsys linuxprinting.org-ppds # # CHANGE THIS LINE FOR THE PROPER KERNEL IMAGE apt-get install linux-image-2.6.17-2-686 # passwd dpkg-reconfigure -a exit
อย่าลืมเปลี่ยนโหมดรัน
# chmod 0755 d.*
เวลาสั่งรันก็ใช้
# ./d.debootstrap.stage1
(แก้ /etc/fstab และไฟล์อื่นที่เกี่ยวข้อง)
# ./d.debootstrap.stage2
(ปรับตั้ง locales และแพคเกจอื่น ๆ)
# exit
(แก้ /boot/grub/menu.lst)
# reboot
ใช้งานเดสก์ทอป sid มานานจนย่ามใจ ลองอัปเกรดเซิร์ฟเวอร์ที่ใช้เป็น testing แบบ dist-upgrade ผลปรากฎว่าเครื่องวินโดวส์ตระกูล 9x ติดต่อแม่ข่ายไม่ได้ ทำให้วุ่นวายหลายวัน
บันทึกข้อควรจำ
/etc/apt/sources.list
คือdeb http://ftp.debian.org/debian stable main contrib non-free deb-src http://ftp.debian.org/debian stable main contrib non-free deb http://security.debian.org/ stable/updates main contrib non-free deb-src http://security.debian.org/ stable/updates main contrib non-free deb http://ftp.debian.org/debian testing main contrib non-free deb-src http://ftp.debian.org/debian testing main contrib non-free deb http://security.debian.org/ testing/updates main contrib non-free deb-src http://security.debian.org/ testing/updates main contrib non-free
โดยมีข้อปฏิบัติคือ
apt-get dist-upgrade
เด็ดขาด$ sudo apt-get install samba/stable
apt-get upgrade
อีกทีนึง