编译openwrt怎么调整分区大小?
我目前用的R6220然后分区信息如下
#####################################################root@OpenWrt:~# mount
/dev/root on /rom type squashfs (ro,relatime,errors=continue)
proc on /proc type proc (rw,nosuid,nodev,noexec,noatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,noatime)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)
/dev/ubi0_1 on /overlay type ubifs (rw,noatime,assert=read-only,ubi=0,vol=1)
overlayfs:/overlay on / type overlay (rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work)
tmpfs on /dev type tmpfs (rw,nosuid,noexec,noatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,noatime,mode=600,ptmxmode=000)
debugfs on /sys/kernel/debug type debugfs (rw,noatime)
bpffs on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,noatime,mode=700)
#####################################################root@OpenWrt:~# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 3.8M 3.8M 0 100% /rom
tmpfs 58.9M 216.0K 58.7M 0% /tmp
/dev/ubi0_1 17.1M 3.5M 12.8M21% /overlay
overlayfs:/overlay 17.1M 3.5M 12.8M21% /
tmpfs 512.0K 0 512.0K 0% /dev
#####################################################root@OpenWrt:~# cat /proc/mtd
dev: size erasesizename
mtd0: 00100000 00020000 "u-boot"
mtd1: 00100000 00020000 "SC PID"
mtd2: 00400000 00020000 "kernel"
mtd3: 01c00000 00020000 "ubi"
mtd4: 00100000 00020000 "factory"
mtd5: 03c00000 00020000 "reserved"
#####################################################root@OpenWrt:~# cat/proc/partitions
major minor#blocksname
31 0 1024 mtdblock0
31 1 1024 mtdblock1
31 2 4096 mtdblock2
31 3 28672 mtdblock3
31 4 1024 mtdblock4
31 5 61440 mtdblock5
254 0 3844 ubiblock0_0
#########################################################################################
可以看到,最下面有60M的预留空间是没有用的
我想把这60M的预留空间添加到根目录去
然后我就用docker编译固件
######################################################################
docker run --rm -v /root/docker/openwrt/bin:/home/build/openwrt/bin -it openwrt/imagebuilder:ramips-mt7621-openwrt-23.05
######################################################################
然后查看信息
make info |more
找到R6220的信息
netgear_r6220:
NETGEAR R6220
Packages: kmod-mt7603 kmod-usb3 kmod-usb-ledtrig-usbport -uboot-envtools kmod-mt76x2
hasImageMetadata: 1
SupportedDevices: netgear,r6220 r6220
######################################################################
cat /builder/target/linux/ramips/image/mt7621.mk
这个文件里面有定义r6220的镜像空间大小 28672k
define Device/netgear_r6220
$(Device/netgear_sercomm_nand)
DEVICE_MODEL := R6220
SERCOMM_HWNAME := R6220
SERCOMM_HWID := AYA
SERCOMM_HWVER := A001
SERCOMM_SWVER := 0x0086
IMAGE_SIZE := 28672k
DEVICE_PACKAGES += kmod-mt76x2
SUPPORTED_DEVICES += r6220
endef
TARGET_DEVICES += netgear_r6220
######################################################################
cat /builder/target/linux/ramips/dts/mt7621_netgear_r6220.dts
下面是关键的内容 reg = <0x600000 0x1c00000>;
这个表示从0x600000开始 有一个0x1c00000大小的空间
通过计算得知0x1c00000刚好就是十进制的28672k 和上面的IMAGE_SIZE := 28672k吻合
&nand {
status = "okay";
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x0 0x100000>;
read-only;
};
partition@100000 {
label = "SC PID";
reg = <0x100000 0x100000>;
read-only;
};
partition@200000 {
label = "kernel";
reg = <0x200000 0x400000>;
};
partition@600000 {
label = "ubi";
reg = <0x600000 0x7600000>;
};
factory: partition@7C00000 {
label = "factory";
reg = <0x7C00000 0x100000>;
read-only;
};
partition@7D00000 {
label = "reserved";
reg = <0x7D00000 0x100000>;
read-only;
};
};
};
######################################################################
然后修改大小
空间的总大小是7E00000126M
我把最后的预留改为了1M
多余的空间都添加到ubi了
顺便把ubi和factory中间没用到的空间也利用上了
最后改完以后的分区信息如下
&nand {
status = "okay";
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x0 0x100000>;
read-only;
};
partition@100000 {
label = "SC PID";
reg = <0x100000 0x100000>;
read-only;
};
partition@200000 {
label = "kernel";
reg = <0x200000 0x400000>;
};
partition@600000 {
label = "ubi";
reg = <0x600000 0x7600000>;
};
factory: partition@7C00000 {
label = "factory";
reg = <0x7C00000 0x100000>;
read-only;
};
partition@7D00000 {
label = "reserved";
reg = <0x7D00000 0x100000>;
read-only;
};
};
};
IMAGE_SIZE := 120832k
######################################################################
开始编译
make PROFILE="netgear_r6220" imagePACKAGES="luci";
最后把编译好的bin文件复制出来 刷到路由器里面
ls /builder/bin/targets/ramips/mt7621
可以看到下面的文件
sha256sums
profiles.json
openwrt-23.05-snapshot-r23800-100a5606d6-ramips-mt7621-netgear_r6220.manifest
openwrt-23.05-snapshot-r23800-100a5606d6-ramips-mt7621-netgear_r6220-squashfs-kernel.bin
openwrt-23.05-snapshot-r23800-100a5606d6-ramips-mt7621-netgear_r6220-squashfs-rootfs.bin
openwrt-23.05-snapshot-r23800-100a5606d6-ramips-mt7621-netgear_r6220-squashfs-sysupgrade.bin
openwrt-23.05-snapshot-r23800-100a5606d6-ramips-mt7621-netgear_r6220-squashfs-factory.img
######################################################################
我在breed界面直接刷入固件,重启以后分区信息还是原来的
请问我编译的步骤是哪里做错了吗?
为什么我修改了分区没生效 breed,要选 mtk sdk刷入 btw, mt7621就放过它吧,跑不动docker的 gravely 发表于 2024-3-19 22:57
breed,要选 mtk sdk刷入
没看懂这个回答
是说要把我上面改好的
/builder/target/linux/ramips/dts/mt7621_netgear_r6220.dts
/builder/target/linux/ramips/image/mt7621.mk
这2个文件刷入breed? (这个怎么刷)
还是说编译固件 最后make的时候要手动指定?(怎么手动指定)
本帖最后由 ysc3839 于 2024-3-20 05:29 编辑
最后执行的是make image?不应该是make menuconfig,然后make吗?这个流程看的是什么文档?
没记错的话make image是ImageBuilder的流程,是从官方源里下载软件包下来组合成新的镜像,不会重新编译内核,你需要用编译的流程。 chainofhonor 发表于 2024-3-20 04:16
没看懂这个回答
是说要把我上面改好的
/builder/target/linux/ramips/dts/mt7621_netgear_r6220.dts
编译固件 make defconfig && make
在breed 刷 factory 选mtk sdk gravely 发表于 2024-3-20 09:18
编译固件 make defconfig && make
在breed 刷 factory 选mtk sdk
我用SDK编译方式如下:
docker run --rm -v /root/docker/openwrt_sdk/sdk/:/home/sdk/ -it openwrt/sdk:ramips-mt7621-openwrt-23.05
然后输入make menuconfig以后报了很多错误
进入的menu界面选项也很少
这个是什么原因
我看了网上的教程,说要先
./scripts/feeds update -a
我也执行了,都正常的更新完毕了
执行make menuconfig还是提示上面的错误
步骤是哪里错了
还是说我yunxingdocker的命令少了什么参数? https://openwrt.org/toh/netgear/r6220#make_use_of_reserved_60_mib_partition
OpenWRT 官方有教程,不用重新编译固件 Icarus_Radio 发表于 2024-3-20 18:33
https://openwrt.org/toh/netgear/r6220#make_use_of_reserved_60_mib_partition
OpenWRT 官方有教程,不用 ...
这个我看过了
这是仅仅只是把预留的60M空间挂载到一个目录下
我想把这个空间合并到用户/目录 本帖最后由 Icarus_Radio 于 2024-3-20 22:51 编辑
chainofhonor 发表于 2024-3-20 18:56
这个我看过了
这是仅仅只是把预留的60M空间挂载到一个目录下
我记得openwrt可以把overlayfs挂载到别的地方,你直接挂在这个60m分区上试试。合并也就多10m空间,也没多大区别吧
比如Extroot:https://openwrt.org/docs/guide-user/additional-software/extroot_configuration 要刷factory固件,sysupgrade固件不会重写分区。 chainofhonor 发表于 2024-3-20 17:34
我用SDK编译方式如下:
docker run --rm -v /root/docker/openwrt_sdk/sdk/:/home/sdk/ -it openwrt/sdk: ...
从没用过docker容器编译固件 没法回答....... chainofhonor 发表于 2024-3-20 17:34
我用SDK编译方式如下:
docker run --rm -v /root/docker/openwrt_sdk/sdk/:/home/sdk/ -it openwrt/sdk: ...
./scripts/feeds update -a之后要执行./scripts/feeds install -a ysc3839 发表于 2024-3-22 23:29
./scripts/feeds update -a之后要执行./scripts/feeds install -a
嗯op论坛的版主也这样回复的
我尝试了一下,用了一台香港的服务器
然后make menuconfig的时候貌似还是没有找到选路由器型号的选项
我就直接开始编译了,太慢了,我放弃了
目前这个路由器我就装了个KMS
默认的分区够用了
不折腾了 chainofhonor 发表于 2024-3-23 00:06
嗯op论坛的版主也这样回复的
我尝试了一下,用了一台香港的服务器
找不到型号应该是你没有去官网下载对应架构的 config.buildinfo,默认选的不是你路由器的架构,所以找不到
页:
[1]