用 debootstrap 安裝系統
用 debootstrap 安裝系統
裝好的系統要可以用 Qemu 開啟,更是準備用來當作 AoE 分享的硬碟作為網路開機使用。
主要是整個過程簡單說明
用 dd 產生約 512M 大小硬碟
dd if=/dev/zero of=etch.img count=\$((1040*16*63))
關於 1040*16*63 的意思
C = cylinders = 1040 //看硬碟大小而定
H = heads =16 //通常是16 或是 255
S = sectors per track =63 // 通常是 63
這通常是應碟的規格,不同場賠硬碟或記憶卡會有不同的 CHS 會影響你的分割區
因此我通常是這樣產生虛擬硬碟的
dd if=/dev/zero of=your_disk count=\$((\$C*\$H*\$S))
\$C * \$H * \$S 是算出硬碟的 sector 總數,而一個 sector 通常是 512 byte,
因此硬碟大小是 512M 的話 就是 \$C * 16 * 63 * 512 /1024 /1024 = 512 , \$C = 1040.25...
接著用 fdisk 切割硬碟
\$ fdisk etch.img
x // Extra functionality
c 1040 // 1040 cylinders
h 16 // 16 heads
s 63 // 63 sectors per track
r // Return to main menu
n // Create a new partition
p // Primary
1 // Partition #1
1 // First cylinder
1040 // Last cylinder
a // Set bootable flag
1 // Partition number
w // Write partition to disk
完成硬碟切割!
把檔案當作 loop device
把etch.img 當作/dev/loop0 使用,我的硬碟只有一個 Partition
\$ fdisk -lu etch.img //可以知道第一個 partition 從哪裡開始
所以需要 offset 512*63 是因為要跳過前面的切割區資料
\$ sudo losetup --offset \$((63*512)) /dev/loop0 etch.img
格式化磁碟 /dev/loop0
\$ sudo mkfs.reiserfs /dev/loop0
掛載起來
\$ sudo mount /dev/loop0 /mnt
用 debootstrap 安裝debian etch
\$ sudo debootstrap etch /mnt/ http://opensource.nchc.org.tw/debian/
修改一些基本的檔案
\$ cd /mnt
\$ vi etc/fstab
proc /proc proc defaults 0 0
/dev/hda1 / reiserfs defaults 0 0
借用目前系統中的 proc 與 dev
\$ sudo mount -t proc proc /mnt/proc/
\$ sudo mount -o bind /dev /mnt/dev
chroot 到 /mnt
\$ sudo chroot /mnt/
修改網路相關設定
(chroot)\$ vi /etc/networks
(chroot)\$ vi /etc/network/interfaces
(chroot)\$ vi /etc/resolv.conf
(chroot)\$ vi /etc/hostname
修改其他相關設定
(chroot)\$ /etc/default/rcS //設定成no UTC
(chroot)\$ tzconfig //設定時區
(chroot)\$ vi /etc/apt/sources.list //修改 apt 資源
(chroot)\$ apt-get update; apt-get install locale console-data
修改 kernel 安裝選項
(chroot)\$ vi /etc/kernel-img.conf
# Kernel image management overrides
# See kernel-img.conf(5) for details
do_symlinks = yes
relative_links = yes
do_bootloader = yes
do_bootfloppy = no
do_initrd = yes
link_in_boot = no
安裝 kernel 與 kernel source
(chroot)\$ apt-cache search linux-source
(chroot)\$ apt-cache search linux-image
(chroot)\$ apt-get install kernel-image-2.6-386
安裝 boot loader - GRUB
(chroot)\$ apt-get install grub
(chroot)\$ mkdir /boot/grub
借用系統的 GRUB 影像檔( 需要暫時離開chroot )
\$ cp /boot/grub/*stage* /mnt/boot/grub/
更新GRUB (需要回到 chroot)
(chroot)\$ update-grub
離開 chroot
\$ exit
卸載 /mnt
sudo umount /mnt
不使用 loop device
sudo losetup -d /dev/loop0
開始設定 GRUB 前需確認沒有被 loop 或是 mount
\$ grub --device-map=/dev/null
(grub) device (hd0) etch.img
(grub) geometry (hd0) 1040 16 63
(grub) root(hd0,0)
(grub) setup (hd0)
(grub) quit
用 QEMU 測試
qemu etch.img
convert from Thomas blog post id 157 old convert log: ./023158/tag%3E2007%2009%20linux)
@2007 @09 @linux
Comments