I'm quite new to OpenWRT and want to try it out with a TL-WR841N v8.x. I'm asking my question here because the OpenWRT website redirects to this board.
Because I don't want to use root for administrating OpenWRT I had to insatll the sudo package. Even installing only this one additional package it seems that there is no more space left:
My first idea was to uninstall LuCI because I don't want to a web interface (which I even could not secure with SSL at the moment because there would be no space to install luci-ssl) but as I understoof FAQ this is not possible:
By removing packages you installed after flashing OpenWrt onto your Router. You cannot remove packages on the SquashFS partition, which is included in the image you flashed.
So now I have 3 possibilites:
Use root instead of a custom root-account.
Buy new hardware.
Compile OpenWRT on my own without LuCI.
Are there any other possibilities to get more space I maybe forgot to try?
If I would try to comile OpenWRT on my own: Why there are 2 compiling tutorials:
Will compiling OpenWRT on my own without LuCI give me enough additional space for sudo, screen and the additional packages I would like to have maybe later?
Thank you for OpenWRT/LEDE (and merging the communities again)!
Edit: Removed links for my used OpenWRT image and FAQ because of board restrictions for new users.
I understand. Thank you for your honest advice. Any recommendations for router hardware which has good chances to be well supported by OpenWRT/LEDE for the next years?
Well I followed https://wiki.openwrt.org/doc/howto/secure.access which offers 3 methods to give a non-privileged user root privileges. All methods need the sudo package for visudo command. Is there any other way?
But your best chances are with popular devices that are powerful today ( = still worthwhile in 3-5 years)... Meaning at least 64-128 MB flash and 256+ MB RAM.
Right now probably ipq806x devices like R7800 and mvebu devices like WRT3200ACM (and the older WRT1900AC routers)) plus some Mediatek-based devices offer the widest user-base support and developer interest.
Personally, I'd not suggest anything with less than 16 M of flash and 128 M of RAM ("16/128"). hynman's recommendation of 64/256 is a good one.
If you have or are considering more than a couple hundred Mbps and want to do traffic shaping, I'd recommend an ARM processor. If you're throwing in anything CPU intensive (such as VPN), make that at least a dual-core device.
Long-term approaches also include an x86 as a router and either wireless "routers" acting (only) as APs, or dedicated APs.
There are a couple (long) threads that may be worth wading through for some ideas:
You can still use your device fully fine.
Just remember one thing: Uninstalling/removing things dont save space on a read-only squashfs file system. https://wiki.openwrt.org/doc/techref/filesystems
The solution to that is to use the build system for having everything inside the squashfs and when possible nearly nothing inside of JFFS2. Dont use opkg on the device itself.
Build openwrt on ubuntu/debian:
apt-get install git-core build-essential libssl-dev libncurses5-dev unzip gawk zlib1g-dev subversion mercurial
git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
Now select your device, you can also set SquashFS Block-Size from 256 to 1024. That "could" slow down the disk(ROM)-access time but would make more space available (You can compare it to giving lzma a bigger amount of data to work with.)
Then you can mostly fit luci+openwrt and so on into the image and you have all you need.
No need of new device.
IF you want to get some device for some reson, stay away from those non-ath9k based devics. They are terrible for freedom and require closed-source firmware files to run the wifi. One of the best free router devices is the WNDR4700. Its really fast, have great wifi and huge ram/rom.
Before I try to compile my own image: In my case even packages like lucie-ssl are missing in the pre-compiled image 15.05.1 and I thought the reason for this is the general very limited storage situation of my router. Is there really enough space in the squashfs for an image with more than the current packages? How can I determine if the compiled result will fit?
I tested again to get what I need with the current provided version. Can someone explain me why there is less storage space after I uninstalled a package again which I've installed on my own before:
While I think that being able to compile your own firmware is a great thing, take a moment and think that you're worrying about 8k of space. There is a reason that there is the strong warning that 4 MB of flash and 32 MB of RAM is insufficient. While there are some that cling onto beloved devices for personal or ideological reasons, you may find the pain of working with too small of a device, or one that doesn't support current security and wireless standards not worth the small to modest cost of entry-level devices with current technology.
15.0.5.1 is over two years old and should be considered insecure, at a minimum you should be working with 17.01.4 or its forthcoming release. 18.06, when available, is preferred.
The git branches are
lede-17.01
openwrt-18.06
No, you will never get luci-ssl onto a 4 MB device. There really isn't an easy way to find out what will fit except by trying it. If you know something like LuCI is a couple hundred kB before SSL and the SSL packages are a couple hundred kB, you can guess that if you're already up against the limit, it is not going to fit.
You can get a good idea by considering that the squashfs image is very, very roughly half the size of the uncompressed packages. Their sizes are on the OpenWRT site package listings. You'll need to include all their dependencies, and all their dependencies,... Easier once you have a build system up an running to "try it and see". binwalk can tell you the size of the squashfs image in your built firmware. There is a minimum size to the writable partition as well, or the file system won't function.
A 4 or 8 kB change in the jffs overlay system isn't a lot to be worried about. Might be a directory structure that has changed. Things like that happen all the time but few worry about a 4k sector on even a 100 MB drive.
Buy a new SPI nor flash, do a backup of your old one, flash the new one, desolder the old one and solder the new one...
I had bought long time ago some W25Q128FV for all my aging WR841 devices.
Additionally i upgraded every device to 64MB RAM, but currently i only use one of my four WR841´s as an outdoor ap.
First of all thank you for your detailed explanation. I friend will send me a TL-WR842N (which has 8MB) to start with and get a feeling for OpenWRT before I invest in better hardware.
Anyway two more questions:
A 4 or 8 kB change in the jffs overlay system isn’t a lot to be worried about. Might be a directory structure that has changed. Things like that happen all the time but few worry about a 4k sector on even a 100 MB drive.
The point I didn't get: Why there is less space on the device after I uninstalled a package? This doesn't make any sense for me.
Buy a new SPI nor flash, do a backup of your old one, flash the new one, desolder the old one and solder the new one…
I would do this just for fun but is it possible with a standard soldering iron? Would I need any special tools for this because you say "flash the new one" before "solder the new one"?
The rootfs is using squashfs, a readonly, but highly compressing, filesystem, all changes are done on a read/ write overlay (backed by jffs2); changes include the whiteouts needed for file deletions.
As programmer i use something like this. You could also use a linux system with spi interface, such as raspberry pi...
And as software i use flashrom.
You could flash your padded backup to the new one and after first boot write only the art partition from within openwrt in art partition.
To make art partition temporary writable you could use this commands: