|
本帖最后由 hood2000 于 2023-2-9 11:13 编辑
我按照x-wrt网站上关于在vps安装openwrt的方法试了几次,总是不能成功。提示如下:
- 系统在恢复 (initramfs) 模式下运行。
- 不会存储对设置的任何更改,更改会在重新启动后丢失。 此模式应仅用于安装固件
复制代码
问题:
1. 关于磁盘第一分区。教程中说磁盘挂载的每一个分区,我看了ubuntu18 下,sda1是bios ,sda2是/boot , sda3是swap,sda4是/ 。
按照教程来说,应该是指定一个临时存放的位置,只要空间够就行。是不是这样?
- 2.4 确定磁盘的路径和分区类型
- 用 df 和 mount 命令查看磁盘,确定磁盘第一个分区挂载的路径,比如磁盘第一个分区,通常是/dev/sda1 /dev/vda1 /dev/xvda1等等,类似这些。要注意的是这个分区的挂载路径和剩余空间大小,通常这个分区挂载在 / 或者 /boot 我们在刷机过程需要把固件等文件放到这个路径下面保存好。
复制代码 2.VPS的内存是1G,/tmp挂载的只有一半空间,是不是x-wrt固件解压后超过了这个空间,导致不能刷写/sda ?
VPS配置:
1 vCPU 1 GiB 30 GiB RAID-10 SSD
教程:
https://blog.x-wrt.com/docs/install-on-vps2/
- X-Wrt安装部署到VPS上(新)
- 1. 介绍:
- 把OpenWrt系统部署到云服务器(VPS),因为OpenWrt是网络系统,对转发做了不少优化,而且有良好的配置界面,很多服务比如OpenVPN等可以一键部署。注意本教程只适用于x-wrt固件,其它OpenWrt固件不适用。
- 本教程对于绝大多数VPS适用,比如vultr digitalocean Amazon的AWS Linode 阿里云 腾讯云 等等。但是不同的云,实际情况不太相同,要随机应变,根据实际情况做正确的处理。
- 这是新版本的教程,可以保证几乎100%成功部署到所有的VPS上面。
- 2. 教程:
- 2.1 固件下载
- 我们选择选择x86 64bits(MBR dos)或者x86 64bits(UEFI gpt)的固件,下载地址: https://downloads.x-wrt.com/rom/ 刷机需要到的文件
- x-wrt-x86-64-generic-initramfs-kernel.bin
- x-wrt-x86-64-generic-ext4-combined.img.gz
- 如果是EFI系统,需要EFI固件
- x-wrt-x86-64-generic-ext4-combined-efi.img.gz
- 2.2 VPS系统部署
- VPS系统的要求,可以是Ubuntu,可以是CentOS,可以是Debian,或者其他
- 2.3 VPS系统的网络配置识别
- 在部署之前,我们要清楚VPS的IP地址是如何分配的,有些VPS是自动获取(DHCP)分配的IP,有些是静态配置的,有些是双网卡和多网卡的。
- 登录VPS后,查看VPS的网卡IP地址,ifconfig 或者 ip list 命令查看,然后执行 grep /etc -nre <IP> 命令,如果抓到了包含这个<IP>的文件,打开看看是否是静态配置的脚本,找到这样的脚本,我们就鉴定这个VPS是静态配置,否则是动态配置。
- 另外,观察是否有多个网口,如果有多个网口,安装的时候需要注意,下面有说明。
- 2.4 确定磁盘的路径和分区类型
- 用 df 和 mount 命令查看磁盘,确定磁盘第一个分区挂载的路径,比如磁盘第一个分区,通常是/dev/sda1 /dev/vda1 /dev/xvda1等等,类似这些。要注意的是这个分区的挂载路径和剩余空间大小,通常这个分区挂载在 / 或者 /boot 我们在刷机过程需要把固件等文件放到这个路径下面保存好。
- 用fdisk -l查看分区类型,看是不是gpt,如果是gpt就需要刷EFI固件,通常不是。
- 2.5 开始刷机
- 刷机需要的文件,用wget下载下来
- x-wrt-x86-64-generic-initramfs-kernel.bin
- x-wrt-x86-64-generic-ext4-combined.img.gz 或者 x-wrt-x86-64-generic-ext4-combined-efi.img.gz
- 确定当前系统运行的内核路径,通常是 /boot/vmlinuz* 用 uname -r 查看内核版本。比如,路径是/boot/vmlinuz-4.15.0-111-generic 我们需要把 x-wrt-x86-64-generic-initramfs-kernel.bin 替换这个内核
- cp x-wrt-x86-64-generic-initramfs-kernel.bin /boot/vmlinuz-4.15.0-111-generic
- 然后我们需要确定第一个分区的路径,假如第一个分区是 / 我们把固件拷贝到 / 保存好 主意保存的名字是 x-wrt.img.gz
- cp x-wrt-x86-64-generic-ext4-combined.img.gz /x-wrt.img.gz
- 同时我们还需要一个安装脚本,脚本路径和固件保存的目录相同,这个例子是/ 脚本名字是 x-wrt-install-vps.sh 脚本的代码参考如下: (根据情况修改)
- #!/bin/sh
- # install to sda
- BDEV=sda
- # x-wrt.img.gz in disk part sda2
- DDEV=sda2
- # static ip
- #network=172.21.170.245,255.255.240.0,172.21.175.253,8.8.8.8
- # static ip swap eth0 eth1
- #network="117.18.13.159,255.255.255.0,117.18.13.1,8.8.8.8,initscript=dWNpIHNldCBuZXR3b3JrLmxhbi5pZm5hbWU9ZXRoMQp1Y2kgc2V0IG5ldHdvcmsud2FuLmlmbmFtZT1ldGgwCnVjaSBjb21taXQgbmV0d29yawo="
- # dhcp ip
- network=dhcp
- vmroot=/tmp/block
- mkdir -p $vmroot
- mount /dev/${DDEV} $vmroot || exit 0
- cp $vmroot/x-wrt.img.gz /tmp/x-wrt.img.gz && {
- cd /
- umount $vmroot
- sync
- (zcat /tmp/x-wrt.img.gz;
- echo open=443,network=$network;
- ) >/dev/$BDEV && reboot
- }
- 这个脚本准备刷机的磁盘是sda,第一个分区是sda1,它是DHCP动态获取IP的。你需要根据情况修改刷机脚本,脚本会在重启后启动initramfs内核并且执行。 如果磁盘是vda,就修改BDEV的值,注意,如果是静态IP,就注释掉network=dhcp,启用静态IP那一行的network=<ip>,<mask>,<gateway>,<dns>,如果VPS有多个网卡,比如有2个eth0 eth1,我们需要附加一个initscript=<script base64 codes>来做交换网口,这个<script base64 codes>其实是如下脚本的base64编码,你要根据情况修改
- uci set network.lan.ifname=eth1
- uci set network.wan.ifname=eth0
- uci commit network
- 好了,如果上述处理妥当,就reboot重启,由于咱们用initramfs-kernel替换了内核,重启后将会进入initramfs-kernel的系统,然后这个系统会寻找 x-wrt-install-vps.sh 这个脚本执行刷机,这个脚本干的事情很简单,挂载第一个分区,拷贝固件到/tmp目录,然后执行刷机重启。
- 这个过程大概需要5分钟,看情况了。
- 系统重启后,我们将可以访问到OpenWrt管理界面,比如本文的例子,管理界面地址 https://[VPS_IP]/ 进入管理界面后,要立刻修改默认的管理密码,默认的账号密码是 root/admin,其次,如果有需要,进入系统管理权页面,开启ssh账号密码登录,并且要设置防火墙开放wan区22端口的访问。
- 最后,自由的进行各种配置吧!一个漂亮又熟悉的OpenWrt Luci界面就在你面前了。
复制代码
|
|