|
自从着手弄这个R1,做了一系列尝试
【Joytag 香蕉R1学习】R1初印象并点亮
【Joytag 香蕉R1学习】让R1路由器工作起来(小白文,慎入)
【Joytag 香蕉R1学习】自己动手组装OpenWrt for R1
【Joytag 香蕉R1学习】让新系统(OpenWrt for R1)上网
【Joytag 香蕉R1学习】OpenWrt for R1有线路由, Telnet,SSH, LuCI
【Joytag 香蕉R1学习】OpenWrt for R1:设置主机名、时区、LED
存在的问题
实际操作过程中,发现几个问题,
一:因为操作过程进行了各种测试,难免各种操作互相影响
这也许不影响使用,但是写教程则会不那么严谨。
(比如说安装LuCI后,我随手就重启了,那么不重启R1的话uHTTPd是否真的需要手动启动呢?)
类似这样的问题很多。
二:因为使用的是trunk镜像,那么当镜像更新,而我们这个OpenWrt for R1却没有更新内核等相关内容
那么安装一些内核相关的软件包时,会出现无法安装的情况。
三:好吧,有时候胡乱操作,彻底崩溃了,又忘记自己都干什么了。从头做起,一步一步,似魔鬼的爪牙。。。
所以,将最最麻烦的操作,【Joytag 香蕉R1学习】自己动手组装OpenWrt for R1 ,做成脚本,这样我们就可以随时获得一个崭新的镜像了,然后就可以从头开搞了。
OpenWrt for R1 组装脚本
为了节省下载文件的时间,我将操作分成两个脚本:
1)getfiles.sh (获取所需的文件)
- wget http://downloads.openwrt.org/snapshots/trunk/sunxi/generic/uboot-sunxi-Lamobo_R1/openwrt-sunxi-Lamobo_R1-u-boot-with-spl.bin
- wget http://downloads.openwrt.org/snapshots/trunk/sunxi/generic/uboot-sunxi-Lamobo_R1/openwrt-sunxi-Lamobo_R1-uEnv.txt
- wget http://downloads.openwrt.org/snapshots/trunk/sunxi/generic/uboot-sunxi-Lamobo_R1/openwrt-sunxi-Lamobo_R1-boot.scr
- wget http://downloads.openwrt.org/snapshots/trunk/sunxi/generic/sun7i-a20-lamobo-r1.dtb
- wget http://downloads.openwrt.org/snapshots/trunk/sunxi/generic/openwrt-sunxi-uImage
- wget http://downloads.openwrt.org/snapshots/trunk/sunxi/generic/openwrt-sunxi-root.ext4
复制代码
2) mksys.sh (将OpenWrt for R1写入SD卡)
- if [ $# != 1 ] ; then
- echo "usage: $0 disk"
- echo " e.g.: $0 /dev/sda"
- exit 1;
- fi
- echo -e "\n######### Prepare: Partition the disk ########"
- disk=$1
- p1=${disk}1
- p2=${disk}2
- umount $p1
- umount $p2
- fdisk $1<<EOF
- p
- d
- 1
- d
- p
- n
- p
- 1
- +15M
- n
- p
- 2
- +240M
- t
- 1
- c
- p
- w
- EOF
- echo -e "\n......1) Copy the SPL + U-boot image to the card"
- dd if=openwrt-sunxi-Lamobo_R1-u-boot-with-spl.bin of=$disk bs=1024 seek=8
- echo -e "\n......2) Create a boot (FAT32) partition"
- mkfs.vfat ${disk}1
- echo -e "\n......3) Mount the boot partition"
- mount -t vfat ${disk}1 /mnt
- echo -e "\n......4) Copy the U-Boot environment file uEnv.txt to the boot partition"
- cp openwrt-sunxi-Lamobo_R1-uEnv.txt /mnt/uEnv.txt
- echo -e "\n......5) Copy the device tree data to the boot partition"
- cp sun7i-a20-lamobo-r1.dtb /mnt/dtb
- echo -e "\n......6) Copy the kernel image to the boot partition."
- cp openwrt-sunxi-uImage /mnt/uImage
- echo -e "\n......7) Copen the boot.scr to the boot partition."
- cp openwrt-sunxi-Lamobo_R1-boot.scr /mnt/boot.scr
- echo -e "\n......8) Resize the root filesystem image to match the partition size."
- resize2fs openwrt-sunxi-root.ext4 240M
- echo -e "\n......9) Create the root filesystem."
- dd if=openwrt-sunxi-root.ext4 of=${disk}2 bs=128k
- echo -e "\n......10) Wrap up (flush buffers and unmount boot partition)."
- sync
- umount /mnt
- echo -e "\n......Finished!"
复制代码 其中:
mkfs.vfat ${disk}1
会对/dev/sda1进行格式化,清除原有内容。
还是有必要的。
使用方法:
将两个文件保存到工作目录,假定为/root/R1
cd /root/R1
chmod 777 getfiles.sh mksys.sh
./getfiles.sh
./mksys.sh /dev/sda
(*:因为将TF卡插入读卡器连接至香蕉派,所以TF卡被识别为/dev/sda,请务必知道自己要操作的设备,以免对原系统造成破坏)
崭新的系统诞生啦,然后,搞吧。
脚本中需要完善的地方
getfiles.sh
1:可以将两个脚本合二为一,通过命令行参数判断是否需要重新下载文件。
2:获取文件之前,应该先删除本地已有的相关文件
3:对获取情况进行判断。
mksys.sh
1:发现存在分区的TF卡插入读卡器后会自动mount,所以先调用了umount.
完善点的脚本应该先判断mount的情况,再根据情况执行umount,这样就没有错误信息了。
2:正常情况应该先判断disk的分区情况,然后删除所有分区。并重新分区。
(实在是懒得弄了。没有分区去删除,虽然会有错误提示,但是没啥影响)
3:用默认值的情况,fdisk输出不太直观。
4:应该对执行的操作进行一些判断。
5:其它......
好吧,虽然问题多多,但是可用,我们的目的不是为了写一个多么完善的脚本,只是为了方便进一步折腾而已。
基本达成目标。
(之所以这么说,是为了掩盖我小白的本质)
附:./mksys.sh /dev/sda的输出
- # ./mksys.sh /dev/sda
- ######### Prepare: Partition the disk ########
- umount: /dev/sda1: not mounted
- umount: /dev/sda2: not mounted
- Command (m for help):
- Disk /dev/sda: 15.9 GB, 15931539456 bytes
- 64 heads, 32 sectors/track, 15193 cylinders, total 31116288 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0x5452574f
- Device Boot Start End Blocks Id System
- /dev/sda1 2048 32767 15360 c W95 FAT32 (LBA)
- /dev/sda2 32768 524287 245760 83 Linux
- Command (m for help): Partition number (1-4):
- Command (m for help): Selected partition 2
- Command (m for help):
- Disk /dev/sda: 15.9 GB, 15931539456 bytes
- 64 heads, 32 sectors/track, 15193 cylinders, total 31116288 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0x5452574f
- Device Boot Start End Blocks Id System
- Command (m for help): Partition type:
- p primary (0 primary, 0 extended, 4 free)
- e extended
- Select (default p): Partition number (1-4, default 1): First sector (2048-31116287, default 2048): Using default value 2048
- Last sector, +sectors or +size{K,M,G} (2048-31116287, default 31116287):
- Command (m for help): Partition type:
- p primary (1 primary, 0 extended, 3 free)
- e extended
- Select (default p): Partition number (1-4, default 2): First sector (32768-31116287, default 32768): Using default value 32768
- Last sector, +sectors or +size{K,M,G} (32768-31116287, default 31116287):
- Command (m for help): Partition number (1-4): Hex code (type L to list codes): Changed system type of partition 1 to c (W95 FAT32 (LBA))
- Command (m for help):
- Disk /dev/sda: 15.9 GB, 15931539456 bytes
- 64 heads, 32 sectors/track, 15193 cylinders, total 31116288 sectors
- Units = sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0x5452574f
- Device Boot Start End Blocks Id System
- /dev/sda1 2048 32767 15360 c W95 FAT32 (LBA)
- /dev/sda2 32768 524287 245760 83 Linux
- Command (m for help): The partition table has been altered!
- Calling ioctl() to re-read partition table.
- WARNING: If you have created or modified any DOS 6.x
- partitions, please see the fdisk manual page for additional
- information.
- Syncing disks.
- ......1) Copy the SPL + U-boot image to the card
- 343+1 records in
- 343+1 records out
- 352244 bytes (352 kB) copied, 0.090026 s, 3.9 MB/s
- ......2) Create a boot (FAT32) partition
- mkfs.vfat 3.0.13 (30 Jun 2012)
- ......3) Mount the boot partition
- ......4) Copy the U-Boot environment file uEnv.txt to the boot partition
- ......5) Copy the device tree data to the boot partition
- ......6) Copy the kernel image to the boot partition.
- ......7) Copen the boot.scr to the boot partition.
- ......8) Resize the root filesystem image to match the partition size.
- resize2fs 1.42.5 (29-Jul-2012)
- The filesystem is already 61440 blocks long. Nothing to do!
- ......9) Create the root filesystem.
- 1920+0 records in
- 1920+0 records out
- 251658240 bytes (252 MB) copied, 31.8408 s, 7.9 MB/s
- ......10) Wrap up (flush buffers and unmount boot partition).
- ......Finished!
复制代码
|
|