[TOC]

刷系统

  1. 我要刷的是debian,image位于百度云,刷系统到nand需要phoenixsuit软件,下载地址
  2. 刷系统的时候先关掉ct电源,电脑中选中需要刷的image文件,摁住FEL线,连接otg线,然后开始刷机
  3. 刷完后,连接网线,然后使用ssh连接到ct

开启网络连接

  1. 如果是有线,直接连接开机就行,默认DHCP自动获取ip,然后SSH连接就行,也内置的。

  2. 特殊情况下可以使用TTL线,接线如下:黑色——GND,红色——不接,绿色——RX,白色——TX 然后使用shell连接,先去电脑设备管理器里找到所用端口,比如COM7 连接的时候选择SERIAL协议,然后在SERIAL配置里选择Port7,配置如下:QQ截图20150104035945 然后连接

  3. 无线的话,使用ttl线连接好,ct已经内置wifi模块,ifconfig查看是否加载,类似wlan0,如果没有,执行$modprobe bcmdhd,不过ct这个版本的已经写到/etc/modules了,如果没有还需要写到这里。

  4. 为了访问方便,需要在路由器给ct设置为静态IP。然后还需要到/etc/network/interfaces修改eth0为静态方式:

    iface eth0 inet static
    address 192.168.0.150
    netmask 255.255.255.0
    gateway 192.168.0.1
    
  5. 编辑/etc/network/interfaces,现有版本里已经写好了,修改好自己的SSID和password就行,不过这种只支持一个SSID。然后重启就行。

  6. 不过我们一般要使用多个热点,在不同地方可以自动连上,参考这个文章

  7. 总结一下使用无线的流程。 首先需要有个AP(热点)。 然后设备需要有无线网卡设备,usb无线网卡或者内置的wifi模块,在ct里内置了wifi模块,驱动就不用管了。否则还得手动添加驱动,

    apt-get install wpasupplicant

    如果用了usb无线网卡,首先lsusb查看设备是否被usb设备识别。然后使用iwconfig查看是否被内核加载,如果没有看到则需要加载正确驱动了。 检测完后,启动网卡,ifconfig wlan0 up 然后搜索周围的AP,iwlist wlan0 scan 涉及到两个命令,ifconfig wlan0 up和ifconfig wlan0 down开启或关闭网卡wlan0 然后看看网卡的配置文件,在RedHat里是放在/etc/sysconfig/network-scripts目录下的一堆文件里的,但是在debian里是放在/etc/network/interfaces里,无论多少配置都放在同一个文件里。

    auto lo eth0 #自动配置加载lo和eth0
    iface lo inet loopback #为lo接口设置为一个loopback本地回环地址
    iface eth0 inet dhcp #为eth0设置为通过dhcp自动获取ip,也可以是static静态地址自己配置参数
    
    #allow-hotplug wlan0 #表示wlan设备可以热插拨,一般USB无线网卡会有这个选项
    auto wlan0
    iface wlan0 inet dhcp
    pre-up ip link set wlan0 up #这儿有pre-up、up、post-up、pre-down、down、post-down等一组命令,分别定义加载网卡各个时刻执行的操作,这个代表启动前执行ip link set wlan0 up命令
    pre-up iwconfig wlan0 essid luca #同理,搜索essid为luca的网络
    wpa-ssid luca
    wpa-psk postcard
    

    修改后然后执行/etc/init.d/networking restart生效。 其实如果要使用多个网络,还可以使用其他方法,例子如下:

    auto lo
    iface lo inet loopback
    iface eth0 inet dhcp
    auto wlan0
    allow-hotplug wlan0
    iface wlan0 inet dhcp
    pre-up wpa_supplicant -Dwext -i wlan0 -c /etc/wpa_supplicant.conf -B
    

    然后创建/etc/wpa_supplicant.conf

    ctrl_interface=/var/run/wpa_supplicant
    #ap_scan=2
    
    network={
        id_str="Office"
        ssid="1"
        key_mgmt=WPA-PSK
        psk="12345678"
    }
    
    network={
        id_str="Home"
        ssid="2"
        key_mgmt=WPA-PSK
        psk="12345678"                                                                                                                                                              
    }
    

    后面的network部分也可以使用这个命令来生成追加

    wpa_passphrase [SSID][密码] >> /etc/wpa_supplicant/wpa_supplicant.conf
    

    修改后然后执行/etc/init.d/networking restart生效。

    *参考资料:

    http://wiki.ubuntu.org.cn/Quick_HOWTO_:_Ch03_:_Linux_Networking/zh#.2Fetc.2Fnetwork.2Finterfaces.E6.96.87.E4.BB.B6

设置为AP

还可以把CT当做AP热点,配合openVPN当做翻W热点,设置的时候上面的配置基本全部推翻重来了。 我们使用桥接的方式,把有线网口的信号转换成无线。

安装HOSTAPD

  1. 安装了hostapd,一般都已经安装了,还需要考虑和无线网卡芯片是否兼容。

    apt-get install bridge-utils

    安装后发现总是在获取IP的时候报错: wlan0: STA 4c:21:d0:1b:02:43 IEEE 802.1X: unauthorizing port Could not set station 4c:21:d0:1b:02:43 flags for kernel driver (errno=11). 耽误了好久,最后发现是hostapd版本不对,就apt-get remove hostapd了,然后重新安装hostapd2.1

    wget https://github.com/igorpecovnik/Cubietruck-Debian/raw/master/bin/hostapd21.tgz
    tar xvzf hostapd21.tgz
    cp hostapd hostapd_cli /usr/sbin
    

    运行hostapd -v显示就是2.1了,但是我当时还报错了,提示找不到库文件libnl.so.1,最后这个1是版本

    apt-get install libnl1
    

    然后重启hostapd

  2. 修改/etc/modules,bcmdhd修改为bcmdhd op_mode=2

  3. 修改/etc/init.d/hostapd,在里面修改DAEMON_CONF=/etc/hostapd.conf

  4. 修改/etc/hostapd.conf配置文件,主要是修改ssid和wpa_passphrase,参数大致如下:

    ssid=lucaServ
    interface=wlan0 #把wlan0当做接入点
    hw_mode=g #802.11G模式
    channel=1 #选用1信道
    bridge=br0 
    
    logger_syslog=0
    logger_syslog_level=0
    
    wmm_enabled=0
    wpa=2
    #preamble=1
    wpa_passphrase=password #密码
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP
    auth_algs=1
    macaddr_acl=0
    

    *安装hostapd的时候发生了奇怪的事情,service启动总是失败,但是hostapd命令可以启动,查了很久最后发现是以前的配置没有清空,default/hostapd的配置还连着以前错误的conf文件,改了后正常了 *之前hostapd总是有问题,后来看到这个博客里说的版本问题,解决了

桥接

  1. apt-get install bridge-utils

    安装桥接

  2. 修改/etc/network/interfaces,主要是增加桥接配置,去掉wlan0配置

    auto lo
    iface lo inet loopback
    #wired adapter
    iface eth0 inet manual
    #bridge
    auto br0
    iface br0 inet static
    bridge_ports eth0 wlan0
    address 192.168.0.150
    netmask 255.255.255.0
    gateway 192.168.0.1
    
  3. 重启service networking restart

更换国内源

刷好的debian系统为ct定制的:Debian GNU/Linux CTDebian 2.5 wheezy

  1. 使用163源比较快,但是我在测试的时候发现报错了,貌似有些无法访问。否则可以直接wget配置文件替换/etc/apt/sources.list

  2. 使用debian的国内源,替换成如下:

    ## china
    
    deb http://ftp.cn.debian.org/debian/ wheezy main contrib non-free    
    deb-src http://ftp.cn.debian.org/debian/ wheezy main contrib non-free    
    
    deb http://ftp.cn.debian.org/debian/ wheezy-proposed-updates main contrib non-free    
    deb-src http://ftp.cn.debian.org/debian/ wheezy-proposed-updates main contrib non-free    
    
    deb http://ftp.cn.debian.org/debian/ wheezy-backports main contrib non-free    
    deb-src http://ftp.cn.debian.org/debian/ wheezy-backports main contrib non-free    
    
    # debian security updates
    
    deb http://security.debian.org/ wheezy/updates main contrib non-free    
    deb-src http://security.debian.org/ wheezy/updates main contrib non-free    
    
    # multimedia
    
    deb http://deb-multimedia.org wheezy main non-free
    
  3. 使用apt-get update更新源,可能出现W: GPG error: http://deb-multimedia.org wheezy Release: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 07DC563D1F41B907,使用如下两个命令解决:

    gpg --keyserver subkeys.pgp.net --recv-keys 07DC563D1F41B907
    gpg -a --export 07DC563D1F41B907 |apt-key add -
    

    需要把其中的字串替换成上面的

  4. update更新时出现了Hash Sum mismatch错误

    查看最后一条正确log,如:

    Get:2 http://ftp.cn.debian.org wheezy/main armhf Packages [5,687 kB]

    则去sources.list里面屏蔽掉wheezy/main的deb-src或者deb行

  5. update更新出现E: Method rred has died unexpectedly!

    使用如下命令apt-get update -o Acquire::Pdiffs=false

  6. 出现 E: Some index files failed to download. They have been ignored, or old ones used instead.

    找到所有W:的列,比如W: Failed to fetch http://ppa.launchpad.net/gophers/go/ubuntu/dists/wheezy/main/source/Sources 404 Not Found

    则执行add-apt-repository –remove ppa:gophers/go 把所有的W:列都执行了

  7. 之前的源有点混乱,后来找到了中国科学院大学的源,好多了,可以自己定制配置。这是首页

  8. 关于sourcelist的一些解读:来源

    source.list 文件配置例子:

    root@zhu:~# cat 163.list 
    deb http://mirrors.163.com/debian/ wheezy main non-free contrib
    deb http://mirrors.163.com/debian/ wheezy-proposed-updates main non-free contrib
    deb-src http://mirrors.163.com/debian/ wheezy main non-free contrib
    deb-src http://mirrors.163.com/debian/ wheezy-proposed-updates main non-free contrib
    
    1. 第一部分,固定格式deb或deb-src

      deb :二进制包

      deb-src :源码包

    2. 第二部分,为镜像的url,也可以说是源地址的url

      可以是"http://", "ftp://", "file://", 三种格式。,在浏览器打开会发现下面内容:

      ../
      dists/                                            19-Jul-2014 18:08       -
      doc/                                               19-Sep-2014 15:52       -
      indices/                                           16-Aug-2014 03:17       -
      pool/                                              20-Dec-2000 04:10       -
      project/                                           18-Nov-2008 07:05       -
      tools/                                             11-Oct-2012 00:29       -
      README                                             19-Jul-2014 18:04    1061
      README.CD-manufacture                              26-Jun-2010 17:52    1290
      README.html                                        19-Jul-2014 18:05    2594
      README.mirrors.html                                16-Sep-2014 09:52    179K
      README.mirrors.txt                                 16-Sep-2014 09:52     94K
      

      ls -lR.gz

      对url下面常见的目录介绍:

      dists/:该目录包含的是“发行版(distributions),此处是获得debian发布版本的途径。

      pool/:目录为软件包的物理地址,pool目录下面按属性分为三类:main,contrib,non-free,软件包按照源码包的名称的首字母归档,软件包主要有二进制包和源码包

      tools:用于创建启动盘,磁盘分区的小工具

      doc :debian文档

      indices :维护人员文件和重载文件

      project:开发人员的资源

    3. 第三部分,dibian系统的版本号,

      oldstable :老的稳定发行版,对应dists/目录下较老的版本

      stable :现在的稳定发行版,对于debian来说每个发行版都有一个代号别称:

      debian 6 :squeeze

      debian 7 :wheezy

      testing :目前还处于测试阶段的发行版

      unstable(sid) :不稳定版本

    4. 第四部分,每个对应版本的目录下面都会有三个目录

      main :基本且主要并符合只有软件规范的软件

      contrib:这里头软件虽然可以在 Debian 里头运作,即使本身属于自由软件但多半却是相依于非自由 ( non-free ) 软件。

      non-free :不属于自由软件范畴的软件

      1.找到包含dists和pool的url 如:http://mirrors.163.com/debian/

      2.打开dists 查看里面包含的版本号:如wheezy ,squeeze,stable等

      3.打开pool目录,看里面包含哪些组件目录,一般是,main,contrib,non-free等

      书写格式:

      deb http://mirrors.163.com/debian wheezy man contrib non-free

  9. 一些常用的APT命令

    apt-cache search ——package 搜索包

    sudo apt-get install ——package 安装包

    sudo apt-get remove —–package 删除包

    sudo apt-get remove –purge ——package 删除包,包括删除配置文件等

    sudo apt-get update ——更新源

    sudo apt-get upgrade ——更新已安装的包

    sudo apt-get dist-upgrade ———升级系统

    sudo apt-get dselect-upgrade ——使用 dselect 升级

    sudo apt-get autoclean ——定期运行这个命令来清除那些已卸载的软件包的.deb文档

    dpkg -l | grep ‘^ii’ #查看本机软件列表 删除不需要的软件

    apt-get autoremove #清理不需要的依赖软件包

    apt-get clean #清理缓存

安装git&vim

  1. 安装git,按理来说已经装好了,直接点击我的VIM基本配置(长期更新),使用git同步更新

存储开机挂载

  1. 在挂载前如果是新硬盘还需要分区和格式化。

  2. 针对USB和SATA自动挂载,使用脚本开机把dev下的设备挂载到/mnt/label对应文件夹

    vim /etc/udev/rules.d/10-usbstorage.rules
    

    加入

    KERNEL!="sd*", GOTO="media_by_label_auto_mount_end"
    SUBSYSTEM!="block",GOTO="media_by_label_auto_mount_end"
    IMPORT{program}="/sbin/blkid -o udev -p %N"
    ENV{ID_FS_TYPE}=="", GOTO="media_by_label_auto_mount_end"
    ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
    ENV{ID_FS_LABEL}=="", ENV{dir_name}="Untitled-%k"
    ACTION=="add", ENV{mount_options}="relatime,sync"
    ACTION=="add", ENV{ID_FS_TYPE}=="vfat", ENV{mount_options}="iocharset=utf8,umask=000"
    ACTION=="add", ENV{ID_FS_TYPE}=="ntfs-3g", ENV{mount_options}="iocharset=utf8,umask=000"
    ACTION=="add", RUN+="/bin/mkdir -p /mnt/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /mnt/%E{dir_name}"
    
    ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /mnt/%E{dir_name}", RUN+="/bin/rmdir /mnt/%E{dir_name}"
    LABEL="media_by_label_auto_mount_end"
    

  3. 插入了TF卡设置开机自动挂载到/data,首先要mkdir /data 为了保证LINUX的权限机制完整呈现,我把TF卡格式化成EXT4了。 在/etc/fstab下增加

    /dev/mmcblk0p1  /data       ext4    defaults       0       0
    

*这个现在会有chown权限不够,还没找到答案(vfat没有不支持linux下的文件系统的权限系统)

生成SSH密钥公钥供使用

  1. 参考利用SSH实现无密码登陆

支持NTFS格式磁盘

  1. apt-get install ntfs-3g

安装SAMBA服务

  1. 参考安装SAMBA服务

安装LNMP

  1. 检查时间,更新时区:cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

  2. apt-get update apt-get install nginx apt-get install php5-fpm apt-get install php5-cli apt-get install php5-curl apt-get install php5-gd apt-get install php5-mcrypt apt-get install php5-mysql apt-get install php5-cgi apt-get install mysql-server

  3. MYSQL优化,首先修改datadir,以及相关参数

    [mysqld]
    datadir = /data/mysql
    key_buffer = 64k
    max_allowed_packet = 1M
    thread_stack = 64K
    如出现1436错误,将 thread_stack 项参数调大
    thread_cache_size = 4
    query_cache_limit = 1M
    

    然后把原来/var/lib/mysql的内容复制到/data/mysql中

    cp -ir /var/lib/mysql/ /data/
    

    然后重启mysql

  4. php修改/etc/php5/fpm/php-fpm.conf

    process.max=10
    
  5. nginx修改 首先vim /etc/nginx/nginx.conf

    worker_processes 1;
    worker_connections 128;
    
    gzip on;
    gzip_disable "msie6";
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
    

    然后在http中添加

    client_max_body_size 50m;
    

    然后备份/etc/nginx/sites-available/default ,替换成

    server {
        listen 80;
    
        root /data/wwwroot/labs.cn; 
        index index.html index.htm index.php default.html default.htm default.php;
    
        # Make site accessible from http://localhost/
        server_name labs.cn;
    
        if (!-e $request_filename)
        {
            rewrite ^(.*)$ /index.php$1 last;
        }
    
        location ~ .*.php(/.*)*$ {
            fastcgi_split_path_info ^(.+.php)(/.+)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
        }
    }
    

    这儿其实有个对应关系,如果是default,则在site-enabled/中存在一个同名软连接连接到site-available/下。 如果要建立一个新虚拟主机,只要在available目录下拷贝一个default,修改成aa.com,里面修改完。 建立软连接ln -s /etc/nginx/sites-available/a.cn /etc/nginx/sites-enabled/a.cn。 然后重启就行了。

    然后重启各个服务

安装百度云同步工具

使用bypy在百度云里面建立一个应用,然后把文件放到这个目录进行同步。

  1. 安装pip,运行apt-get install pip貌似会有问题,使用另外一个方法

    切换到~

    wget https://bootstrap.pypa.io/get-pip.py
    python get-pip.py
    
  2. 安装py requests库

    pip install requests
    
  3. 在~安装bypy,

    git clone https://github.com/houtianze/bypy.git
    
  4. 具体命令参考github的项目。

    需要注意的是远程文件夹,写的是/apps/bypy/下的路径,比如比对:

    python bypy.py compare music /root/bypy
    

比较百度云music文件夹和本地bypy下的不同

LINUX支持EXFAT

挂载U盘的时候出现exfat格式不被识别,需要安装exfat格式支持后mount

apt-get update && apt-get install exfat-fuse && apt-get install exfat-utils

安装软件

这个直接看看这个

软件包的管理是使用Ubuntu最重要的工作之一,这篇文章将介绍基本的软件包管理命令。

  • 使用dpkg或apt-get安装软件包
  • 使用dpkg或apt-get移除软件包
  • 使用dpkg-query, apt-cache, apt-file查找软件包
  • 使用apt-get进行更新操作

安装软件包

#dpkg

如果一些软件只提供.deb软件包,下载到本地后那么可以用dpkg来安装,但它不解决包的依赖关系; 例如前往www.viber.com下载viber的deb安装包,并通过dpkg来安装:

$ sudo dpkg -i viber.deb

##通过 --get-selections 检测软件是否安装成功
$ dpkg --get-selections | grep viber
viber                                    install

#apt-get

大多数情况,使用apt-get来安装软件,可以轻易的解决软件的安装,因为它可以解决其中各种复杂的依赖关系:

$ sudo apt-get install java

apt-get从软件源中下载指定的软件包和相关的依赖包后,安装过程主要也是由dpkg来完成。

移除软件包

#dpkg

移除软件包,保留配置文件:

$ sudo dpkg -r viber

完全移除软件包:

$ sudo dpkg -P viber

#apt-get

$ sudo apt-get remove apache2   ##移除apache2软件包和它的依赖包,但保留配置文件

$ sudo apt-get  purge apache2   ##完全移除apache2软件包

$ sudo apt-get remove   ##卸载所有自动安装且不再使用的软件包, 谨慎使用

查询软件包

#dpkg-query

查询指定的包是否被安装,使用-l或–list选项:

$ dpkg-query -l vim

||/ Name           Version        Description
+++-==============-==============-============================================
ii  vim            2:7.3.429-2ubu Vi IMproved - enhanced vi editor

假如你想知道/etc/vim/vimrc这个文件是从哪一个软件包安装而来的,使用-S或–search选项:

$ dpkg-query -S /etc/vim/vimrc
vim-common: /etc/vim/vimrc

$ dpkg-query -S /etc/init.d/dns-clean
pppconfig: /etc/init.d/dns-clean

假如要查看软件包安装时安装到系统的文件列表,使用-L或-listfiles选项:

$ dpkg-query -L vim
/.
/usr
/usr/bin
/usr/bin/vim.basic
/usr/share
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/vim
/usr/share/bug
/usr/share/bug/vim
/usr/share/bug/vim/presubj
/usr/share/bug/vim/script
/usr/share/doc
/usr/share/doc/vim

#apt-cache

使用apt-cache search搜索软件包,可以按关键字查找软件包,当软件源中有,就会列出匹配的包的名称和简要描述,例如:

$ apt-cache search chkco
chkconfig - system tool to enable or disable system services

$ apt-cache search sublime
libsublime-dev - development files for the sublime user interface library
libsublime5 - User interface library

如果要显示指定软件包的信息,包括版本号,安装状态和包依赖关系等,可以使用apt-cache show,例如:

$ apt-cache show sysv-rc-conf
Package: sysv-rc-conf
Priority: optional
Section: universe/admin
Installed-Size: 104
Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
Original-Maintainer: Francesco Pedrini <francesco.pedrini@gmail.com>
Architecture: all
Version: 0.99-6
...

当需要了解某个软件包依赖于其他哪些包时,可以使用apt-cache depends来查询包依赖关系:

$ apt-cache depends subversion
subversion
  Depends: libsvn1
  Depends: libapr1
  Depends: libc6
  Depends: libsasl2-2
  Suggests: subversion-tools
  Suggests: db4.8-util
  Suggests: patch

#apt-file

上面说到dpkg-query -L可以查询软件包安装时安装到系统的文件列表; 这里介绍apt-file,它可以查询已安装的和未安装的软件包包含哪些文件。需要先进行apt-file的安装和初始化,默认没有被安装:

$ sudo apt-get install apt-file
$ sudo apt-file update

apt-file安装和初始化后,例如查询sysv-rc-conf软件包包含的文件:

$ apt-file list sysv-rc-conf
sysv-rc-conf: /usr/sbin/sysv-rc-conf
sysv-rc-conf: /usr/share/doc/sysv-rc-conf/README
sysv-rc-conf: /usr/share/doc/sysv-rc-conf/TODO
sysv-rc-conf: /usr/share/doc/sysv-rc-conf/changelog.Debian.gz
sysv-rc-conf: /usr/share/doc/sysv-rc-conf/copyright
sysv-rc-conf: /usr/share/man/man8/sysv-rc-conf.8.gz

查找某个文件属于哪个软件包,上面说到可以用dpkg-query --search,也可以使用apt-file search 来实现:

$ apt-file search /etc/environment 
environment-modules: /etc/environment-modules/modulespath

$ apt-file search /etc/vim/vimrc
vim-common: /etc/vim/vimrc
vim-tiny: /etc/vim/vimrc.tiny

更新操作

#apt-get

$ sudo apt-get update #更新软件源

$ sudo apt-get upgrade 
#只升级现有的软件包,如果可升级的软件包依赖于新的软件包,则该软件包不会被升级

$ sudo apt-get dis-upgrade 
#会升级所有可升级的软件包,如果可升级的软件包依赖于新的软件包,新的软件包也会被安装

以上是最基本的软件包管理命令,还有很多其它的选项和命令,通过man page即能进一步研究和探讨。