Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

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

$
0
0

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

sudo npi-config

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

这里写图片描述

图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 seconds before reloading npi-config

  于是,猜测 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 KB/s)

  如果下载成功后不知道文件被存放到哪,可以在 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连接
作者:luckydarcy 发表于2017/4/26 23:44:01 原文链接
阅读:59 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>