【转.待验证】在OpenWRT上配置debian模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【转.待验证】在OpenWRT上配置debian模式相关的知识,希望对你有一定的参考价值。

参考技术A

【 原文出处 】

某些台过于强悍的 ARM 软路由,但是更多合适的系统只有 OpenWRT ,故可使用 chroot 建立一个桌面环境来利用多余的性能。

首先,通常 OpenWRT 重置的 shell 为 ash ,在 chroot 后会因为找到替代的 ash 而切换失败,需要替换的 shell 为 bash ,通过 $SHELL 环境变量可以查看当前的 shell :

如果已经是 /bin/bash ,则无需手动安装,否则需要使用 opkg 安装 bash 并手动设置:

随后可以开始安装 debian 替代,假设放置路径为 /debian ,版本使用 debian10 (buster) ,构架使用 arm64 ,配置。然后修改 /etc/passwd 中根行的 /bin/ash 为 /bin/bash 立即。清华源:

debootstrap 将重置安装完毕后,需手动将 /proc , /sys , /dev 添加到目录的目录中:

注意,重启后上述挂载目录重置,需要重新挂载,当然也可以添加到 OpenWRT 的启动脚本中。
之后就可以使用 chroot 切换到 debian 环境了:

如果需要将这个切换的终端在后台保持,可配合 screen 命令(可使用 opkg install screen 安装)使用:

之后可通过点击 Ctrl + A 后再点击 D 将终端切换回后台。再使用

返回该终端。使用屏幕将终端搁置到后台后,当前登录的终端即使退出了, debian 中的程序仍会保持在后台运行,这样就可以在 debian 中配置桌面和 vnc ,再从外部连接到该桌面了。
安装 xfce4 桌面和 vncserver :

安装完成后配置 vncserver :
先直接运行 vncserver 以生成配置文件,这里将要求设置 vnc 的连接密码,此部分日志记录如下:

之后会初始化创建:1(端口5901),已可以使用vnc登录,但是并不显示桌面。故需先进入桌面 kill 掉:

然后修改启动脚本:在 〜/.vnc/xstartup 中添加一行: startxfce4&
使该文件应为如下内容:

之后再次运行vncserver,即可从外部连接到该桌面了。该终端可使用 Ctrl + A D 搁置到后台,保持程序继续运行。
如果需要调整分辨率,可以在运行 vncserver 时指定分辨率,如:

如果桌面的虚拟终端无法打开(常见的情况为安装时未安装虚拟终端),可以在终端中安装 xfce4-terminal 。
如果出现文本显示问题,可以安装 locales 之后通过 dpkg-reconfigure locales 重新配置编码方式,一般选择UTF-8即可,以生成相关配置文件,之后将 export LANG = C.UTF-8 写入 〜/ .profile 文件中,并源 .profile 进行修改,再重新打开桌面。之后需要安装相应的字体文件,可以通过apt安装(如 apt-get install fonts-wqy-zenhei ),也可以将其他字体拷贝到 /usr/share/fonts/truetype/ 下即可。

补充
如果提示无法更改语言环境,则说明该控件的语言配置与主系统不符,或其他语言的配置出现问题。
在局域网中先安装语言环境,再使用 dpkg-reconfigure 重新配置 locale 即可:

按照主系统中相同的配置即可。通常可在生成配置一栏上进行 en_US.UTF-8 和 zh_CN.UTF-8 ,然后在语言环境中选择 C.UTF-8 就可以。

如何编译OpenWrt

参考技术A   准备工作
  在开始编译Openwrt之前需要您做些准备工作;与其他编译过程一样,类似的编译工具和编译环境是必不可少的:
一个构建OpenWrt映像的系统平台,简单说就是准备一个操作系统(比如Ubuntu、Debian等);
确保安装了所需的依赖关系库, (在debian系统中就是安装各种需要的软件包)
OpenWrt源代码副本
  首先, 开机登陆到支持编译Openwrt的操作系统(废话了)。实体机或者虚拟机(Vmware 或者 Qemu)里的操作系统都行,这里推荐使用Linux系统。 bsd和mac osx系统也可以编,但不推荐,且未验证是否可编译成功。下文假定您使用的是Debian操作系统,使用 apt-get 来管理包. 替代的选择是 Ubuntu (分支 Kubuntu, Xubuntu 等即可)。
  第二步, 就是安装所需要的各种软件包, 包括编译器,解压工具,特定的库等. 这些工作可以简单的通过键入以下命令 (通常需要root 或者是 sudo 权限),以root权限安装下列软件包(可能并不完整,会有提示,提示缺少即装就可以了):
  32位(x86)请执行下列命令:
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext \
git libncurses5-dev libz-dev patch unzip zlib1g-dev

  64位(x86_64)请执行下列命令(多装了哪些库或软件包呢?请您仔细看一看哦):
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext \
git libncurses5-dev libz-dev patch unzip zlib1g-dev ia32-libs \
lib32gcc1 libc6-dev-i386

  参考 本列表中 所列的编译环境所需要软件包或库。
  某些依赖的为库或软件包也许操作系统中已经安装过,此时apt-get会作出提示(提示您忽略或重新安装的),别紧张,放轻松些,编译Openwrt不会像编译DD-WRT那样难的(至少本人是体会到了编译DD-WRT的难)。
  最后下载一份完整的 Openwrt 源码到编译环境中。关于Openwrt的源代码下载,途径有二,一是通过 svn ,一是通过 git,建议使用 svn ,因为Openwrt主要以 svn 来维护Openwrt系统的版本。另外,请注意Openwrt中不同的分支版本,一个是用得较多的开发快照,俗称 trunk,二是稳定版,俗称 backfire。
参考技术B   
  OpenWrt编译环境搭建和编译方法
  
  一、 更新开发系统。
  安装完ubuntu 后,重新开机的时候,会有一个VMware tools 安装的提示界面,耐心等待,等到VMware tools 安装好后
  因为更新系统和安装一些工具包需要用到网络,所以进入ubuntu的界面后,
  将ubuntu的网络设置为NAT网络连接模式(默认为NAT),
  以上就绪后,更新开发系统的软件
  1、首先备份Ubuntu 10.04源列表
  sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (备份下当前的源列表) 2、修改更新源
  sudo gedit /etc/apt/sources.list (打开Ubuntu 11.10源列表文件) 3、使用
  http://hi.baidu.com/pobenliu/blog/item/2180dc3502933c375bb5f5a5.html
  网站下的一个更新源贴到sources.list文件中(“#”开头的那一行为注释,可以直接复制进文件中) ,使用这里的源主要是为了提高下载速度,用官方的会比较慢。
  4、通知ubuntu启用新的更新源
  sudo apt-get update
  
  二、 安装编译OpenWrt需要用到的软件包:
  命令如下:
  sudo apt-get install g++ libncurses5-dev zlib1g-dev bison flex unzip
  autoconf gawk unzip make gettext gcc binutils patch asciidoc bzip2 libz-dev libc6-dev linux-headers-2.6.32-38
  注意,红色部分的版本根据自己的内核版本来修改,可以通过uname –a 来查看。
  三、 安装svn。
  由于在后面需要用到svn 来下载OpenWrt,所以需要先安装svn。
  由于使用命令 sudo apt-get install subversion来安装的版本最新也只是
  1.6.6版本,为了和windows 上的版本同步,所以需要下载安装包,进行手工安装。

  
  

  1、先下载两个包,
  subversion-1.7.2.tar.gz
  subversion-deps-1.6.1.tar.gz 2、拷贝到/home目录下,解压:
  tar -zxvf subversion-1.7.2.tar.gz
  tar -zxvf subversion-deps-1.6.1.tar.gz 3、进入目录,准备编译安装: cd subversion-1.7.2 执行:./configure
  安装遇到的第一个error: checking for APR... no
  configure: WARNING: APR not found
  The Apache Portable Runtime (APR) library cannot be found. Please install APR on this system and supply the appropriate --with-apr option to 'configure' 解决办法: 到tar -zxvf subversion-deps-1.6.1.tar.gz 解压的目录下,有一个apr的文件夹,放到subversion-1.7.2下即可 cp -rf ../subversion-1.6.1/apr .
  4、再重新执行./configure 命令 遇到第二个error:
  checking APR version... 1.3.3
  configure: Apache Portable Runtime Utility (APRUTIL) library configuration
  checking for APR-util... no
  configure: WARNING: APRUTIL not found
  The Apache Portable Runtime Utility (APRUTIL) library cannot be found. Either install APRUTIL on this system and supply the appropriate 提示的是apache的端口没有找到,因为此安装并没有与apache结合,到tar -zxvf subversion-deps-1.6.1.tar.gz 解压的目录下,发现有一个 APR-util,再移动到ubversion-1.7.2下
  5、重新执行./configure 命令 Ok,遇到第三个error,
  checking sqlite library version (via pkg-config)... no
  An appropriate version of sqlite could not be found. We recommmend 3.7.6.3, but require at least 3.6.18. 错误有提示:解决办法
  sqlite-amalgamation-3071000.zip

  

  下载这个包,解压,将sqlite3.c放到指定的位置: unzip sqlite-amalgamation-3070900.zip
  mkdir –p subversion-1.7.2/sqlite-amalgamation cd sqlite-amalgamation-3070900
  cp sqlite3.c ../subversion-1.7.2/sqlite-amalgamation/
  之後重新执行./configure 见到这表示./config执行ok
  checking for ctypesgen.py... none configure: creating ./config.status config.status: creating Makefile
  config.status: creating tools/backup/hot-backup.py
  config.status: creating tools/hook-scripts/commit-access-control.pl config.status: creating
  subversion/bindings/swig/perl/native/Makefile.PL
  config.status: creating subversion/svn_private_config.h.tmp config.status: executing libtool commands
  config.status: executing svn_private_config.h.tmp commands
  6、然后编译安装: make clean
  make && make install
  只要没有遇到error,就是ok的, 输入
  svn –version
  得到:
  svn, version 1.7.2 (r1207936) compiled Feb 8 2012, 23:09:00 说明安装成功。
  四、下载OpenWrt源码。
  分两种,一种是最新版但不是最稳定,也就是trunk版,一种是相对稳定版,backfire版。源码下载命令分别是: 先创建文件夹:
  mkdir OpenWrt_trunk cd OpenWrt_trunk Trunk版下载命令:
  svn co svn://svn.openwrt.org/openwrt/trunk/
  若需要backfire:
  mkdir OpenWrt_backfire

  

  cd OpenWrt_backfire
  Backfire下载命令:
  svn co svn://svn.openwrt.org/openwrt/branches/backfire/
  五、 编译OpenWrt:
  如果不是刚下载的代码,为了保持代码为最新状态,应该定期运行Svn up更新代码,什么时候有变你是不知道的 然后是更新软件包:
  ./scripts/feeds update –a ./scripts/feeds install –a
  如果不更新软件包的话,你会发现后面是看不到很多软件包的,也就无法集成那些看不到的包了。
  然后是make defconfig,再make menuconfig进入定制界面,定制自己的系统。
  最后,执行make命令,然后是非常漫长的等待。
  在编译的时候,是根据你的配置,进行下载程序包的,先是把这些程序包下载到./dl目录下,再进行解压编译,和安装。如果不是为了开发某一软件的话,建议一开始的时候不要安装太多的软件,一是时间太长,然后很容易出错。要用到的软件在编译好后,用opkg来安装。

以上是关于【转.待验证】在OpenWRT上配置debian模式的主要内容,如果未能解决你的问题,请参考以下文章

玩转开源BananaPi R2 —— 第二篇 Openwrt 网口配置分析

如何在VMware中直接跑openwrt

如何编译OpenWrt

配置overlay(overlayfs)根目录挂载构建debian无盘工作站

树莓派4B + Debian10 单臂路由

转 - Debian系统配置PPTP方法 添加用户和iptables规则