Ubuntu下各种服务搭建及操作技巧

Ubuntu下搭建TFTP

1、安装软件包

sudo apt-get install tftpd tftp xinetd

2、建立配置文件

/etc/xinetd.d/下建立一个配置文件tftp

sudo vi /etc/xinetd.d/tftp

内容如下

  1. service tftp  
  2. {  
  3.     socket_type = dgram  
  4.     protocol = udp  
  5.     wait = yes  
  6.     user = root  
  7.     server = /usr/sbin/in.tftpd  
  8.     server_args = -s /tftpboot  
  9.     disable = no  
  10.     per_source = 11  
  11.     cps = 100 2  
  12.     flags = IPv4  
  13. }  

3、建立tftp服务文件目录

在上面的配置中有server_args = -s /tftpboot,其中/tftpboot这个目录就是上传文件与下载文件的位置。

sudo mkdir /tftpboot          --创建/tftpboot目录

sudo chmod 777 /tftpboot -R   --设置权限为777

4、重新启动tftp服务

sudo /etc/init.d/xinetd restart  --重启tftp服务器

5、测试

sudo netstat -a | grep tftp      --查看是否启动成功,可以看到udp 0 0 *:tftp *:*



VMware虚拟机中的ubuntu硬盘扩容


1、通过vmUI界面进行扩容基本上是不行的,至少在我的版本上是这样,各种灰色按钮,各种出错;并且,界面扩容失败后若打不开虚拟机,不要慌,只要你扩容之前的那个硬盘文件(我的是ubuntu64.vmdk,全编一个android项目后39G)还在,基本上是可以恢复的,一定要有耐心哟。另外,如果不是服务器级的硬盘,就不要使用快照了,感觉这个功能很坑爹,非常吃硬盘不说,关键是当它吃完你的硬盘后,你想删除快照,对不起,您的硬盘已满,请预留70G空间再删除。于是你这时只有一种选择,就是删掉整个虚拟机。ps:不要试图暴力删除快照,如:删快照到一半时取消,这样会照成你的虚拟机永远进不去也恢复不了,这会使得你在删除整个虚拟机之前丧失备份关键数据的唯一机会。笔者经历了灾难性的数据损失,完全是血的教训。

下面是使用命令行工具扩容。使用vmware提供的命令行工具vmware-vdiskmanager.exe,在windows下运行cmd,转到vmware安装目录,vmware-vdiskmanager.exe可以查看帮助。输入如下命令扩容:vmware-vdiskmanager -x 160Gb "D:\VMware\WinXP\myUbuntu.vmdk"。注:此时要扩容的系统不能在运行,参数 -x表示要扩展虚拟机的硬盘空间,紧随其后的数字是要扩展到的大小。最后是制定要操作的虚拟机磁盘的具体文件。要是路径名中有空格,必须以双括号括起来。

  

 

2、重启虚拟机,发现虚拟机的硬盘是变成50G了,但进入Ubuntu系统后,用df -ah查看发现硬盘还是原先那么大。接下来要分区、指定文件系统,ubuntu才能识别。

 

3、分区。以root权限进ubuntu

fdisk -l,打印当前磁盘分区表,这时我们可以看到磁盘总量的确增加到了前面设置的大小,但是分区还是只有那几个原有的分区。

fdisk /dev/sda         sda就是经过扩容的SCSI硬盘,IDE类型的硬盘对应为hda,这个命令告知下面对该硬盘进行操作。

m,列出帮助

n,添加新分区

p,创建主分区

3,或直接回车选择默认分区号,应该也是3

直接回车,采用默认Start值,此处不选择默认值会浪费空间

再回车,采用默认End

注意!!此时注意看清end - start的大小,如果只有很小的一段空间,需要再添加一个分区,按上述步骤执行,NP,回车

v,检查为分配磁盘大小,若是只有几M或更小则成功。

w,保存并退出,分区完毕

重启ubuntu

 

4、格式化新添加的分区:

mkfs -t ext3 /dev/sda3

 

5、挂载该分区:

手动挂载:sudo mount /dev/sda3  /mnt/sda3 表示将该新分区挂载到/mnt/sda3/这个目录下。注,手动挂载的信息记录在/etc/mtab

或者开机自动挂载,修改文件:gedit /etc/fstab,添加一行

/dev/sda3    /mnt/sda3    ext3   defaults,        0         1

到此便可以使用新分区了,df -ah查看结果

 

6、使用新分区

现在,硬盘中多出来的这80G空间,只有在/dev/sda3下才能用,在其它地方,使用的依然是system分区——也就是原来的那80G。但我要在其它地方存文件怎么办呢,可以用link来解决——把新分区中的内容映射到某个旧分区上,这样占用的新分区的空间,看起来确是存在旧分区某个你需要的位置。

命令例子:

mv /source/juice /mnt/sda3/source
ln -s /mnt/sda3/source/juice /source

这样,就可以像原来那样在/source/juice下做任何操作了,而它们实际发生在/mnt/sda3/source/juice下。

 

//-------------------------------------------------------------------------------------------------------------

 

 

fdisk -l  指令显示出当前分区中有extended类型的大容量分区,:

[root@edes02 ~]# fdisk -l

Disk /dev/sda: 1979.1 GB, 1979119894528 bytes
255 heads, 63 sectors/track, 240614 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x2135c370

Device Boot Start End Blocks Id System
/dev/sda1 1 5 40131 de Dell Utility
Partition 1 does not end on cylinder boundary.
/dev/sda2 * 6 267 2097152 c W95 FAT32 (LBA)
Partition 2 does not end on cylinder boundary.
/dev/sda3 267 330 512000 83 Linux
Partition 3 does not end on cylinder boundary.
/dev/sda4 330 240615 1930084160 5 Extended
Partition 4 does not end on cylinder boundary.

 

则可用以下命令直接扩容:

lvextend -L +100G /dev/mapper/VolGroup-lv_root

/dev/mapper/VolGroup-lv_root

其中/dev/mapper/VolGroup-lv_root是我的主分区

 

扩容成功提示:

resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/VolGroup-lv_root is mounted on /; on-line resizing required
old desc_blocks = 4, new_desc_blocks = 35
Performing an on-line resize of /dev/mapper/VolGroup-lv_root to 144179200 (4k) blocks.
The filesystem on /dev/mapper/VolGroup-lv_root is now 144179200 blocks long.

 

现在查看分区:

[root@edes02 ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 542G 27G 488G 6% /
tmpfs 16G 26M 16G 1% /dev/shm
/dev/sda3 485M 40M 421M 9% /boot
/dev/mapper/VolGroup-lv_home 79G 29G 46G 39% /home




Ubuntu 14.04NFS安装配置

发表于2014 7 21

参考:http://www.linuxidc.com/Linux/2013-08/89154.htm

1、执行命令:sudo apt-get install nfs-kernel-server ;

2、执行命令:mkdir /home/jacobxu/nfs-jacoxu建立一个nfs服务的专有的文件夹;

3、建立好文件夹后,接着执行命令:sudo vi /etc/exports配置nfs;

4、在文章的最后一行添加:/home/jacobxu/nfs-jacoxu *(rw,sync,no_root_squash,no_subtree_check)
/home/jacobxu/nfs-jacoxu *(rw,sync,no_root_squash,no_subtree_check)这一行的含义是:
/home/jacobxu/nfs-jacoxu:与nfs服务客户端共享的目录,这个路径必须和你前面设置的文件的路径一致!
*:允许所有的网段访问,也可以使用具体的IP
rw:挂接此目录的客户端对该共享目录具有读写权限
sync:资料同步写入内存和硬盘
no_root_squashroot用户具有对根目录的完全管理访问权限。
no_subtree_check:不检查父目录的权限。

5、修改完上述配置文件保存退出。

6、执行命令:sudo /etc/init.d/rpcbind restart重启rpcbind 服务。nfs是一个RPC程序,使用它前,需要映射好端口,通过rpcbind设定。

7、执行命令:sudo /etc/init.d/nfs-kernel-server restart重启nfs服务。

8、挂载指令:
sudo mount -t nfs 192.168.111.128:/home/jacobxu/nfs-jacoxu /nfs-jacoxu-node001/
到任意一台服务器中执行挂载指令,则可以将指定ip服务器上的共享路径,挂载到本地。

注:nfs只是一种文件目录共享模式,以本地方式进行访问。而HDFS是一种分布式的文件系统,能够在服务器中进行数据的负载均衡。

9、开机自动挂载:
上述指令 sudo mount -t nfs 192.168.111.128:/home/jacobxu/nfs-jacoxu /nfs-jacoxu-node001/写到 /etc/rc.local文件中

附录:NFS常用参数如下:
ro 只读访问
rw 读写访问sync 所有数据在请求时写入共享
async nfs在写入数据前可以响应请求
secure nfs通过1024以下的安全TCP/IP端口发送
insecure nfs通过1024以上的端口发送
wdelay 如果多个用户要写入nfs目录,则归组写入(默认)
no_wdelay 如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置。
hide nfs共享目录中不共享其子目录
no_hide 共享nfs目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UIDGID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UIDGID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas root用户具有根目录的完全管理访问权限
anonuid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的GID




 嵌入式nfs问题解决总结 


刚开始用的ubuntu10.04,无论如何搞都不成功,最后无奈选择 fedora14nfs成功,现记录如下:

1 如果没有安装nfs则安装nfs,每种发行版linux安装方法不同

2 改写 /etc/exports文件,我增加了一行  /root *(sync,rw,no_root_squash)

sync,rw,no_root_squash的意思可以网上查一下,直接搜 nfs配置,多点一个就有介绍了

3 开启nfs

fedora下开启方法 service nfs start  /status/stop/restart

4 保证开发板,WIndows(宿主机)linux(虚拟机)能够互相ping通,注意关闭Windows防火墙及federo的防火墙及SELinux功能

5 开发版上找载NFS,这一步如果这样:mount -t nfs 192.168.1.106:/root share这样执行不成功,显示

svc: failed to register lockdv1 RPC service (errno 111).
lockd_up: makesock failed, error=-111

把上述命令改为:mount -t nfs -o nolock 192.168.1.106:/root share 成功

说是 nfs mount默认是带锁的,所以要取消锁,具体不懂




 关于mount nfs时-o nolock的问题 


 需要将在linux里交叉编译好的程序放在arm上运行,所以首先要将程序copyarm上,选择了nfs

       但在armmount nfs的时候遇到了失败的情况:


       在网上查找解决方案:

        nfs mount 默认选项包括文件锁,依赖于portmap提供的动态端口分配功能。
        解决方法:kill文件锁(lockd)或者mount -o nolock

 

        于是尝试mount -o nolock -t nfs 192.168.1.24:/home/test /mnt/nfs,正常工作。







Ubuntu 14.04 修改密码


安装完Ubuntu 14.04后默认是没有主动设置root密码的,也就无法进入根用户。

  1、用当前登录用户打开终端,在终端输入命令 sudo passwd,输入当前用户的密码然后回车


 

  2、会提示输入新密码,输入完成后回车

  3、然后提示再输入一次新密码以确认,然后回车,设置成功

  linuxidc@ubuntu:~$ sudo passwd

  [sudo] password forlinuxidc:

  输入新的 UNIX 密码:

  重新输入新的 UNIX 密码:

  passwd:已成功更新密码

  linuxidc@ubuntu:~$

  注意:这个新密码就是root的密码,可以与当前用户的密码不同。

  在终端中输入 su root,然后输入root的密码,验证成功即可切换到root用户。在root用户下做完操作后,用exit命令即可退出root用户,退回当前登陆用户。





ubuntu 14.04 install java8  Eclipse

1、下载JDK

从官网下载jdk8

jdk-8u45-linux-i586.gz

2、解压
$ tar -zxvf jdk-8u45-linux-i586.gz
解压出来是一个jdk1.8.0_45文件夹
3、将文件夹移动到安装目录
$ sudo mv jdk1.8.0_45 /usr/local/

或者:

sudo tar xzvf jdk-8u45-linux-i586.gz -C /usr/local

4、配置环境变量 ,更改/etc/profile文件

  sudo gedit /etc/profile

         在文件最后加上如下几行:

export JAVA_HOME=/usr/local/jdk1.8.0_45
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

5、更改默认JDK配置选项 ,依次执行如下命令

 sudo update-alternatives  --install  /usr/bin/java java /usr/local/jdk1.8.0_65/bin/java 300

sudo update-alternatives  --install  /usr/bin/javac javac /usr/local/jdk1.8.0_65/bin/javac 300

sudo update-alternatives  --install  /usr/bin/jar jar /usr/local/jdk1.8.0_65/bin/jar 300
sudo update-alternatives  --install  /usr/bin/javah javah /usr/local/jdk1.8.0_65/bin/javah 300

sudo update-alternatives  --install  /usr/bin/javap javap /usr/local/jdk1.8.0_65/bin/javap 300


eclipse官网下载压缩包                                               

下载地址:http://www.eclipse.org/downloads/


解压缩到/usr/local                                                      

sudo tar xzvf eclipse-standard-luna-R-linux-gtk.tar.gz -C /usr/local

tar-C参数指定了文件解压后所在的目录








本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383304.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++多态--2(计算器,纯虚函数和抽象类)

为什么要用多态 早期方法不利于扩展开闭原则 开闭原则 对扩展开放 对修改关闭利用多态实现—利于后期扩展,结构性非常好,可读性高,效率稍微低,发生多态内部结构复杂 多态成立的条件 又继承 子类重写父类虚函数的函数&#xff1…

使用Automake和Autoconf生成Makefile

automake 所产生的 Makefile 除了可以做到程序的自动编译和链接 外,还可以用来生成各种文档(如manual page、info文件),可以将源代码文件包装起来以供发布。所以程序源代码所存放的目录 结构最好符合GNU的标准惯例。下面以hello.…

c++中多态---3(虚析构和纯虚析构,向上类型转化和向下类型转化)

虚析构和纯虚析构 虚析构virtual ~类名(){}类内声明,类内实现解决问题:通过父类指针指向子类对象释放时候不干净的问题 纯虚析构 写法 virtual ~类名(){}0; 类内声明 类外实现 如果出现了纯虚析构函数,这个类也算是抽象类,不可…

嵌入式开发硬件知识札记

三态逻辑 1. 概念 三态指其输出既可以是一般二值逻辑电路,即正常的高电平(逻辑1)或低电平(逻辑0),又可以保持特有的高阻抗状态。高阻态相当于隔断状态(电阻很大,相当于开路&#xff…

《凡人修仙传》中打斗场景(c++多态实现)

我们 要实现打斗场景,第一,我们需要有打斗的双方,一个是英雄,一个是怪物,他们都有自己的属性,比如攻击,防御,血量。其次我们的英雄还会有武器。武器上有一些加成属性,可以…

使用mp4v2将aac音频h264视频数据封装成mp4开发心得

这阵子在捣鼓一个将游戏视频打包成本地可播放文件的模块。开始使用avi作为容器,弄了半天无奈avi对aac的支持实在有限,在播放时音视频时无法完美同步。 关于这点avi文档中有提到: For AAC, one RAW AAC frame usually spans over 1024 samples…

c++模板---1(模板概念,利用模板实现数组排序,函数模板调用规则)

什么叫泛型编程?1. 参数类型化。 2. 模板 模板概念 c提供了函数模板,所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就成为函数模板。凡是函数体相同…

c++模板--2(模板机制,模板的局限性,类模板,类模板做函数的参数)

函数模板机制结论 编译器并不是把函数模板处理成能狗处理任何类型的函数函数模板通过具体类型产生不同的函数编译器会对函数模板进行两次编译,在声明的地方对模板代码的本身进行编译,在调用的地方对参数替换后代码进行编译在编译器编译阶段,…

arm-linux 交叉编译 mp4v2

2014-09-23 14:44 1901人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载。 1、下载mp4v2的源代码(http://code.google.com/p/mp4v2/downloads/list)mp4v2-2.0.0.tar.bz2 2. 进入相应目录 ./configu…

c++模板---3(类模板碰到继承问题,类模板类外实现,类模板与友元函数)

类模板碰到继承问题 基类如果是模板类&#xff0c;必须让子类告诉编译器 基类中的T到底是什么类型 如果不告诉&#xff0c;那么无法分配内存&#xff0c;编译不过 利用参数列表class Child :public Base<int> #include<iostream>using namespace std;template&l…

Linux USB札记

嵌入式linux内核添加USB模块&#xff08;U盘&#xff09;支持 使用menuconfig工具进行配置 1、Device Drivers->SCSI device support->SCSI disk support此选项必须勾选 2、Device Drivers->USB support->Support for Host-side USB 此选项选中后会出现子菜单&…

c++实现任意类型数组类的封装

MyArray.hpp #pragma once #include<iostream> #include<string> using namespace std; template<class T>class MyArray { public://构造explicit MyArray(int capacity) //防止隐式类型转换&#xff0c;防止MyArray arr 10{this->m_Capacity capacity…

Linux内核配置选项 (经典学习)

转载地址http://book.csdn.net/bookfiles/972/10097230254.shtml 2.5 Linux内核配置选项 下面以最新的Linux 2.6.20内核为例&#xff0c;介绍比较常用的一些Linux内核配置选项&#xff0c;其他选项读者可以参考系统提供的帮助信息。 需要说明的是&#xff0c;在内核配置中&am…

深入理解linux系统下proc文件系统内容

另外&#xff0c;可以参考这个http://www.centos.org/docs/5/html/5.1/Deployment_Guide/ch-proc.html 内容摘要&#xff1a;Linux系统上的/proc目录是一种文件系统&#xff0c;即proc文件系统。 Linux系统上的/proc目录是一种文件系统&#xff0c;即proc文件系统。与其它常见…

c++中的异常--1(基本概念, c语言中处理异常,c++中处理异常,异常的基本使用,栈解旋)

异常基本概念 异常处理就是处理程序中的错误&#xff0c;所谓错误是指在程序运行的过程中发生的一些异常事件&#xff08;如&#xff1a;除0退出&#xff0c;数组下标越界&#xff0c;所要读取的文件不存在&#xff0c;空指针&#xff0c;内存不足等等&#xff09; c语言中处…

RGB、YUV和YCbCr

之前对RGB、YUV和YCbCr一直没有清晰的理解和认识&#xff0c;今天打算做一个小结&#xff0c;结合网上的文章谈谈自己的看法&#xff0c;也希望有机会看到这篇文章的人能指点一二&#xff0c;相互交流&#xff0c;共同进步。 首先要说明&#xff0c;上述的RGB、YUV和YCbCr都是人…

c++中的异常---2(异常接口声明,异常变量的生命周期,异常的多态使用)

异常接口声明 为了加强程序的可读性&#xff0c;可以在函数声明中列出可能抛出异常的所有类型&#xff0c;例如&#xff1a;void func() throw(A,B,C);这个函数func能够且只能抛出类型A,B,C及其子类的异常如果在函数声明中没有包含异常接口声明&#xff0c;则此函数可以抛任何…

c++中的异常---3(系统标准异常库,编写自己异常类)

系统标准异常库 #incldue out_of_range 等… #include<iostream>#include<string>using namespace std;//系统提供标准异常#include<stdexcept>class Person{public:Person(string name, int age){this->m_Name name;//年龄做检测if (age<0 || age&g…

H.264中IDR帧和I帧区别

IDR&#xff08;Instantaneous Decoding Refresh&#xff09;--即时解码刷新。I和IDR帧都是使用帧内预测的。它们都是同一个东西而已,在编码和解码中为了方便&#xff0c;要首个I帧和其他I帧区别开&#xff0c;所以才把第一个首个I帧叫IDR&#xff0c;这样就方便控制编码和解码…

c++中的IO流(流的概念和流类库的结构,标准的输入输出流)

流的概念和流类库的结构 程序的输入指的是从输入文件将数据传送给程序&#xff0c;程序的输出指的是从程序将数据传送给输出文件 c输入输出包含以下三个方面的内容 对系统指定的标准设备的输入输出。即从键盘输入数据&#xff0c;输出到显示器屏幕&#xff0c;这种输入输出称…