An opensource OpenWrt variant for mainland China users.
The upgrade script for the openmesh sysupgrade procedure used always an 1 byte block size. This made it easier to seek the correct position in the CE image and to make sure the right amount of data was copied. But this also meant that the reading/writing of data required an excessive amount of syscalls and copy operations. A 5.4MB big sysupgrade image on an OM2P-HS v3 needed roughly 120s for the write operation (170s in total) during the sysupgrade. But it is possible to reduce this overhead slightly: * index access to read the file size can be done in single 8 byte chunk (while doing the seek with byte granularity) because each size entry is example 8 bytes long * the fwupgrade.cfg can be read as one block (while seeking to its position using its actual byte offset) because it should be rather small and fit into the RAM easily * the kernel can be read in 1KB blocks (while seking to its positions using its actual byte offset) because the the size of the kernel is always a multiple of the NOR flash block size (64KB and 256KB) This results in a sysupgrade write time of roughly 90s (140s in total). This could be reduced even further when also using larger chunks for the rootfs. But the squashfs rootfs image is at the moment always (256KB or 64KB) * block + 4 bytes long. It would be expected that the time for the sysupgrade write could be reduced to roughly 30s (80s in total) when busybox's dd would support the iflag count_bytes. Reported-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> Signed-off-by: Sven Eckelmann <sven@narfation.org> |
||
|---|---|---|
| config | ||
| include | ||
| package | ||
| scripts | ||
| target | ||
| toolchain | ||
| tools | ||
| .gitattributes | ||
| .gitignore | ||
| BSDmakefile | ||
| Config.in | ||
| CONTRIBUTED.md | ||
| feeds.conf.default | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
| rules.mk | ||
PROJECT OPENWRT
The Source Code of OpenWrt-Lean Modified by CTCGFW
Welcome to our Telegram Group: @ctcgfw_openwrt_discuss.
How to make it
Minimum requirements
Linux with case sensitive
2G DDR2 RAM
2 CPU Cores (AMD64, 1.4Ghz)
25G disk space left
Has access to both ChinaNet & Internet
Install the necessary packages (for Ubuntu user)
sudo apt-get update -y
sudo apt-get full-upgrade -y
sudo apt-get install -y build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib g++-multilib p7zip p7zip-full msmtp libssl-dev texinfo libreadline-dev libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint ccache curl wget vim nano python python3 python-pip python3-pip python-ply python3-ply haveged lrzsz device-tree-compiler scons antlr3 gperf intltool rsync
For mainland China & Ubuntu(16.04+) user, you may run the following command to setup quickly:
sudo bash -c "bash <(curl -s https://build-scripts.project-openwrt.eu.org/init_build_environment.sh)"
Clone the source
git clone -b openwrt-18.06-k5.4 --single-branch https://github.com/project-openwrt/openwrt && cd openwrt
./scripts/feeds update -a && ./scripts/feeds install -a
Configure your firmware
make menuconfig
Make it
make -j1 V=s
Tips
You'd better not use root to make it, or you may be not able to use.
Default login address: 192.168.1.1, username is root and password is password.