NanoPi-NEO——系统配置工具npi-config
  f3Rna93cIAZ8 2023年11月02日 51 0


  npi-config 是我们这个 NanoPi-NEO 系统下的一个命令行的系统配置工具,利用它可以对系统进行一些初始化的配置,可配置的项目包括:用户密码、系统语言、时区、Hostname、SSH 开关、自动登录选项等。在命令行执行以下命令即可进入:

sudo

  npi-config 的显示界面如下所示:


NanoPi-NEO——系统配置工具npi-config_ftp



图1.17 系统配置工具npi-config的显示界面

  npi-config 工具的当前版本一共有8个菜单,分别是:

  1. Change User Password:修改缺省用户的登录密码
  2. Hostname:设置主机名,默认为 NanoPi-NEO
  3. Boot Options:配置一些启动选项,例如系统启动后登录 console 的默认用户
  4. Localisation Options:配置一些本地选项,例如语言、时区、键盘布局、Wi-Fi 频段等
  5. Interfacing Options:接口选项配置,例如开启或关闭 SSH 服务
  6. Advanced Options:高级配置,包括 Audio、欢迎信息等
  7. Update:升级 npi-config 到最新版本
  8. About npi-config:关于 npi-config 的信息

npi-config 的使用很简单,根据提示进行操作即可,一般不会有太大问题,这里就不详细讲解了,大家摸索几遍就可以了。

  我在选择“Update”的时候看到如下提示:

Cloning into 'npi-config'...
remote: Counting objects: 5, done.
remote: Total 5 (delta 0), reused 0 (delta 0), pack-reused 5
Unpacking objects: 100% (5/5), done.
Checking connectivity... done.
Sleeping 5

  于是,猜测 npi-config 工具的更新操作就是拉取 git 仓库的最新代码,果然在 GitHub 上找到相关仓库,然后尝试用如下命令克隆npi-config源代码:

git clone https://github.com/friendlyarm/npi-config.git

  克隆成功,可以看到 npi-config 目录下有三个文件:

npi-config   README.md  sample_profile_d.sh

  其中 npi-config 就是我们上面所运行的系统配置工具,实际上,它是一个 Shell 脚本文件。这里抽取一部分代码:

#!/bin/sh
# Part of npi-config http://github.com/friendlyarm/npi-config
#
# See LICENSE file for copyright and license details

INTERACTIVE=True
ASK_TO_REBOOT=0

if [ -f /etc/friendlyelec-release ]; then
# get friendlyelec's boardt model
# example:
# BOARD="NanoPC-T2"
# LINUXFAMILY=nanopi2
. /etc/friendlyelec-release
fi

......

do_update() {
cd /tmp/
rm -rf npi-config
git clone https://github.com/friendlyarm/npi-config
if [ $? -eq 0 ]; then
SELFPATH=`which npi-config`
cp -f npi-config/npi-config $SELFPATH
chmod 755 $SELFPATH
rm -fr npi-config
printf "Sleeping 5 seconds before reloading npi-config\n" &&
sleep 5 &&
exec $SELFPATH
else
whiptail --msgbox "There was an error checking new version." 20 60 1
fi
}

#
# Interactive use loop
#
calc_wt_size
while true; do
FUN=$(whiptail --title "NanoPi Software Configuration Tool (npi-config)" --menu "Setup Options" $WT_HEIGHT $WT_WIDTH $WT_MENU_HEIGHT --cancel-button Finish --ok-button Select \
"1 Change User Password" "Change password for the default user (pi)" \
"2 Hostname" "Set the visible name for this Pi on a network" \
"3 Boot Options" "Configure options for start-up" \
"4 Localisation Options" "Set up language and regional settings to match your location" \
"5 Interfacing Options" "Configure connections to peripherals" \
"6 Advanced Options" "Configure advanced settings" \
"7 Update" "Update this tool to the latest version" \
"8 About npi-config" "Information about this configuration tool" \
3>&1 1>&2 2>&3)
RET=$?
if [ $RET -eq 1 ]; then
do_finish
elif [ $RET -eq 0 ]; then
case "$FUN" in
1\ *) do_change_pass ;;
2\ *) do_change_hostname ;;
3\ *) do_boot_behaviour ;;
4\ *) do_internationalisation_menu ;;
5\ *) do_interface_menu ;;
6\ *) do_advanced_menu ;;
7\ *) do_update ;;
8\ *) do_about ;;
*) whiptail --msgbox "Programmer error: unrecognized option" 20 60 1 ;;
esac || whiptail --msgbox "There was an error running option $FUN" 20 60 1
else
exit 1
fi
done

  看到 do_update 没?显然刚刚的猜想是正确的!好了,对 npi-config 的实现感兴趣的朋友接下来就可以分析该脚本了。在终端上看实在太不方便了,我决定把它拿出来用 Notepad++ 来看,那怎么拿呢?
  打开 SecureCRT,用 SSH 登录 NanoPi-NEO(如果不懂请看​​​上一节​​)。登录成功后按下 ALT+P 就开启新的会话进行 ftp 操作。估计是使用本地用户模式登录 ftp 服务器的,而我是用 root 登录 ssh 的,所以当前目录为root的家目录。好了,登录ftp后就可以使用get来下载文件了,操作如下:

sftp> ls
mjpg-streamer Music npi-config test.pcm
sftp> pwd
/root
sftp> get npi-config/npi-config
Downloading npi-config from /root/npi-config/npi-config
100% 19KB 19KB/s 00:00:00
/root/npi-config/npi-config: 20247 bytes transferred in 0 seconds (19

  如果下载成功后不知道文件被存放到哪,可以在 SecureCRT 上选择“Options”–>“Session Options”–>“SFTP Session”,查看“Local directory”就知道下载的文件所存放的地方了。接下来就可以用 Notepad++ 好好分析 npi-config 啦!


  关于 ftp 的命令,可以输入 help 查看该 FTP 提供所有的命令,这里列出一些常用的命令:

  • pwd: 查询Linux主机所在目录(也就是远程主机目录)
  • lpwd: 查询本地目录(一般指Windows上传文件的目录)
  • ls: 查询连接到当前Linux主机所在目录有哪些文件
  • lls: 查询当前本地上传目录有哪些文件
  • lcd: 改变本地上传目录的路径
  • cd: 改变远程上传目录
  • get: 将远程目录中文件下载到本地目录
  • put: 将本地目录中文件上传到远程主机(Linux)
  • quit: 断开FTP连接


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
f3Rna93cIAZ8