eno口 linux
2017-03-30 16:22:38 u010558281 阅读数 5064

起因:自己装了最新版本的ubunt发行版,今天发现无法上网,在解决联网故障时发现网卡不再是传统的eth0的方式,本机显示为eno1。奇了个怪了,纳了个闷了,google一探究竟!
查看本机ubuntu版本命令:
cat etc/issue
为什么改名呢?参考Predictable Network Interface Names

  • 可预测的网络接口命名
    自从 v197 systemd/udev 开始,系统可以为本地的Ethernet、WLAN和WWAN接口自动地分配可预测的、稳定的网络接口名称。该规范脱离了传统的命名机制(eth0,eth1,wlan0等),但是修复了许多问题。
  • 原因
    在传统的网络接口命名规则下,是由内核简单地从eth0开始为可被驱动探索到的设备分配名字(eht0,eth1…)。由于这些驱动不能够被现在技术所预测,意味着多个网络接口都可以被分配名为“eth0”、“eth1”这样的名字,这种方式存在一种隐患,就是一种接口可能是以“eth0”启动,但是结束时就变成了“eth1”.不可预测的命名规则存在着严重的安全威胁。
    为了修复这个问题,许多方案被提出和实现。很长一段时间,udev都是根据Mac地址来分配永久了“ethX”名字。这导致了很多问题:这需要一个可写的但是通常不允许的root目录;由于系统的无边界性,当root一个OS镜像的时候可能会改变镜像的配置信息;许多系统的Mac地址并不是固定的。其中最大的问题是用户空间和系统内核对设备命名的冲突。
    另一种解决方案就是“biosdevname”,该方案通过找到固件中固定的拓扑信息然后利用它们分配固定的接口。这个命名机制同/dev/*/by-path/ symlinks的方式很相似。大多数情况下,biosdevname 从底层的内核设备定位机制中分离了出来。
    最后,许多观点迟滞根据用户选择的名字对接口重新命名,切断同Mac和物理位置的联系。这是一个非常好的选择,但是存在一个隐藏的问题就是用户获得了选择和分配这些名字的权利。
    我们相信由“biosdevname”机制已领的泛化机制是一个很好的选择。基于固件、拓扑和位置信息分配固定的名字有一个巨大的优势,名字是全自动地、可预测的,即使硬件添加或删除也不影响。
  • V197添加了什么
    systemd 197为许多命名策略新增了许多本地化的支持到 systemd/udevd 并实现了一个类似于“biosdevname”的机制。五种网络接口的命名机制通过udev得到了支持:
1、Names incorporating Firmware/BIOS provided index numbers for on-board devices (example: eno1)
2、Names incorporating Firmware/BIOS provided PCI Express hotplug slot index numbers (example: ens1)
3、Names incorporating physical/geographical location of the connector of the hardware (example: enp2s0)
4、Names incorporating the interfaces's MAC address (example: enx78e7d1ea46da)
5、Classic, unpredictable kernel-native ethX naming (example: eth0)

默认情况下,如果固件信息是可用有效的 systemd v197 基于1策略命名接口,如果固件信息是可用有效的跳到2,如果可用跳到3,其他情况下跳到5。策略4默认不能用,不过如果用户选择时依旧有效。
这种合并的策略作为最新的一种手段,意味着,如果系统已经安装了biosdevname,该命名机制优先执行。如果用户在内核中加入了udev规则,改变了内核设备的名字,这种方式同样优先执行。另外,启发特殊的命名机制也起作用。

  • 优势
    1、稳定的接口名字
    2、硬件的增删不影响接口名字
    3、内核或驱动加载改变的时候不影响接口名字
    4、替换网卡不会改变接口的名字
    5、无需用户配置,名字可自动设定
    6、接口名字可预测
    7、无状态操作,改变硬件配置不会影响名字
    8、网络接口命名方式更加贴近symlinks的命方式
    9、对x86架构无约束,适用于多种架构
2008-04-09 09:04:00 djbtestingsky 阅读数 884
 测试空间旗下大头针出品

U盘上装Linux,多么不可思议!

在Windows下安装slax Linux到U盘上
slax Linux是slackware Linux 的Mini版本,只有190M,可以把linux安装在U盘上,号称是口袋
Linux。
下面就是教大家如何在windows环境下安装slax到U盘上。
安装前必须的软件:
1. 256M或者更大的USB盘
2.SLAx-6.0.3.tar
3.winRAR or 其他文件解压缩工具

安装步骤:
1.以fat或者fat32的格式 格式化U盘
2.下载SLAX-6.0.3.tar(一定是tar包,而不是iso文件)
3.用winRAR解压缩SLAX-6.0.3.tar中的文件到USB盘的根目录下
4.解压缩后,找到U盘上boot文件夹,然后双击bootinst.bat脚本文件

5.按照屏幕上指示,就能使USB可引导Linux操作系统。
6.USB的安装脚本运行完,重起机器,修改BIOS的开机启动选项,将其改为从 USB启动。
7.保存BIOS设置。重新启动机器,你就可以通过USB启动SLAX Linux操作系统了。

 

按照上面的步骤,我在不同的6台机器上安装,只有在我自己工作的机器上好用。
可能是因为,只有工作机器上的装的是英文版的XP系统。
大家试试。
slax的下载网址:
http://www.slax.org/get_slax.php?download=tar

最好用讯雷,flashget等下载软件下载

2016-10-31 16:15:18 qq504196282 阅读数 195

一 终端设备的由来

    最传统的终端控制台——VT100(VT100是串行口接的字符终端(Text Terminal),作为控制台)

     现代的控制台终端——键盘+显示器

虚拟终端仿真(现在都是通过应用程序模拟一个终端,叫虚拟终端,如WINDOWS的超级终端)


二 linux设备

tty是Teletype的缩写,指终端设备
tty是一种字符型设备(c设备),有多种类型。设备名放在/dev/下,终端特殊设备文件一般有以下几种:

/dev/ttySn
/dev/tts/0或/dev/ttyS0、/dev/tts/1或/dev/ttyS1等

串口终端Serial Port Terminal
对应于的COM1、COM2等
设备号分别是(4,0)、(4,1)等

/dev/ttyn
tty1 –tty6

控制台终端/虚拟终端
当你在控制台上登录时,使用的是tty1,使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去

tty0

tty0是“当前”所使用虚拟终端的一个别名,指向当前正在使用的虚拟终端tty1-tty6之一

dev/tty 

/控制台终端
类似于tty0,也是当前终端的链接或别名

/dev/pty/

 

 

 

tty/ACM0

tty/USB0

伪终端(Pseudo Terminal)
通过使用适当的软件,就可以把两个甚至多个伪终端设备连接到同一个物理串行端口上

 

一般为USB设备

一般为usb转串

 

 


三 minicom安装配置

1)安装

      终端中输入sudo apt-get install minicom

2)配置

      输入sudo minicom -s,注意(一定要加sudo,否则配置完后会出现cannot write to/etc/minicom/minirc.dfl的权限问题),弹出下图设置界面

     

   使用方向键 选择 Serial port setup,按Enter键,进入设置环境,如下图

   

输入a或者A,选择串口设备,在这里我使用的是USB转串口,并且开发板连接到了COM1上,将/dev/tty8修改为/dev/ttyUSB0

注意:使用USB转串口,那么串口COM1对应ttyUSB0, COM2对应ttyUSB1;

如果没有使用USB转串口,而是直接使用串口,那么串口COM1对应ttyUSB0, COM2对应ttyUSB1。

配置完串口设备后,按Enter键,再输入E,配置波特率,按默认配置即可  115200 8N1 (波特率:115200,数据位:8,奇偶校验位:N 无,停止位:1)。 配置完波特率,按Enter键,再输入F,配置硬件流控,选择NO

再继续配置软件流控,也选择NO。都配置完后,按下Enter键返回上一界面,选择save setup as dfl(即将其保存位默认配置),再选择Exit,关闭minicom。

使用

  再次输入命令  sudo minicom,是刚才的配置生效,可以看到串口输出信息


四 遇到的问题

环境:主机win764bit,虚拟机VMware8.0 –ubuntu14.04

问题:虚拟机Vmware无法识别USB设备

解决方法:

(1)将主机中”我的电脑“右键(win7)“管理->服务和应用程序->服务”中有关虚拟的服务开启,如下 图所 示。


(2)然后打开虚拟机,在虚拟机设置中对usb控制器进行设置,在连接中勾选所有选项。


注意:因为这里选择的是usb2.0,若你将usb设备插入到电脑上usb3.0的插口,将导致虚拟机可以识别,但是会提示“连接不成功,被主机占用”,因此须将usb设备改插到usb2.0的口上,这样才能成功连接到虚拟机上(笔记本一般2个usb3.0(),一个usb2.0(一般usb标号))

(3)插入usb设备,打开虚拟机,这样就会在虚拟机的右下角显示出已识别的usb设备。


(4)可在“虚拟机->移除设备”中找到识别的usb设备进行连接和移除,若是usb摄像头被连接,就会在 ubuntu的/dev目录下找到对应的设备文件video0/video1。



2018-07-29 18:33:45 u012251305 阅读数 124

Problem

想测试 udp 端口连通性,但是 telnet 连接被拒绝,用 telnet 似乎不对。

Solution

appledeMacBook-Pro:~ xxx$ nc -vuz x.x.x.x 514
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif (null)
    src x.x.x.x port 52491
    dst x.x.x.x port 514
    rank info not available

Connection to x.x.x.x port 514 [udp/syslog] succeeded!

说明该 udp 端口正常监听。

Reference

测试udp 端口是否开放

2013-08-26 08:54:00 yangzhongxuan 阅读数 2018

目前要做一个在嵌入式平台上的USB口的热插拔事件。

经过我现在的分析总结目前有如下方法:

1,定时检查/proc/scsi/scsi文件

此方法只能在PC上,但在嵌入式平台上不可用。

2,netlink方式

使用netlink.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <sys/un.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <linux/types.h>
#include <linux/netlink.h>
#include <errno.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>

#define UEVENT_BUFFER_SIZE 2048

static int init_hotplug_sock()
{
  const int buffersize = 1024;
  int ret;

  struct sockaddr_nl snl;
  bzero(&snl, sizeof(struct sockaddr_nl));
  snl.nl_family = AF_NETLINK;
  snl.nl_pid = getpid();
  snl.nl_groups = 1;

  int s = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
  if (s == -1)
  {
        perror("socket");
        return -1;
  }
  setsockopt(s, SOL_SOCKET, SO_RCVBUF, &buffersize, sizeof(buffersize));

  ret = bind(s, (struct sockaddr *)&snl, sizeof(struct sockaddr_nl));
  if (ret < 0)
  {
        perror("bind");
        close(s);
        return -1;
  }

  return s;
}

int main(int argc, char* argv[])
{
  int hotplug_sock = init_hotplug_sock();

  while(1)
  {
      /* Netlink message buffer */
      char buf[UEVENT_BUFFER_SIZE * 2] = {0};
      recv(hotplug_sock, &buf, sizeof(buf), 0);
      printf("%s\n", buf);

     /* USB 设备的插拔会出现字符信息,通过比较不同的信息确定特定设备的插拔,在这添加比较代码 */
  }
  return 0;

}

经过测试发现只能实现插与拔,但是无法具体到具体是什么设备。

3,使用mdev。

此方法相当麻烦,现在在研究中。

4,使用最原始的解析文件方式

此方法相当麻烦,生成很多文件。

就是用cat /proc/bus/usb/devices的信息生成的文件进行解析。

目前我已经完成此功能。虽然能用,但是效率太低。

linux com口配置

阅读数 2

学习linux之GPIO口

阅读数 630

LINUX 操作GPIO口

阅读数 66

没有更多推荐了,返回首页