侧边栏壁纸
  • 累计撰写 8 篇文章
  • 累计创建 20 个标签
  • 累计收到 3 条评论

目 录CONTENT

文章目录

VMware虚拟机安装ubuntu编译openwrt软路由系统

LengJun
2022-04-03 / 0 评论 / 0 点赞 / 1,192 阅读 / 7,911 字
温馨提示:
本文最后更新于 2022-04-07,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

一、环境的准备

  • VMware® Workstation 16 Pro
  • ubuntu-20.04.4-live-server-amd64
  • Xshell
  • windows 10

VMware创建虚拟机

  • 打开VM创建虚拟机

vmware_LhRkRP4XV6

  • 选择典型,然后下一步

vmware_elbYu5OQgs

  • 选择安装程序光盘文件,浏览找到下载的镜像文件,然后下一步

vmware_cWRNVdDhyk

  • 接下来会进入简易安装窗口,设置好之后下一步

vmware_KtbaG3QImX

全名:用于注册客户机操作系统的名称(如果需要注册)。Workstation Pro 使用名字创建虚拟机的主机名。
用户名:可以使用小写字母、数字和破折号,但不要在用户名中以破折号作为起始字符。请勿使用 root 作为名称。某些操作系统会为该用户设置 sudo 访问权限,另一些操作系统则要求该用户使用 su 来获得 root 用户权限。
密码:用户名和 root 用户的密码。

  • 虚拟机名称和位置,默认即可

vmware_jYebD2x757

  • 选择将虚拟磁盘储存为单个文件,之后下一步

vmware_LMjVZXqgrb

  • 选择自定义硬件

vmware_tOyP4aVqee

  • 调整内存和处理器,根据宿主机配置灵活调整,尽量拉高

vmware_qSsJuGokm2

  • 关闭之后虚拟机便开始安装了

vmware_eCVsEdwlsV

安装ubuntu

  • 选择语言-英语,之后按回车

vmware_UamJPjwD10

  • 键盘默认即可

vmware_jPNmAvrQ2j

  • 配置网络,我们选择第一个ens33

vmware_1OtE8xT25K

  • 选择Edit IPv4

vmware_wofbfi6Ygs

  • IPv4 Method改为Manual,之后回车

vmware_VNbJHG0FtJ

  • 配置IPv4,填完之后save保存

vmware_hPHZAgCeff

此项配置因人而异,如果你和我一样,虚拟机网络使用了NAT,则需打开编辑->虚拟网络编辑器->NAT模式->NAT设置,查看子网IP和网关IP。如果你使用了桥接,则需要前往路由器查看子网IP和网关IP。
这里查看到的子网IP为192.168.214.0,子网掩码为255.255.255.0,网关为192.168.214.2

vmware_bHDQEdV5zM

Subnet:对应填写子网IP/24,例如192.168.214.0/24
Address:对应填写虚拟机的IPv4地址,此地址应和子网处于同一网段,例如192.168.214.131
Gateway:对应填写虚拟机的网关IP,例如192.168.214.2
Name servers:填写一个DNS地址,例如8.8.8.8

  • 关闭IPv6

vmware_Cbxsgt5D0J

  • 配置代理

vmware_51AXXe5Y7q

可以让宿主机的代理软件监听一个http端口,虚拟机填写的IP为宿主机的内网IP,端口号则是代理软件监听的端口。

  • 镜像地址,默认即可

vmware_7wzAsgf7mN

  • 存储配置,默认即可

vmware_hbKZNDsfcb

vmware_PlBhUu7oFd

  • 保存配置

vmware_EkXRyng8t6

  • 配置用户

vmware_nBzLyJc9MC

  • Ubuntu Advantage,跳过

vmware_nht3YJlU26

  • 配置ssh,空格选中第一个Install OpenSSH server

vmware_9ZptHiHDoV

  • snaps,跳过

vmware_LCOro0kRtb

  • 接下来,ubuntu正式开始安装了,等待片刻

vmware_mGmdzjWQqc

  • 安装完成,重启Ubuntu

vmware_wOmi5RHpLo

Ubuntu磁盘扩容

使用上述方法安装Ubuntu,磁盘剩余可使用空间只有10G不到,而编译openwrt系统将会占用超过30G的硬盘空间,因此需要给虚拟机扩容。
为了方便操作,我们使用Xshell连接虚拟机。Xshell的使用方法这里不再赘述。

  • 关闭Vmware的Ubuntu系统

  • 选择编辑虚拟机配置设置->硬件->硬盘->扩展,最大磁盘大小输入60,点击扩展。这里我们扩展了40G
    vmware_oOb9W81D70
    vmware_UYfH5t1gq5

  • 开机,使用Xshell连接上虚拟机

Xshell_LZ0k7RCn9L

  • 查看文件系统和剩余磁盘空间
root@ubuntu:~# df -lh
Filesystem                         Size  Used Avail Use% Mounted on
udev                               3.9G     0  3.9G   0% /dev
tmpfs                              793M  1.5M  792M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  9.8G  2.3G  7.0G  25% /
tmpfs                              3.9G     0  3.9G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
tmpfs                              3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/loop0                          68M   68M     0 100% /snap/lxd/21835
/dev/loop1                          62M   62M     0 100% /snap/core20/1328
/dev/loop2                          44M   44M     0 100% /snap/snapd/14978
/dev/sda2                          1.5G  110M  1.3G   8% /boot
tmpfs                              793M     0  793M   0% /run/user/1000
  • 对新增加的硬盘进行分区
    • 执行“fdisk /dev/sda”,进入到fdisk
    • 输入p指令,查看已分区数量(有三个 /dev/sda1 /dev/sda2 /dev/sda3)
    • 输入 n 指令,新增加一个分区
    • 输入p ,分区类型选择为主分区
    • 输入分区号 4 ,分区号选4(上面显示我已经有3个分区了)
    • 回车      默认(起始扇区)
    • 回车      默认(结束扇区)
    • 输入t 指令,修改分区类型
    • 按提示输入刚才的分区号4
    • 输入分区类型 31 ,可以L查看所有分区类型
    • 输入w指令,将以上改动写入分区表
    • 最后完成,退出fdisk命令
    • 重启系统 reboot
root@ubuntu:~# fdisk /dev/sda

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

GPT PMBR size mismatch (41943039 != 125829119) will be corrected by write.

Command (m for help): p

Disk /dev/sda: 60 GiB, 64424509440 bytes, 125829120 sectors
Disk model: VMware Virtual S
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: gpt
Disk identifier: 7F06ED54-EB1F-41FC-9EB0-8C1EEE614ED2

Device       Start      End  Sectors  Size Type
/dev/sda1     2048     4095     2048    1M BIOS boot
/dev/sda2     4096  3149823  3145728  1.5G Linux filesystem
/dev/sda3  3149824 41940991 38791168 18.5G Linux filesystem

Command (m for help): n
Partition number (4-128, default 4): 
First sector (41940992-125829086, default 41940992): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (41940992-125829086, default 125829086): 

Created a new partition 4 of type 'Linux filesystem' and of size 40 GiB.

Command (m for help): t
Partition number (1-4, default 4): 

Partition type (type L to list all types): 31

Changed type of partition 'Linux filesystem' to 'Linux LVM'.

Command (m for help): w
The partition table has been altered.
Syncing disks.
  • 对新添加的硬盘格式化
root@ubuntu:~# mkfs.ext4 /dev/sda4
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 10485760 4k blocks and 2626560 inodes
Filesystem UUID: 2197b292-4030-4079-9d40-50d93bf60249
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done  
  • 添加新LVM到已有的LVM组,实现扩容
root@ubuntu:~# lvm
lvm> pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               ubuntu-vg
  PV Size               <18.50 GiB / not usable 0   
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              4735
  Free PE               2175
  Allocated PE          2560
  PV UUID               WTkoaN-1FaY-9jpX-ceoa-BzSQ-dpTK-Awsp33
   
lvm> pvcreate /dev/sda4
WARNING: ext4 signature detected on /dev/sda4 at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/sda4.
  Physical volume "/dev/sda4" successfully created.
lvm> vgextend ubuntu-vg  /dev/sda4
  Volume group "ubuntu-vg" successfully extended 
lvm> lvextend -L +40G /dev/mapper/ubuntu--vg-ubuntu--lv
  Size of logical volume ubuntu-vg/ubuntu-lv changed from 10.00 GiB (2560 extents) to 50.00 GiB (12800 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.
lvm> pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               ubuntu-vg
  PV Size               <18.50 GiB / not usable 0   
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              4735
  Free PE               0
  Allocated PE          4735
  PV UUID               WTkoaN-1FaY-9jpX-ceoa-BzSQ-dpTK-Awsp33
   
  --- Physical volume ---
  PV Name               /dev/sda4
  VG Name               ubuntu-vg
  PV Size               40.00 GiB / not usable 4.98 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              10239
  Free PE               2174
  Allocated PE          8065
  PV UUID               mPHZ7A-A9dK-7n3y-SxUd-JqCS-h8Yl-PcfQZd

lvm> quit
 Exiting.

配置解答:

lvm                                      进入lvm管理  
lvm> pvcreate /dev/sda4                          这是初始化刚才的分区,必须的  
lvm>vgextend ubuntu-vg /dev/sda4                    将初始化过的分区加入到虚拟卷组ubuntu-vg
lvm>lvextend -L +40G /dev/mapper/ubuntu--vg-ubuntu--lv  扩展已有卷的容量
lvm>pvdisplay                           查看卷容量,这时你会看到一个很大的卷了
lvm>quit                                            退出
  • 文件系统扩容
root@ubuntu:~# resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 7
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 13107200 (4k) blocks long.

最后再运行下:df -h 
即可看到扩容后的磁盘空间
root@ubuntu:~# df -h
Filesystem                         Size  Used Avail Use% Mounted on
udev                               3.9G     0  3.9G   0% /dev
tmpfs                              793M  1.5M  792M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   50G  2.3G   45G   5% /
tmpfs                              3.9G     0  3.9G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
tmpfs                              3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/loop0                          68M   68M     0 100% /snap/lxd/21835
/dev/loop1                          44M   44M     0 100% /snap/snapd/14978
/dev/loop2                          62M   62M     0 100% /snap/core20/1328
/dev/sda2                          1.5G  110M  1.3G   8% /boot
tmpfs                              793M     0  793M   0% /run/user/1000

设置代理访问

把代理服务器地址写入shell配置文件.bashrc或者.zshrc 直接在.bashrc或者.zshrc添加下面内容

如果是http协议,添加
export http_proxy="http://host:port"
export https_proxy="http://host:port"

如果是socks5协议,添加
export http_proxy="socks5://host:port"
export https_proxy="socks5://host:port"

最后执行如下命令应用设置

source ~/.bashrc

设置git代理

git config --global http.proxy 'http://host:port' 
git config --global https.proxy 'http://host:port'

二、编译openwrt

必须使用非root账户编译,否则报错

首次编译

  • 更新源
sudo apt-get update
  • 安装依赖
sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync
  • 克隆 Open­Wrt 源码
git clone https://github.com/coolsnowwolf/lede 
  • 进入目录
cd lede 
  • 缝合一些其他插件
    添加下面代码复制到 lede源码根目录feeds.conf.default文件
src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small
  • 下载 feeds 源中的软件包源码
./scripts/feeds update -a
  • 安装 feeds 中的软件包
./scripts/feeds install -a
  • 调整 Open­Wrt 系统组件
make menuconfig

x86_64 平台

Target System (x86)  --->
Subtarget (x86_64)  --->
Target Profile (Generic x86/64)  --->

无特殊需求,那么 Target Images 勾选
[*] squashfs (NEW)
[*] Build GRUB images (Linux x86 or x86_64 host only) (NEW)
[*] Build GRUB EFI images (Linux x86 or x86_64 host only) (NEW)
[*] GZip images (NEW)

进入 LUCI --> Themes 选择喜欢的主题皮肤
进入 LUCI --> Applications 选择需要的插件,首次编译不建议选太多插件。
OpenWrt 编译 LuCI -> Applications 添加插件应用说明-L大:https://www.right.com.cn/forum/thread-344825-1-1.html

  • 预下载编译所需的软件包
make -j8 download V=s

未防止网络原因少下载某个包,建议多运行一次这个命令。

  • 开始编译
make -j1 V=s

-j1:使用单线程编译。新手推荐单线程编译,一是因为玄学问题可能成功率高,二是方便查看错误日志
V=s:输出详细日志,用于编译失败时找出错误。
首次编译会花费超过10小时,电脑设置成不休眠。

再次编译

  • 不更改配置功能和插件,仅升级
cd lede
git pull # 拉取 Open­Wrt 源码更新
./scripts/feeds update -a && ./scripts/feeds install -a
make defconfig
make -j8 download
make -j$(($(nproc) + 1)) V=s
  • 更改配置编译
cd lede
git pull
./scripts/feeds update -a && ./scripts/feeds install -a

# 清除旧的编译产物(可选)
make clean 
# 在源码有大规模更新或者内核更新后执行,以保证编译质量。此操作会删除/bin和/build_dir目录中的文件。

# 清除旧的编译产物、交叉编译工具及工具链等目录(可选)
make dirclean 
# 更换架构编译前必须执行。此操作会删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件。

# 清除 Open­Wrt 源码以外的文件(可选)
make distclean
# 除非是做开发,并打算 push 到 GitHub 这样的远程仓库,否则几乎用不到。此操作相当于make dirclean外加删除/dl、/feeds目录和.config文件。

# 还原 Open­Wrt 源码到初始状态(可选)
git clean -xdf
# 如果把源码改坏了,或者长时间没有进行编译时使用。

rm -rf ./tmp && rm -rf .config
make menuconfig
make -j8 download
make -j$(($(nproc) + 1)) V=s

相比首次编译,再次编译会节省很多时间,大约几个小时便可编译结束

0

评论区