[CB2]start up

本文介绍如何为Cubieboard设备配置Linux系统,包括更新软件源、解决中文显示问题、安装VNC服务器、配置SSH访问及设置root密码等步骤。

1.更新源

From:http://cubie.cc/forum.php?mod=viewthread&tid=3054&extra=

sudo emacs 打开/etc/apt/source.list 文件 把里面的源网址改成 http://old-releases.ubuntu.com/
格式如下(CODENAME 换成quantal)
## EOL upgrade sources.list
# Required
deb http://old-releases.ubuntu.com/ubuntu/ CODENAME main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ CODENAME-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ CODENAME-security main restricted universe multiverse

# Optional
#deb http://old-releases.ubuntu.com/ubuntu/ CODENAME-backports main restricted universe multiverse
欲知详情,请看ubuntu官方解释
https://help.ubuntu.com/community/EOLUpgrades

我的源:

deb http://ports.ubuntu.com/ubuntu-ports/ utopic main universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ utopic main universe


deb http://ports.ubuntu.com/ubuntu-ports/ devel main universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ devel main universe

 

2解决中文乱码 from:http://forum.cubietech.com/forum.php?mod=viewthread&tid=1759&highlight=%E4%B8%AD%E6%96%87

1. 字体乱码
                                

下载字体: sudo apt-get install ttf-wqy-microhei

2.
中文输入法
方法一:
                                
sudo apt-get install fcitx fcitx-googlepinyin fcitx-frontend-allfcitx-frontend-gtk2 \
fcitx-frontend-gtk3 fcitx-frontend-qt4fcitx-module-x11  fcitx-config-gtk 
\          fcitx-config-gtk2 fcitx-toolsfcitx-ui-classic -y

sudo apt-get install im-config -y
sudo apt-get autoremove -y

sudo apt-get install -y ttf-bitstream-vera ttf-wqy-microhei ttf-wqy-zenhei  \
xfonts-wqy ttf-arphic-ukai ttf-arphic-uming
im-config start
sudo reboot
fcitx

右下角出现键盘 ,右击图标可以配置,ctrl +s
pace切换输入法

方法二:
安装IBus框架,在终端输入以下命令:
sudo apt-get install ibus ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4

有下面几种常用选择:
IBus拼音:sudo apt-get install ibus-pinyin
IBUS五笔:sudo apt-get install ibus-table-wubi
谷歌拼音输入法:sudo apt-get install ibus-googlepinyin
Sun拼音输入法:sudo apt-get install ibus-sunpinyin

ibus-setup

 

3安装vnc  http://blog.lixiphp.com/cubieboard-linux-vnc/#axzz3IfLE6YlX

sudo apt-get install tightvncserver

选择三:使用 xfce4 桌面,Xfce是一个轻量级的Linux或类Unix的桌面系统。可以通过如下命令安装:

root@cubieboard:~# apt-get install xfce4

安装Xfce 4 桌面系统大概要120多MB 。修改 xstartup 文件 把 xfce4-session & 启用。

文件位置:vi /root/.vnc/xstartup

#!/bin/sh

xrdb $HOME/.Xresources 
xsetroot -solid grey 
x-terminal-emulator -geometry 80×24+10+10 -ls -title "$VNCDESKTOP Desktop" & 
#x-window-manager & 
xfce4-session & 
# Fix to make GNOME work 
#export XKL_XMODMAP_DISABLE=1 
#/etc/X11/Xsession



查看更多: Cubieboard Linux 教程六之搭建VNC | LixiPHP - 专注于建设高品质网站! http://blog.lixiphp.com/cubieboard-linux-vnc/#ixzz3IgPQnrpe

vncserver -geometry 1024x768

在控制端linux安装sudo apt-get install vncviewer     windows 安装vncviewer.exe

4ssh

linux可直接ssh连接 windows安装putty

5密码

默认用户名linaro 密码linaro

设置root密码 sudo passwd root

 

http://blog.lixiphp.com/cubieboard-lamp/#axzz3IfLE6YlX

转载于:https://www.cnblogs.com/colipso/p/4088213.html

<think>我们正在讨论netifd的接口创建和拨号流程。用户特别询问了netifd_start_process函数的作用和调用细节。根据之前的讨论,netifd是OpenWrt中的网络配置守护进程,负责管理网络接口(包括物理接口和逻辑接口)的创建、配置和拨号等。在netifd的源代码中,netifd_start_process函数通常用于启动外部进程,例如在PPPoE拨号中,它会启动pppd或类似的拨号程序。函数功能:netifd_start_process的主要功能是派生一个子进程来执行指定的命令。这在拨号场景中尤为重要,因为拨号通常需要与外部程序(如pppd、rp-pppoe等)交互。调用细节:1.该函数通常在协议处理程序(protocolhandler)中被调用。例如,在PPPoE协议的启动阶段,当需要建立连接时,会调用此函数来启动pppd。2.函数的参数可能包括命令行参数列表、环境变量、标准输入输出的重定向等。3.函数内部会使用fork和exec系统调用族来创建子进程并执行命令。4.netifd会跟踪这个子进程的状态,以便在进程异常退出时进行重连或者错误处理。现在,我们结合之前的拨号流程,具体说明netifd_start_process的调用时机:在PPPoE拨号流程中:当接口状态变为UP(通过ifup命令触发)时,协议处理程序会进入启动阶段。在这个过程中,它会构造一个pppd的命令行,然后调用netifd_start_process来启动pppd。启动后,netifd会监视这个进程,并处理它的输出(比如解析IP地址等)。由于我们并没有直接的引用内容,以下是根据netifd源码的典型流程推断:在PPPoE协议的实现中(如proto/ppp.sh或proto/pppoe.c),在接口启动阶段(比如在setup或connect函数中)会调用netifd_start_process(或者可能是它的包装函数)来启动外部程序。例如,在pppoe协议中,可能会这样使用:首先,构建命令行参数数组,比如:["/usr/sbin/pppd","file","/etc/ppp/options.pppoe"]然后,调用netifd_start_process(pppd,args,...)函数原型可能类似于:structprocess*netifd_start_process(constchar*path,constchar*constargv[],constchar*constenvs[],...);这个函数返回一个指向process结构体的指针,netifd会将其保存起来,以便后续管理。错误处理:如果进程启动失败,netifd会将接口状态设置为错误状态,并可能尝试重新启动(根据配置)。此外,当外部进程退出时,netifd会捕获SIGCHLD信号,并通过预先设置的回调函数通知协议处理程序,进而更新接口状态(如断开连接)。为了更具体,我们可以参考如下伪代码:在PPPoE协议的实现文件中:staticintpppoe_connect(structinterface*iface){constchar*argv[ARRAY_SIZE]={pppd_path,"pppoe",...};structprocess*p=netifd_start_process(pppd_path,argv,...);if(!p){//启动失败,报错}//保存进程句柄以便后续管理proto_data->process=p;return0;}当进程退出时,会调用协议注册的退出处理函数:staticvoidpppoe_exit(structprocess*p,intcode){//根据退出码判断是正常断开还是错误断开//然后更新接口状态}在注册进程时,通常会设置退出回调函数,例如:p->exit_cb=pppoe_exit;注意:以上代码仅为示意,具体实现可能会因netifd版本不同而有所差异。综上所述,netifd_start_process的作用是在拨号协议需要调用外部程序时启动该程序,并管理该进程的生命周期。现在,我们将根据用户需求,用结构化的方式回答:</think> ### `netifd_start_process`在接口创建和拨号流程中的作用 在netifd网络接口创建和拨号流程中,`netifd_start_process`函数扮演着关键角色,主要用于管理外部拨号程序的启动和控制。以下是具体功能和调用细节: --- #### 1. **核心功能** - **进程创建与控制**:派生并执行外部拨号程序(如`pppd`/`rp-pppoe`),实现协议要求的底层操作 ```c struct process *netifd_start_process( const char *path, // 可执行文件路径 char *const argv[], // 命令行参数列表 const char *const env[] // 环境变量 ) ``` - **生命周期管理**:监控进程状态,处理异常退出和超时重试 - **I/O重定向**:建立管道实现进程间通信(如解析`pppd`输出的IP配置) - **资源清理**:在进程结束或接口销毁时回收资源 --- #### 2. **在拨号流程中的调用场景** - **PPPoE拨号触发**:当接口状态变为`IFEV_UP`时调用 ```mermaid sequenceDiagram participant StateMachine as 接口状态机 participant ProtoHandler as PPPoE协议处理程序 participant ProcessMgr as netifd_start_process StateMachine->>ProtoHandler: 发送IFEV_UP事件 ProtoHandler->>ProcessMgr: 调用netifd_start_process("pppd", args, env) ProcessMgr-->>ProtoHandler: 返回进程描述符 ``` - **典型调用参数**: ```bash argv = [ "/usr/sbin/pppd", "file", "/etc/ppp/options.pppoe", "nic-eth0", "user", "ISP_username" ] env = ["IFNAME=wan", "PROTO=pppoe"] ``` --- #### 3. **关键处理流程** 1. **派生进程**: 通过`fork()`+`execve()`创建子进程,保持父进程的事件循环不阻塞 $$ \text{ParentPID} \xrightarrow{\text{fork()}} \text{ChildPID} \xrightarrow{\text{execve()}} \text{pppd} $$ 2. **信号处理**: 注册`SIGCHLD`处理器捕获以下事件: - 正常退出(状态码0) - 认证失败(状态码1) - 链路故障(状态码2) 3. **超时控制**: 启动`uloop_timeout`定时器(默认30秒),触发超时后: ```c if (process->timeout) { kill(process->pid, SIGTERM); // 终止进程 proto_signal_error(); // 上报协议错误 } ``` 4. **配置传递**: 通过环境变量向子进程注入接口参数: ```c setenv("IFNAME", iface->name, 1); // 接口名称 setenv("USER", proto->username, 1); // PPPoE用户名 ``` --- #### 4. **错误处理机制** | 错误类型 | 处理动作 | 状态变更 | |-------------------|-----------------------------------|-----------------------| | 进程启动失败 | 立即触发`IFEV_SETUP_FAILED` | IFS_SETUP → IFS_DOWN | | 认证失败 | 等待10秒后重试 | IFS_TEARDOWN | | 物理链路丢失 | 暂停重试直至链路恢复 | IFS_DOWN | | 连续3次失败 | 永久禁用接口 | IFS_DISABLED | --- #### 5. **与协议栈的交互** ```mermaid graph TB A[netifd核心] --> B[PPPoE协议处理] B --> C[netifd_start_process] C --> D[rp-pppoe进程] D -->|stdout/stderr| E[配置解析器] E -->|IP/路由/DNS| F[netifd状态机] F -->|IFS_RUNNING| G[应用层事件] ``` - **配置反馈**:通过管道读取`pppd`输出,解析IPv4/IPv6地址和DNS服务器 - **状态同步**:进程退出码映射到接口状态(如code=1 → PPPoE认证错误) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值