【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!