OpenWrt X86 分区扩容

minipc

硬件情况:K500G6 X86工控路由电脑、4G内存、16G金士顿SSD

固件版本:git clone https://github.com/openwrt/openwrt.git 自己编译(Linux OpenWrt 4.14.63 )

安装方式:Ubuntu编译固件完成后执行dd if=openwrt-x86-generic-combined-ext4.img of=/dev/sdb

查看磁盘分配情况

ssh打开openwrt控制台,查看系统只用了两百多M,太浪费SSD了,如果长时间安装软件后面空间肯定会不够用。

1
2
3
4
5
6
7
root@OpenWrt:/# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 252.0M 13.8M 233.0M 6% /
tmpfs 1.9G 1.1M 1.9G 0% /tmp
/dev/sda1 15.7M 4.5M 10.9M 29% /boot
/dev/sda1 15.7M 4.5M 10.9M 29% /boot
tmpfs 512.0K 0 512.0K 0% /dev

使用fdisk -l发现找不到命令,这里需要手动安装下

1
opkg install fdisk

安装后执行fdisk -l查看空间分配情况

1
2
3
4
5
6
7
8
9
10
11
root@OpenWrt:/# fdisk -l
Disk /dev/sda: 14.9 GiB, 16013942784 bytes, 31277232 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
Disklabel type: dos
Disk identifier: 0x6ad5f5a9

Device Boot Start End Sectors Size Id Type
/dev/sda1 * 512 33279 32768 16M 83 Linux
/dev/sda2 33792 558079 524288 256M 83 Linux

对空闲空间进行分区

openwrt的fdisk貌似没有分区功能,没有fdisk -n命令,查找资料后发现可以使用cfdisk工具进行分区,cfdisk是一个基于curses的程序,用于分区任何硬盘驱动器

1
opkg install cfdisk

001

对空闲空间进行分区,默认分区类型为Linux

选择Free space——>primary——>Write——>yes

fdisk -l查看已经分好区了

1
2
3
4
Device     Boot  Start      End  Sectors  Size Id Type
/dev/sda1 * 512 33279 32768 16M 83 Linux
/dev/sda2 33792 558079 524288 256M 83 Linux
/dev/sda3 559104 31277231 30718128 14.7G 83 Linux

先对分区进行格式化,然后进行挂载

1
2
3
4
5
6
7
8
9
10
11
mkfs.ext4 /dev/sda3
mkdir opt
mount -o rw /dev/sda3 opt/
root@OpenWrt:/# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 252.0M 14.2M 232.7M 6% /
tmpfs 1.9G 1.1M 1.9G 0% /tmp
/dev/sda1 15.7M 4.5M 10.9M 29% /boot
/dev/sda1 15.7M 4.5M 10.9M 29% /boot
tmpfs 512.0K 0 512.0K 0% /dev
/dev/sda3 14.4G 40.0M 13.6G 0% /opt

调整安装目录

安装目录在配置文件/etc/opkg.conf中定义。配置文件中目的地址格式是以dest开头,紧跟着目的地址的名称,最后是目录路径,必须从跟目录开始。

1
2
3
dest root /
dest ram /tmp
dest soft /opt

安装目录定义后,目的地址名称就可以在安装命令中引用了。例如“-d ram”表示将软件安装到临时目录/tmp下。

安装命令类似如下格式:

opkg install -d <目的地址>

例如:

先卸载之前安装的fdisk,opkg remove fdisk

重新安装到opt目录,opkg install fdisk -d soft

安装完成后,如果执行fdisk,并不会找到该命令,还需要设置环境变量PATH,编译配置文件/etc/profile

1
2
export PATH="/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/opt/sbin:/opt/usr/sbin:/opt/usr/bin"
export LD_LIBRARY_PATH=/opt/lib:/opt/usr/lib

修改后使用正常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
root@OpenWrt:/# ls /opt/usr/sbin/
fdisk hostapd
root@OpenWrt:/# fdisk -l
Disk /dev/sda: 14.94 GiB, 16013942784 bytes, 31277232 sectors
Disk model: KINGSTON RBU-SMS
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7fd3e4c3

Device Boot Start End Sectors Size Id Type
/dev/sda1 * 512 33279 32768 16M 83 Linux
/dev/sda2 33792 295935 262144 128M 83 Linux
/dev/sda3 296960 31277231 30980272 14.8G 83 Linux

有些软件安装包会在Init.d生成启动脚本,比如openvpn,这时就需要创建一个启动软连接,例如:

1
ln -s /opt/etc/init.d/openvpn /etc/init.d/openvpn

​ 许多软件包在自定义的位置不能启动或者即使启动也不能成功执行,因为它在默认位置读取配置文件,因此需要在参数中制定配置文件位置,否则会因不能找到必须的配置文件而出错;还有些软件包在更改了目录后需要额外的软连接或者修改动态链接库文件名后缀才能使用,并且Luci配置页面只会显示安装在根目录的软件包,希望后面可以优化,将指定的安装目录加入空闲空间。

------ 本文结束------