add CONFIG_TARGET_ROOTFS_PARTSIZE for increasing writable partition

This commit is contained in:
Mads Meisner-Jensen
2021-08-08 12:13:23 +02:00
parent a14d1804f0
commit dc6c837e6c
3 changed files with 57 additions and 7 deletions

View File

@@ -80,13 +80,6 @@ with regard to installing or upgrading your OpenWRT router.
OpenWRT upgrades often don't normalize upgraded config files in the same OpenWRT upgrades often don't normalize upgraded config files in the same
way from version to version way from version to version
## Raspberry Pi 4 Network Performance Tuning
* [(15) BIFRÖST Part 2 - RPi 4B Hybrid Bridging Router - Tuning Linux Network for Gigabit Line Speed | LinkedIn](https://www.linkedin.com/pulse/bifr%C3%B6st-rpi-4b-hybrid-routing-bridge-tuning-linux-network-corner/?trk=read_related_article-card_title)
very detailed article about tuning RPi4 network performance using IRQ
CPU pinning and other tricks. Kind of a hardwired ues of `irqbalance`
## Post Install Actions ## Post Install Actions
* [[OpenWrt Wiki] UCI defaults](https://openwrt.org/docs/guide-developer/uci-defaults) * [[OpenWrt Wiki] UCI defaults](https://openwrt.org/docs/guide-developer/uci-defaults)
@@ -125,6 +118,39 @@ with regard to installing or upgrading your OpenWRT router.
Disable DHCP server on LAN: `uci set dhcp.lan.ignore=1 && uci commit && /etc/init.d/dnsmasq restart` Disable DHCP server on LAN: `uci set dhcp.lan.ignore=1 && uci commit && /etc/init.d/dnsmasq restart`
# Raspberry Pi 4
OpenWRT uses a single (main) partition for both the `/rom` and `rootfs_data`
and uses a special `mtdsplit` driver to make this sub-partitioning.
The `/rom` contains a squashfs filesystem with kernel and rootfs and
`rootfs_data` is where the writable `overlayfs` is mounted:
[[OpenWrt Wiki] The OpenWrt Flash Layout](https://openwrt.org/docs/techref/flash.layout)
For some reason, on a Raspberry Pi 4, this partition is by default only 104MB.
This leaves only around 70MB writable space. Run-time re-partitioning is quite
complicated (contact me if you know how to do it) so that leaves us with
the only option of building the image with a pre-determined size.
The `oi-build` script takes the value of `CONFIG_TARGET_ROOTFS_PARTSIZE` as
the size of the main partition. Make sure that you don't make it larger than
the SD-card you are using.
NOTE: Contrary to what the OpenWRT Wiki says,
`CONFIG_TARGET_ROOTFS_PARTSIZE` is ignored by the "make" command-line,
and you have to set it in the `.config` file instead.
See additional info here from the forum:
* [Building a x86-based image and need more disk space in the image - For Developers - OpenWrt Forum](https://forum.openwrt.org/t/building-a-x86-based-image-and-need-more-disk-space-in-the-image/2585/5)
* [X86 sysupgrade not working - For Developers - OpenWrt Forum](https://forum.openwrt.org/t/x86-sysupgrade-not-working/37869)
https://forum.openwrt.org/t/x86-sysupgrade-not-working/37869
## Raspberry Pi 4 Network Performance Tuning
* [(15) BIFRÖST Part 2 - RPi 4B Hybrid Bridging Router - Tuning Linux Network for Gigabit Line Speed | LinkedIn](https://www.linkedin.com/pulse/bifr%C3%B6st-rpi-4b-hybrid-routing-bridge-tuning-linux-network-corner/?trk=read_related_article-card_title)
very detailed article about tuning RPi4 network performance using IRQ
CPU pinning and other tricks. Kind of a hardwired ues of `irqbalance`
# Similar projects # Similar projects
* [Github ansemjo/openwrtbuilder](https://gist.github.com/ansemjo/cb41677a76f1c063527744438b03b932) * [Github ansemjo/openwrtbuilder](https://gist.github.com/ansemjo/cb41677a76f1c063527744438b03b932)

View File

@@ -10,6 +10,13 @@ PROFILE="rpi-4"
RELEASE=${RELEASE_21_02} RELEASE=${RELEASE_21_02}
# Define this if you want a larger file writable system
# The default for RPi4 is 104 (MB)
# Here we set it to 4096 (MB) which is almost 4GB.
# You must lower the value if your SD-card is smaller than that.
CONFIG_TARGET_ROOTFS_PARTSIZE=4096
# See https://openwrt.org/packages/start # See https://openwrt.org/packages/start
# #
# - irqbalance package distributes hardware interrupts across # - irqbalance package distributes hardware interrupts across

View File

@@ -138,6 +138,14 @@ image_build() {
locate_files_dir locate_files_dir
if [ -n "${CONFIG_TARGET_ROOTFS_PARTSIZE}" ]; then
local configfile="${imagebuilder_dir}/.config"
echo_note "Configuring CONFIG_TARGET_ROOTFS_PARTSIZE=${CONFIG_TARGET_ROOTFS_PARTSIZE}"
echo_note "by appending to ${configfile}"
echo "CONFIG_TARGET_ROOTFS_PARTSIZE=${CONFIG_TARGET_ROOTFS_PARTSIZE}" \
>> .config
fi
PACKAGES=$(echo "${PACKAGES}" | tr '\n' ' ') PACKAGES=$(echo "${PACKAGES}" | tr '\n' ' ')
echo_run "make image PROFILE='${PROFILE}' FILES='${FILES}' PACKAGES='${PACKAGES}' DISABLED_SERVICES='${DISABLED_SERVICES}'" || echo_run "make image PROFILE='${PROFILE}' FILES='${FILES}' PACKAGES='${PACKAGES}' DISABLED_SERVICES='${DISABLED_SERVICES}'" ||
die "image build FAILED" die "image build FAILED"
@@ -299,4 +307,13 @@ fi
if [ -d bin/targets/${TARGET} ]; then if [ -d bin/targets/${TARGET} ]; then
echo_run "ls -lh bin/targets/${TARGET}/" echo_run "ls -lh bin/targets/${TARGET}/"
echo_note "Final images are in ${imagebuilder_dir}/bin/targets/${TARGET}" echo_note "Final images are in ${imagebuilder_dir}/bin/targets/${TARGET}"
cat << EOF
Run following commands to perform a system upgrade:
scp FILE.img.gz HOST:/tmp
ssh HOST '/sbin/sysupgrade -v /tmp/*.img.gz'
For example:
scp openwrt-imagebuilder-21.02.0-rc3-bcm27xx-bcm2711.Linux-x86_64/bin/targets/bcm27xx/bcm2711/openwrt-21.02.0-rc3-bcm27xx-bcm2711-rpi-4-ext4-sysupgrade.img.gz 192.168.1.1:/tmp
ssh 192.168.1.1 '/sbin/sysupgrade -v /tmp/*.img.gz'
EOF
fi fi