In this guide, I will be turning a Raspberry Pi into an OpenWrt router. This is good for travel, and it can connect to VPN servers to give you secure VPN internet.
What will you need?
Here is a list of items you will need:
Step 1: Bake the Pi
First, we need to install OpenWrt on the board. To do that, put the MicroSD card into the MicroSD card reader, then plug the MicroSD card reader into the computer.
Now install the Raspberry Pi Imager.
Once that is done, download the proper firmware from this site. Then, once you have the Raspberry Pi Imager open, select, click “Choose OS”. Then scroll down and click “Use Custom”, then select the location of the firmware that you downloaded from the OpenWrt Wiki.
Click “Select Drive”, then click the drive of the SD card reader.
Step 2: Connect to OpenWrt via SSH
Now, plug the ethernet cable into your Raspberry Pi, then plug the other end into your computer. Open Command Prompt, then run:
BATCH
ssh root@192.168.1.1
On the fingerprint prompt, type “yes”.
Step 3: Setting a password
When we used SSH to log in to the OpenWrt session, notice that it did not prompt us for a password. Super insecure. To set one, run the command. This is also how you change the password on any Linux device:
ASH SHELL
passwd root
Follow the prompts.
Step 4: Backing up all of the config files
Run all these commands, in order:
ASH SHELL
cd /etc/config/
cp firewall firewall.bk
cp wireless wireless.bk
cp dhcp dhcp.bk
cp network network.bk
Step 5: Netwok Configuration Settings
Run these commands. I hooked mine up to the LAN interface, if you want to use Wi-Fi, follow the official documentation. These will configure OpenWrt to connect to your network.
ASH SHELL
uci set network.lan.ipaddr=192.168.2.2
uci set network.lan.gateway=192.168.2.1
uci set network.lan.dns=192.168.2.1
uci commit
service network restart
Step 6: Partitioning
Create a partition to store data. We will install fdisk and use it:
opkg update
opkg install fdisk
fdisk /dev/mmcblk0
To create two partitions (one for /home and one for /srv), use the following fdisk commands.
p
to print the current partition table.n
thene
to create an extended partition.n
thenl
to create the first partition. When asked for the last sector, type +2G to make it 2GB large.n
thenl
to create the second partition. When asked for the last sector, leave empty to fill the remaining space.w
to write the partition table.
And reboot your Raspberry Pi!
Step 7: Creating a filesystem on our partitions
Run these commands:
ASH SHELL
mkfs.ext4 /dev/mmcblk0p5
mkfs.ext4 /dev/mmcblk0p6
Now we can mount the first partition at /home
and the second at /srv
. Both are on a flash SD card, the noatime
flag is important.
ASH SHELL
opkg update
opkg install block-mount
block detect | uci import fstab
uci set fstab.@mount[2].target=/home
uci set fstab.@mount[2].enabled=1
uci set fstab.@mount[2].options=noatime
uci set fstab.@mount[3].target=/srv
uci set fstab.@mount[3].enabled=1
uci set fstab.@mount[3].options=noatime
uci commit
Create the srv
mount point, as the other one already exists.
ASH SHELL
mkdir -p /srv
Mount both partitions.
ASH SHELL
block mount
Step 8: Set the hostname
ASH SHELL
uci set system.@system[0].hostname='thetechmaker-good.hi.testing'
uci commit
Step 9: Remove unused packages
OpenWrt was originally a Linux distribution for routers, so it might come with useless networking software you’ve never heard of. You can remove this with the following commands:
ASH SHELL
opkg remove --force-remove --force-removal-of-dependent-packages ppp ppp-mod-pppoe odhcpd-ipv6only dnsmasq hostapd-common luci luci-ssl-openssl luci-base lua luci-app-firewall luci-lib-ip luci-lib-jsonc luci-lib-nixio luci-proto-ipv6 luci-proto-ppp luci-theme-bootstrap uhttpd uhttpd-mod-ubus