Installing Linux on a CompactFlash Card Mini-HOWTO

来源:百度文库 编辑:神马文学网 时间:2024/04/25 07:02:47
Installing Linux on a CompactFlash Card Mini-HOWTO
代碼:
Initializing the CF Card
Let‘s start with erasing any existing partitions and creating a new one:
fdisk /dev/sda (or whatever the device is for your CF card)
In case you are not familiar with fdisk:
p (prints all existing partitions) d (deletes a partition)
n (creates a new partition) w writes and exists
q quits without saving
Delete all existing partitions and create a default primary Linux partition (type 83) using all available space. Save and exit (w)
Format the new partition with:
mkfs.ext2 /dev/sda1 (replace sda1 with your new partition)
Create a mount point and mount your CF card:
mkdir /mnt/flash
mount -t ext2 /dev/sda1 /mnt/flash (sda1 would be the first partition on the device sda. Make sure you replace sda with the equivalent to your CF card)
And now, let‘s create a basic directory structure:
mkdir /mnt/flash/boot
mkdir /mnt/flash/bin
mkdir /mnt/flash/dev
mkdir /mnt/flash/dev/cciss
mkdir /mnt/flash/etc
mkdir /mnt/flash/lib
mkdir /mnt/flash/opt
mkdir /mnt/flash/proc
mkdir /mnt/flash/sbin
mkdir /mnt/flash/tmp
mkdir /mnt/flash/var
mkdir /mnt/flash/usr
mkdir /mnt/flash/usr/bin
mkdir /mnt/flash/usr/lib
mkdir /mnt/flash/etc/init.d
cd /mnt/flash/dev
/dev/MAKEDEV std
/dev/MAKEDEV ttyS0
/dev/MAKEDEV hda
/dev/MAKEDEV hde
/dev/MAKEDEV console
/dev/MAKEDEV audio
mknod psaux c 10 1
mknod console c 5 1
mknod /mnt/flash/dev/hda b 3 0
mknod /mnt/flash/dev/hdb b 3 64
mknod /mnt/flash/dev/hdc b 22 0
mknod /mnt/flash/dev/hdd b 22 64
Installing Busy Box
We need a basic set of unix utilities. Given the memory limitation, we will install BusyBox. Busybox provides a set of basic utilities in a single executable.
Download the latest version (0.60.5 when I wrote this guide)
Unpack and compile:
tar -zxf busybox-0.60.5.tar.gz
cd busybox-0.60.5
make
make install
Install Busybox on your CompactFlash:
cp -r _install/* /mnt/flash
Copying GRUB (Boot Loader)
Let‘s now copy a few files from the PC to the CF we will need them later on:
cp /sbin/grub /mnt/flash/sbin
cp /sbin/fdisk /mnt/flash/sbin
cp /sbin/mkfs.ext2 /mnt/flash/sbin
cp /lib/libcrypt.so.1 /lib/libc.so.6 /lib/ld-linux.so.2 /mnt/flash/lib/
cp /lib/libext2fs.so.2 /mnt/flash/lib/
cp /lib/libe2p.so.2 /mnt/flash/lib/
cp /lib/libcom_err.so.2 /mnt/flash/lib/
cp /lib/libuuid.so.1 /mnt/flash/lib/
RH9 comes with two boot loaders: LILO and GRUB. I have never been able to get LILO to work on a CF Card. It always stops at the LI prompt (usually writes LILO) and even though I tried all tricks I found on the web for this known problem, none of them worked. That‘s why we will use GRUB instead.
Copy all boot files from your PC to the CF Card:
cp -vax /boot/* /mnt/flash/boot
Getting a Kernel
By copying /boot to your CF Card, you have already copied your existing kernel. If that is good enough for you, then you can skip this section.
I am not going to spend time on the details here, just grab the latest version fromwww.kernel.org, untar and do:
make menuconfig (It is important here to select the right processor according to the machine you will be using. See the Processor Type and Features section)
make menuconfig
make dep
make bzImage
Once it is done, copy the fresh kernel to your CF Card:
cp arch/i386/boot/bzImage /mnt/flash/boot/vmlinuz
cp System.map /mnt/flash/boot/
Making the CompactFlash card bootable
Now we have to write the MBR on the Compact Flash. Execute GRUB:
grub
You will get to the grub> command line. If you do not have curses installed on your PC, you will get: Error opening terminal Linux. If that is the case, try grub --no-curses
Grub names the drives in a different way. The first drive would be hd0, the second drive would be hd1, and so on. The partition number is specified with a second digit after a comma. For example hd0,0 is the first partition on the first hard drive. Set your root partition with:
root (hd1,0) you can hit tab twice after hd and you will get a list of option (bash-style) just to make sure you are talking about the right partition. It might not be (hd1,0)
Install the MBR with:
install /boot/grub/stage1 (hd1) /boot/grub/stage2 (again, replace hd1 with your CF drive)
quit
More details on GRUB, such as creating a boot menu are beyond the scope of this document. Check this article for more information about GRUB on CompactFlash
Unmount your CF card with umount /mnt/flash. Your CF card is now ready and will get you to your # prompt. However, you will have to specify your kernel, root partition and init scripts at the GRUB> prompt:
GRUB> root (hd0,0) (or whatever it is)
GRUB> kernel /boot/vmlinuz root=/dev/hda1 rw init=/bin/sh
GRUB> boot
Replace hda1 with the device corresponding to your CF card. In my case is hda1 as I am using an ACS IDE to CompactFlash adapter in my BluePad Tablet PC