赞
踩
目录
7 Android7.1 SDK在Ubuntu14.04上的编译环境安装
1创建Ubuntu账户的两种方式,adduser与useradd
会自动创建用户的主目录,为系统指定shell版本为/bin/bash,会在创建时输入用户密码
例如:
liupingzhang@neostra:~$sudo adduser test
会自动创建用户的主目录/home/test,会在创建时要求输入用户test密码
默认情况下:
adduser在创建用户时会主动调用 /etc/adduser.conf;
在创建用户主目录时默认在/home下,而且创建为/home/用户名
1.2.1 不带参数使用useradd命令:
不带参数使用useradd创建新用户时,不会为用户创建主目录,不会为用户指定shell版本,不会为用户创建密码。
例如:
liupingzhang@neostra:~$sudo useradd test
liupingzhang@neostra:~$sudo passwd test
(2)需要为用户指定shell版本和创建用户登录主目录
1.2.2 指定参数使用useradd命令:
例如:
liupingzhang@neostra:~$sudo useradd -d /home/test -m -s /bin/bash test
为用户指定登录密码
liupingzhang@neostra:~$sudo passwd test
命令参数
useradd [-d home] [-s shell] [-c comment] [-m ] [-k template]] [-f inactive] [-u uid] [-g gid] [-e expire ] [-p passwd] [-r] name
常用命令行选项:
(1) -d: 指定用户的主目录
(2) -m: 如果存在不再创建,但是此目录并不属于新创建用户;如果主目录不存在,则强制创建; -m和-d一块使用。
(3) -s: 指定用户登录时的shell版本
(4) -M: 不创建主目录
1.3.1只删除用户:
sudo userdel 用户名
1.3.2 彻底删除用户,加上-r的选项,在删除用户的同时一起把这个用户的宿主目录和邮件目录删除
sudo userdel -r 用户名
如果创建时主目录已经存在,即主目录不属于当前要删除的用户,则无法删除主目录
(例如:
2.修改目录权限:liupingzhang@neostra: sudo chmod 777 /home/test
3.创建账户: liupingzhang@neostra:~$sudo useradd -d /home/test -m -s /bin/bash test
4.删除用户和目录:liupingzhang@neostra:~$ sudo userdel -r test
userdel: /home/test not owned by test, not removing
test目录不属于用户test无法删除)
cat /etc/passwd 可以查看到所有用户信息(包括用户名,uid,gid,主目录,用户的shell版本)
liupingzhang@neostra:~sudo vim /etc/sudoers
修改文件如下:
# User privilege specification
root ALL=(ALL) ALL
test ALL=(ALL) ALL
保存退出,test用户就拥有了root权限。
(或输入 sudo useradd -g root 用户名 /*这一行的命令是让你的刚刚建立的用户划分到 root权限组下)
切换登录账户:
liupingzhang@neostra:~su test
Password: (输入你要切换的test账户的密码)
1.5.1 临时修改:
liupingzhang@neostra:hostname 新主机名
1.5.2 永久修改:
liupingzhang@neostra:sudo vim /etc/hostname
liupingzhang@neostra:sudo vim /etc/hosts
/etc/network/interfaces,这里是IP、网关、掩码等的一些配置;
动态IP 的:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
静态IP的:(以服务器10.0.0.70为例)
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto em1
iface em1 inet static
address 10.0.0.70
netmask 255.255.255.0
gateway 10.0.0.251
dns-nameservers 10.0.0.2
#network 192.168.3.0
#broadcast 192.168.3.255
#后面两条是网络号和广播号,这个可以由其它信息计算,因此无需设置
/etc/resolv.conf这个文件保存只能修改DNS临时信息,重新开机又会被重置
主要命令:sudo /etc/init.d/networking restart重启网络,使配置文件的配置生效;
ifconfig 查看网络配置
2.2.1 Ubuntu14.0.4开启防火墙
ufw enable
2.2.2 Ubuntu14.0.4关闭防火墙
ufw disable
2.2.3 关闭Ubuntu14.0.4的iptables的相关命令
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
2.2.4 卸载防火墙iptables
apt-get remove iptables
$ sudo apt-get install openssh-server
$ /etc/init.d/ssh restart
ssh-keygen -t rsa
3.3.1 ssh公钥添加到authorized_keys:
cat id_dsa.pub >> ~/.ssh/authorized_keys
3.3.2 修改权限 chmod 600 authorized_keys
chmod 600 id_dsa
chmod 644 id_dsa.pub
authorized_keys文件、$HOME/.ssh目录 或 $HOME目录让本用户之外的用户有写权限,那么sshd都会拒绝使用 ~/.ssh/authorized_keys 文件中的key来进行认证的。
3.3.3管理员收集需要访问 git 服务的用户公钥。如: user1.pub, user2.pub 。
使用 ssh-copy-id 命令远程将各个 git 用户的公钥加入服务器(server)的公钥认证列表中。
$ ssh-copy-id -i user1.pub anonymous@server
$ ssh-copy-id -i user2.pub anonymous@server
如果直接在服务器上操作,则直接将文件追加到 authorized_keys 文件中。
$ cat /path/to/user1.pub >> ~anonymous/.ssh/authorized_keys
$ cat /path/to/user2.pub >> ~anonymous/.ssh/authorized_keys
(1)sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list
编辑你的源列表,将原来的内容全部删除,添加下面列表中最适合你的源(注意可以不要全部添加),选择一个最合适你的即可,复制到你的列表中,然后保存列表。
14.04 阿里云(20170714)
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
(2)sudo apt-get update 更新源列表信息
可以在运行“sudo apt-get update ”时查看一下错误信息,把不能连接的源删除再重新运行“sudo apt-get update ”。
sudo apt-get install vsftpd
(若不能安装,请先更新源sudo apt-get update)
sudo vim /etc/vsftpd.conf
向文件中添加
local_umask=002 #umask 是屏蔽权限
seccomp_sandbox=NO #屏蔽掉530报错
local_enable=YES #允许本地用户登录
write_enable=YES #允许写权限
sudo service vsftpd restart
可以在Windows下文件夹处输入ftp://10.0.0.70,就会出现ftp用户登录界面,用已创建的Ubuntu账户登录即可
Ubuntu下配置samba实现文件夹共享
sudo apt-get remove samba-common
sudo apt-get remove smbclient
sudo apt-get remove samba
sudo apt-get insall samba
sudo apt-get install smbfs
sudo touch /etc/samba/smbpasswd
sudo smbpasswd -a liupingzhang
然后会要求你输入samba帐户的密码
(1). 备份现有的配置文件
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
(2). 修改现配置文件
允许账号登录访问
sudo vim /etc/samba/smb.conf
1.>在smb.conf添加
security = user
2.>在smb.conf最后添加
[liupingzhang]
path = /home/liupingzhang
available = yes
browseable = yes
public = no
writable = yes
valid users = liupingzhang
sudo /etc/init.d/samba stop
sudo /etc/init.d/samba restart
可以在windows下文件夹处输入 \\10.0.0.70\liupingzhang
Android7.1 系统编译依赖于 JAVA 8。Open-JDK8 安装可参考如下命令:
sudo apt-get install openjdk-8-jdk
安装完成后,需配置 JAVA 环境变量。如安装路径为/usr/lib/jvm/java-8-
openjdk-amd64,可在终端执行如下命令配置环境变量。
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
SDK 带有 Open JDK8 的配置脚本,在工程根目录下,命名为 javaenv.sh。开
发人员需根据实际 JDK 实际安装路径对应修改脚本中环境变量。
脚本配置好后,可执行以下命令,完成配置JDK:
source javaenv.sh
安装openjdk-8-jdk 可能会失败,需要执行如下命令,并更新软件源
$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk
$ sudo update-alternatives --config java
& sudo apt-get install build-essential
& sudo apt-get install dpkg-dev
& sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \
libgl1-mesa-dev libxml2-utils xsltproc unzip
一些android的部分sdk的tools在linux操作系统上只能支持32位的操作系统,因此如果你的系统是64位的,为了修复他们,我们需要安装32位的兼容libraries在我们的64位操作系统上
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
sudo update-alternatives --config jar
sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config javadoc
7.5.1第一次编译的时候可能会遇到如下报错,进入prebuilts/sdk/tools,重新安装jack-server
error No Jack server running. Try 'jack-admin start-server'
$cd prebuilts/sdk/tools
$./jack-admin install-server jack-launcher.jar jack-server-4.11.ALPHA.jar
7.5.2 jack-server 配置端口号
Android7.1 系统使用 jack-server 作为 java 代码编译器,在编译过程中可能会遇到以下类似的错误:
Jack server already installed in "/home/yhx/.jack-server"
Communication error with Jack server (1), try 'jack-diagnose' or see Jack server log
Communication error with Jack server 1. Try 'jack-diagnose'
Communication error with Jack server 1. Try 'jack-diagnose'
这种情况主要是由于 jack-server 本身编译器限制,同一个网络端口号不能多个用户同时使用。也就是在服务器上协同开发过程中,多用户同时编译 Android7.1 时,需要配置各自使用不同的网络端口号。
jack-server 的两个配置文件(yhx 为对应用户的用户名),决定了它所使用的端口号:
/home/yhx/.jack-server/config.properties
/home/yhx/.jack-settings
这两个配置文件需要配置两个端口号,分别为服务端端口号,及客户端端口号,两个配置文件中的端口号要匹配。
jack.server.service.port=8074
jack.server.admin.port=8075及
SERVER_PORT_SERVICE=8074
SERVER_PORT_ADMIN=8075
配置步骤如下:
1) 确保两个配置文件存在,并且权限设置为 0600:
chmod 0600 /home/yhx/.jack-server/config.properties
chmod 0600 /home/yhx/.jack-settings
2) 若两个配置文件不存在,请参照以下文本新建这两个配置文件。
config.properties 文件示例如下(端口号需按实际修改):
jack.server.max-jars-size=104857600
jack.server.max-service=4
jack.server.service.port=8074
jack.server.max-service.by-mem=1\=2147483648\:2\=3221225472\:3\=42949
67296
jack.server.admin.port=8075
jack.server.config.version=2
jack.server.time-out=7200
.jack-settings 文件示例如下(端口号需按实际修改):
# Server settings
SERVER_HOST=127.0.0.1
SERVER_PORT_SERVICE=8074
SERVER_PORT_ADMIN=8075
# Internal, do not touch
SETTING_VERSION=4
3) 修改端口号,请更改 service port 及 admin port 为其他端口号,两个配置文件里的端口
号需要匹配。示例如下:
jack.server.service.port=8023
jack.server.admin.port=8024
SERVER_PORT_SERVICE=8023
SERVER_PORT_ADMIN=8024
4) 重新编译 Android,看是否会报错,若依然报错,请尝试更改其他端口号,直至编译通过。
5) 若更改 5 次编译依然无法通过,可以执行 jack-admin dump-report 命令,解压命令生成
的压缩包,分析 log 日志,若出现以下 log,可以重新安装下 libcurl:
$ JACK_EXTRA_CURL_OPTIONS=-v jack-admin list server
* Protocol https not supported or disabled in libcurl
* Closing connection -1
Communication error with Jack server 1. Try ‘jack-diagnose’
8.1.1主机添加硬盘前,首先要了解Linux系统下对硬盘和分区的命名方法。
IDE接口设备是以hd命名的,第一个设备是hda,第二个是hdb,依此类推。
SCSI接口设备是用sd命名的,第一个设备是sda,第二个是sdb,依此类推。
分区是用设备名称加数字命名的。例如sda1、sda2代表sda这个硬盘设备上的第一个分区、第二个分区,依此类推。
每个硬盘最多4个主分区或3个主分区加一个扩展分区。
8.1.2查看新硬盘是否识别到及所属分区情况。
在终端窗口中输入如下命令:
sudo fdisk -l
如识别到,则系统提示:DIsk /dev/sdb doesn't contain a valid partition table。
或者sudo parted -l
8.1.3 查看硬盘挂载详情
sudo df -l
格式化新硬盘,在终端窗口中输入如下命令:
sudo mkfs -t ext4 /dev/sdb
说明:
-t ext4 表示将分区格式化成ext4文件系统类型。
可以在分区前对硬盘格式化,也可以在分区后对每个分区重新格式化
8.3.1 Linux下常用的分区工具fdisk、parted
硬盘分区表存储了硬盘数据块的存储方式。根据分区表,可以将主流硬盘划分为MBR和GPT格式,其中MBR支持2T以下的硬盘,GPT则是新分区表标准,能支持2T以上的硬盘。64位Linux可以兼容MBR和GPT两类硬盘,其中MBR兼容性很好,直接用fdisk命令挂载、分区即可;GPT则会有一些问题。Windows对两类硬盘的兼容则都很好。
Linux下有fdisk和parted命令用于磁盘管理。fdisk对GPT的支持并不好,因此针对GPT格式的命令升级为parted命令,请注意parted命令是输入命令回车后即可生效,不像fdisk一样要最后确认执行才生效。与fdisk -l命令对应的是parted -l命令。
使用fdisk分区,每个硬盘最多4个主分区或3个主分区加一个扩展分区。
使用parted分区,每个硬盘最多可分128个分区。
8.3.1.4 fdisk使用方法
对空盘进行分区,例如空盘:/dev/sdb
在终端窗口中输入如下命令:
sudo fdisk /dev/sdb:
在Command (m for help)提示符后面输入m显示一个帮助菜单。
1>在Command (m for help)提示符后面输入n,执行 add a new partition 指令给硬盘增加一个新分区。
出现Command action时,输入e,指定分区为扩展分区(extended)。
出现Command action时,输入p,指定分区为主分区。
出现Partition number(1-4)时,输入1表示第一个区。
(一般选择p #选择“增加主分区“
Partition number (1-4):1 #选择作为1号分区
First cylinder (1-3515088895, default 1): #直接回车,新的分区从硬盘的第1扇区开始
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-3515088895, default 3515088895):
#直接回车,新的分区到硬盘的末尾结束,即整块硬盘只分一个区,也是主分区。
也可以分为多个区,比如把这个1.8T的盘分为2个区,一个1000GB,另一个800GB
Last cylinder, +cylinders or +size{K,M,G} (1-3515088895, default 3515088895):
#此处输入 1000G,然后回车,第一个分区1000GB完成
输入n继续new第二个分区
Partition number (1-4, default 2):#直接回车剩余空间将全部分给第二个分区)
2>在Command (m for help)提示符后面输入p,显示分区表。
3>在Command (m for help)提示符后面输入w,保存分区表。
系统提示:The partition table has been altered!
4>在终端窗口中输入如下命令:
sudo fdisk -l
系统已经识别了硬盘 /dev/sdb 的分区。
8.3.1.4 parted使用方法
对空盘进行分区,例如空盘:/dev/sdd
在终端窗口中输入如下命令:
sudo parted /dev/sdd #进入parted
mklabel gpt #将磁盘设置为gpt格式,
mkpart logical 0 -1 #将磁盘所有的容量设置为GPT格式
print #查看分区结果
quit #退出
#为新分区建立ext4文件系统,sdd1是sdb的具体盘号
sudo mkfs -t ext4 /dev/sdd1;
命令详解
(parted) p ---列出分区信息
Error:Unable to open /dev/sdd - unrecognised disk label. ----由于没有打上磁盘标签,所以表现信息无法列出
(parted)mklabel ----创建磁盘标签
New disk labeltype? gpt ---输入磁盘表情名
(parted) p ----再次列出磁盘分区
Model: DELL PERC H730 Mini (scsi) ---显示磁盘类型为SCSI磁盘
Disk /dev/sdd: 1800GB ---磁盘大小为1800GB
Sector size (logical/physical): 512B/4096B ---扇区大小为4k
Partition Table:gpt ----显示标签名为我刚才输入的标签名称
Number Start End Size File system Name Flags ----现在是一新硬盘还没有创建分区
(parted)mkpart ---创建分区
Partitionname? []? part1 ---指定分区名称
File systemtype? [ext2]? ext3 ---定义分区类型
#parted不支持ext4,可以用mkfs -t ext4格式化
Start? 0 ---指定起始位置
End? 500G ----指定终止位置
(parted)mkpart ---创建分区
Partitionname? []? part2 ---指定分区名称
File systemtype? [ext2]? ext3 ---定义分区类型
Start? 500G ---指定起始位置
End? 500G ---指定终止位置
(parted)mkpart
Partitionname? []? part3
File systemtype? [ext2]? ext3
Start? 1000G ----指定分区其实位置
End? -1 ----指定到分区最后
(parted) p ----显示分区信息
(parted) rm 1 ------删除分区1
(parted) rm 2 ------删除分区2
(parted) p ------再次查看分区状态
(parted) quit ------再次退出parted
8.4.1 显示硬盘挂载情况,在终端窗口中输入如下命令:
sudo df -l
8.4.2临时挂载分区,如/dev/sdd
sudo mount /dev/sdd /home1
卸载分区
sudo umount /dev/sdd
8.4.3 配置硬盘在系统启动自动挂载
只要在/etc/fstab中添加一行
sudo vim /etc/fstab
/dev/sdd /home2 ext4 defaults 0 0
sudo mount -a 测试/etc/fstab中添加的挂载点是否正确,若添加错误会有报错
文件各字段解释
示例:
# <fs> <mountpoint> <type> <opts> <dump/pass>
# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
/dev/sda10 /boot ext4 noauto,noatime 1 2
/dev/sda6 / ext4 noatime 0 1
/dev/sda9 none swap sw 0 0
/dev/cdrom /mnt/cdrom auto noauto,ro 0 0
其实 /etc/fstab (filesystem table) 就是将我们利用 mount 命令进行挂载时, 将所有的选项与参数写入到这个文件中就是了。
除此之外, /etc/fstab 还加入了 dump 这个备份用命令的支持!
与启动时是否进行文件系统检验 fsck 等命令有关。
<file systems> 挂载设备 :
不是我们通常理解的文件系统,而是指设备(硬盘及其分区,DVD光驱等)。它告知我们设备(分区)的名字,这是你在命令行中挂载(mount)、卸载(umount)设备时要用到的。
<mountpoint> 挂载点:
告诉我们设备挂载到哪里。
<type> 文件系统类型:
Linux支持许多文件系统。 要得到一个完整的支持名单查找mount man-page。典型 的名字包括这些:ext2, ext3, reiserfs, xfs, jfs,iso9660, vfat, ntfs, swap和auto, 'auto' 不是一个文件系统,而是让mount命令自动判断文件类型,特别对于可移动设备,软盘,DVD驱动器,这样做是很有必要的,因为可能每次挂载的文件类型不一致。
<opts> 文件系统参数:
这部分是最有用的设置!!! 它能使你所挂载的设备在开机时自动加载、使中文显示不出现乱码、限制对挂载分区读写权限。它是与mount命令的用法相关的,要想得到一个完整的列表,参考mount manpage.
<dump> 备份命令:
dump utility用来决定是否做备份的. dump会检查entry并用数字来决定是否对这个文件系统进行备份。允许的数字是0和1。如果是0,dump就会忽略这个文件系统,如果是1,dump就会作一个备份。大部分的用户是没有安装dump的,所以对他们而言<dump>这个entry应该写为0。
<pass> 是否以fsck检验扇区:
启动的过程中,系统默认会以fsck检验我们的 filesystem 是否完整 (clean)。 不过,某些 filesystem 是不需要检验的,例如内存置换空间 (swap) ,或者是特殊文件系统例如 /proc 与 /sys 等等。fsck会检查这个头目下的数字来决定检查文件系统的顺序,允许的数字是0, 1, 和2。0 是不要检验, 1 表示最早检验(一般只有根目录会配置为 1), 2 也是要检验,不过1会比较早被检验啦!一般来说,根目录配置为1,其他的要检验的filesystem都配置为 2 就好了。
Linux 可以暂时在磁盘上划出一个 Swap 区域来代替内存使用,虽然 Swap 比物理内存慢很多,但对于物理内存着实太小或不够时,也还算是一个不错的临时替代方案。
查看当前系统Swap信息:
开始在 Ubuntu 14.04 中创建 Swap 分区之前,我们有必要首先看一下当前操作系统是否有可用的交换分区。
我们可以使用如下命令来进行查看:
sudo swapon -s
当然,我们也可以使用最常用的 free 命令来查看当前系统是否存在 Swap 交换分区:
free -m
查看磁盘分区的空闲空间
划分交换文件最佳的方式就是将其放到一个单独的分区当中,当然,如果无法单独为其划分的话也可以在已有的分区上创建新的交换文件。
但在创建新的 Swap 交换分区或创建交换文件之前,我们需要通过如下命令了解下当前系统对磁盘空间的使用情况:
df -h
确定好磁盘的空闲空间后,你已经可以根据你自己的实际情况来决定如何划分和创建 Swap 交换分区了。
一般情况下,创建 Swap 分区的大小都为当前系统使用的物理内存大小或内存大小的倍数。
创建 Swap 分区的大小都为当前系统使用的物理内存大小或内存大小的倍数。
可以使用 fallocate 程序来实现。该命令会立即创建一个预分配的交换文件,而产是按实际大小写入分配的大小。
1.创建64G大小swap
sudo fallocate -l 64G /swapfile
2.启用swap分区文件
我们的 swapfile 交换文件已经创建好了,但 Ubuntu 14.04 还不知道它是被用作交换分区,所以我们还需要将此文件格式化为 Swap 分区交启用它。
2.1首先,我们需要使用如下命令更改下 swapfile 文件的权限,以避免其被无意理性到:
sudo chmod 600 /swapfile
2.2然后,我们需要用如下将 swapfile 初始化为交换文件:
sudo mkswap /swapfile
2.3最后,还需要使用如下命令来启用交换文件:
sudo swapon /swapfile
3.配置启用时挂载Swap分区文件
Swap 交换文件虽然已经配置好并已经启用了,但 Ubuntu 14.04 在重启后是不会挂载我们刚创建的交换分区文件的,因此我们还需要对 /etc/fstab 文件进行更改,让其在系统启动时就自动挂载我们创建的 /swapfile 文件。
使用 vim 在 /etc/fstab 文件底部添加如下内容:
/swapfile none swap sw 0 0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。