主要命令:
准备工具
tar xf crosstoll-0.43.tar.gz
sudo chmod a+w /opt // 注意文件的可读写性
sudo ln -sf bash sh //注意运行shell 的 bash
export PATH=$PATH:/opt/crosstoll/gcc-4.0.2-glib/arm-linux/bin //编译工具
tar xf crosstoll.tar.bz2 -C/opt //工具地方
u-boot 命令
setenv ipaddr 192.168.1.122
printenv
saveenv
reset
setenv bootmode nfs/nand
parts /mtdparts /mtdparts default # 一般来说nand default 分u-boot kernel ext2 tmp
nand erase kernel //nand 使用前要 erase
nand write 0x30008000 kernel 0x200000 //0x30008000 指内存中的地址前提是已经在它指向的地方有内容了 kernel 分区名 0x200000大小
tftp 0x30008000 ext2fs.img //这个命令主要是利用TFTP 的面向无连接请内容数据向主机//tftp 建立看前面内容注意的是如果不能用的话,用apt-get rm 捍,重安一次就可以用了,还是就是文件的可用权限 777
set bootcmd nand read 0x30008000 kernel 0x20000 ; myboot 0x30008000
set bootargs noinitrd console=ttySAC0,115200
set bootmode nand
set init /linuxrc
set root /dev/mtdblock2
saveenv
cat /proc/cmdline //
myboot 0x30008000 //可以直接启动内核 在内存中
nfs启动
vi /etc/exports ; /home/xxx/rootfs *(rw,sync,no_root_squash)
mkdir ~/rootfs
sudo mount -o loop /tftpboot/ext2fs.img ~/rootfs
sudo /etc/init.d/nfs-kernel-server restart
rpcinfo -p ; exportfs //看看是否成功
yaffs 系统 //cramfs 只读不可写,一般用来放系统,另一个jffs 或yaffs可写用来放数据
flash_eraseall /dev/mtd2 //flash_eraseall 来源于mtd
mount -t yaffs /dev/mtdblock2 /mnt
ls /mnt
mkdir -p /mnt/proc /mnt/sys /mnt/dev /mnt/mnt /mnt/var/run
mknod /mnt/dev/console -m 600 c 5 1 //console
mknod /mnt/dev/null -m 666 c 1 3 //null
mknod -m 600 /mnt/dev/s3c2410_serialo0 c 204 64 //serial
umount mnt
reboot
set bootmode nand
set root /dev/mtdblock2
set bootargs noinitrd rootfstype=yaffs rw console=ttySAC0,115200
saveenv
reset
编译内核
tar xf linux-2.6.26.tar.bz2
cd linux-2.6.26
找到Makefile 改 ARCH ?=arm ; CROSS_COMPILE ?=arm-linux-
patch -p1 < ../patch-2.6.26-xx
cp arch/arm/configs/ak2440_defconfig .config
make menuconfig
出现一个对话窗口,进行自己的设置
make
cd arch/arm/boot/zImage 这个就是我们自己的内核
作用根文件系统
mkdir -p bin dev etc/init.d etc/network etc/network/if-down.d etc/network/if-post-down.d etc/network/if-pre-up.d etc/network/if-up.d lib mnt opt proc sbin srv sys tmp usr/bin usr/lib usr/sbin var/run
下载busybox http://www.busybox.net/
tar xf busybox-1.9.1.tar.bz2; cd busybox-1.9.1/
和内核一样,找到ARCH ?=$(SUBARCH) 改为 ARCH ?=arm ; CROSS_COMPILE ?=arm-linux-
make defconfig
make menuconfig
根据爱好设置 //注意最后这一项:settting -->install options -->busybox installation prefix 内容改为自的目录 shell->choose shell
make
make install
这时自已的文件中就有linuxrc 和其它/bin 文件下的内容了
cd rootfs/dev; sudo mknod -m 600 console c 5 1 ; sudo mknod -m 666 null c 1 3 //console null
//Documentation/devices.txt 中找到
vi ~/rootfs/etc/inittab:
::sysinit:/etc/init.d/rcS
::respawn:/sbin/getty 115200 s3c2410_serial0
::restart:/sbin/init
::shutdown:/bin/nmount-a -r
vi ~/rootfs/etc/init.d/rcS
#!/bin/sh
mount-a
chmod +x rcS
vi ~/rootfs/etc/fstab
#<file name> <mount point> <type> <options> <dump><pass>
proc /proc proc defaults 0 0 //这些文件都是内核接口
sys /sys sysfs default 0 0
cd rootfs/dev; sudo mknod -m 600 s3c2410_serial0 c 204 64
vi ~/rootfs/etc/passwd //如果要密码的话:把主机上/etc/shadow 文件中root账号那一行放到开发板根文件系统中
root::0:0:root:/:/bin/sh
vi ~/rootfs/etc/group
root::0:
----glibc--------
cd /opt/crosstool/gcc-4.0.3.-glibc-2.3.6/arm-linux/arm/lib; cp -dp * /home/xxx/rootfs/lib/
cp crosstoll-0.43/build/arm-linux/gcc-4.0.2.-glic-2.6/build-glic/elf/ldconfig rootfs/sbin/
--------mdev ----udev ------
vi ~/rootfs/etc/init.d/rcS
mount -t tmpfs mdev /dev
mdev -s
mkdir /dev/input
ln -s /dev/mice /dev/input/mice
touch rootfs/etc/mdev.conf
cp /etc/localtime ~/rootfs/etc/
vi ~/rootfs/etc/init.d/rcS
hwclock --hctosys
vi ~/rootfs/etc/init.d/rcS
ifup -a
vi ~/rootfs/etc/network/interfaces
auto lo
iface l0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.125
vi ~/rootfs/etc/network/interfaces
httpd -h /src/www
mkdir -p rootfs/src/www/cgi-bin
最终的启动脚本:rcS
#!/bin/sh
mount -a
mount -t tmpfs mdev /dev
mdev -s
mkdir /dev/input
ln -s /dev/mice /dev/input/mice
hwclock --hctosys
ifup -a
httpd -h /src/www
mkcramfs ~/rootfs rootfs.cramfs //制作自己的cramfs 文件
准备工具
tar xf crosstoll-0.43.tar.gz
sudo chmod a+w /opt // 注意文件的可读写性
sudo ln -sf bash sh //注意运行shell 的 bash
export PATH=$PATH:/opt/crosstoll/gcc-4.0.2-glib/arm-linux/bin //编译工具
tar xf crosstoll.tar.bz2 -C/opt //工具地方
u-boot 命令
setenv ipaddr 192.168.1.122
printenv
saveenv
reset
setenv bootmode nfs/nand
parts /mtdparts /mtdparts default # 一般来说nand default 分u-boot kernel ext2 tmp
nand erase kernel //nand 使用前要 erase
nand write 0x30008000 kernel 0x200000 //0x30008000 指内存中的地址前提是已经在它指向的地方有内容了 kernel 分区名 0x200000大小
tftp 0x30008000 ext2fs.img //这个命令主要是利用TFTP 的面向无连接请内容数据向主机//tftp 建立看前面内容注意的是如果不能用的话,用apt-get rm 捍,重安一次就可以用了,还是就是文件的可用权限 777
set bootcmd nand read 0x30008000 kernel 0x20000 ; myboot 0x30008000
set bootargs noinitrd console=ttySAC0,115200
set bootmode nand
set init /linuxrc
set root /dev/mtdblock2
saveenv
cat /proc/cmdline //
myboot 0x30008000 //可以直接启动内核 在内存中
nfs启动
vi /etc/exports ; /home/xxx/rootfs *(rw,sync,no_root_squash)
mkdir ~/rootfs
sudo mount -o loop /tftpboot/ext2fs.img ~/rootfs
sudo /etc/init.d/nfs-kernel-server restart
rpcinfo -p ; exportfs //看看是否成功
yaffs 系统 //cramfs 只读不可写,一般用来放系统,另一个jffs 或yaffs可写用来放数据
flash_eraseall /dev/mtd2 //flash_eraseall 来源于mtd
mount -t yaffs /dev/mtdblock2 /mnt
ls /mnt
mkdir -p /mnt/proc /mnt/sys /mnt/dev /mnt/mnt /mnt/var/run
mknod /mnt/dev/console -m 600 c 5 1 //console
mknod /mnt/dev/null -m 666 c 1 3 //null
mknod -m 600 /mnt/dev/s3c2410_serialo0 c 204 64 //serial
umount mnt
reboot
set bootmode nand
set root /dev/mtdblock2
set bootargs noinitrd rootfstype=yaffs rw console=ttySAC0,115200
saveenv
reset
编译内核
tar xf linux-2.6.26.tar.bz2
cd linux-2.6.26
找到Makefile 改 ARCH ?=arm ; CROSS_COMPILE ?=arm-linux-
patch -p1 < ../patch-2.6.26-xx
cp arch/arm/configs/ak2440_defconfig .config
make menuconfig
出现一个对话窗口,进行自己的设置
make
cd arch/arm/boot/zImage 这个就是我们自己的内核
作用根文件系统
mkdir -p bin dev etc/init.d etc/network etc/network/if-down.d etc/network/if-post-down.d etc/network/if-pre-up.d etc/network/if-up.d lib mnt opt proc sbin srv sys tmp usr/bin usr/lib usr/sbin var/run
下载busybox http://www.busybox.net/
tar xf busybox-1.9.1.tar.bz2; cd busybox-1.9.1/
和内核一样,找到ARCH ?=$(SUBARCH) 改为 ARCH ?=arm ; CROSS_COMPILE ?=arm-linux-
make defconfig
make menuconfig
根据爱好设置 //注意最后这一项:settting -->install options -->busybox installation prefix 内容改为自的目录 shell->choose shell
make
make install
这时自已的文件中就有linuxrc 和其它/bin 文件下的内容了
cd rootfs/dev; sudo mknod -m 600 console c 5 1 ; sudo mknod -m 666 null c 1 3 //console null
//Documentation/devices.txt 中找到
vi ~/rootfs/etc/inittab:
::sysinit:/etc/init.d/rcS
::respawn:/sbin/getty 115200 s3c2410_serial0
::restart:/sbin/init
::shutdown:/bin/nmount-a -r
vi ~/rootfs/etc/init.d/rcS
#!/bin/sh
mount-a
chmod +x rcS
vi ~/rootfs/etc/fstab
#<file name> <mount point> <type> <options> <dump><pass>
proc /proc proc defaults 0 0 //这些文件都是内核接口
sys /sys sysfs default 0 0
cd rootfs/dev; sudo mknod -m 600 s3c2410_serial0 c 204 64
vi ~/rootfs/etc/passwd //如果要密码的话:把主机上/etc/shadow 文件中root账号那一行放到开发板根文件系统中
root::0:0:root:/:/bin/sh
vi ~/rootfs/etc/group
root::0:
----glibc--------
cd /opt/crosstool/gcc-4.0.3.-glibc-2.3.6/arm-linux/arm/lib; cp -dp * /home/xxx/rootfs/lib/
cp crosstoll-0.43/build/arm-linux/gcc-4.0.2.-glic-2.6/build-glic/elf/ldconfig rootfs/sbin/
--------mdev ----udev ------
vi ~/rootfs/etc/init.d/rcS
mount -t tmpfs mdev /dev
mdev -s
mkdir /dev/input
ln -s /dev/mice /dev/input/mice
touch rootfs/etc/mdev.conf
cp /etc/localtime ~/rootfs/etc/
vi ~/rootfs/etc/init.d/rcS
hwclock --hctosys
vi ~/rootfs/etc/init.d/rcS
ifup -a
vi ~/rootfs/etc/network/interfaces
auto lo
iface l0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.125
vi ~/rootfs/etc/network/interfaces
httpd -h /src/www
mkdir -p rootfs/src/www/cgi-bin
最终的启动脚本:rcS
#!/bin/sh
mount -a
mount -t tmpfs mdev /dev
mdev -s
mkdir /dev/input
ln -s /dev/mice /dev/input/mice
hwclock --hctosys
ifup -a
httpd -h /src/www
mkcramfs ~/rootfs rootfs.cramfs //制作自己的cramfs 文件