Virtualbox安装配置FreeBSD10

1、新建虚拟机,下载DVD镜像文件,安装虚拟机,整个过程比较简单:分区,选择需要的包,配置网络,配置用户
其中,我的虚拟机网卡配置为:
le0 是hostonly,用于与宿主机、其他虚拟机进行网络通许,要手工设置
le1 是nat,用于蹭网,设置为DHCP就好了

2、安装后重启,发现新用户不能su,将新用户添加到wheel组

#此命令一如既往的强大
bsdconfig

3、然后发现,le1发现可以连外网,但le0配置有些问题,编辑/etc/rc.conf

#network config
hostname="freebsd10"
ifconfig_le0="inet 172.16.172.5 netmask 255.255.0.0"
ifconfig_le1="DHCP"
ip6addrctl_enable="NO"
defaultrouter="10.0.3.2"
#static_routes="net1"
#route_net1="-net 172.16.172.0/16 172.16.172.1"

重启网络,OK。

4、找了一下,VirtualBox自带的扩展插件是没有BSD系统支持的,那就安装开源的呗
首先尝试了bsdconfig进行安装,但系统提示找不到数据库

bsdconfig
#选择Packages
no pkg(8) database found.

4.1A网上找了下,从DVD安装可以这样处理:

mount -t cd9660 /dev/cd0 /dist
env REPOS_DIR=/dist/packages/repos pkg search virtualbox
env REPOS_DIR=/dist/packages/repos pkg install virtualbox-ose-additions 

4.1B或者,直接采用网络安装可以这样处理:

pkg install virtualbox-ose-additions 

4.2安装后,需要在/etc/rc.conf中增加

vboxguest_enable=“YES”
vboxservice_enable=“YES”

重启

5、安装图形界面
从DVD安装可以这样处理:
5.1A

mount -t cd9660 /dev/cd0 /dist

env REPOS_DIR=/dist/packages/repos pkg search xorg
env REPOS_DIR=/dist/packages/repos pkg install xorg

env REPOS_DIR=/dist/packages/repos pkg search gnome
env REPOS_DIR=/dist/packages/repos pkg install gnome3

5.1B或者,直接采用网络安装可以这样处理:

pkg install xorg
pkg install gnome3

5.2A安装完毕后,如果想重启后直接进入图形界面,需要在/etc/rc.conf中增加

gdm_enable="YES"
gnome_enable="YES"

5.2B如果想重启后进入命令行界面,需要在/etc/rc.conf中增加

dbus_enable="YES"

然后,执行命令

echo exec gnome-session > ~/.xinitrc
startx

6、发现命令行界面分辨率太低
6.1查看系统支持的分辨率

#列出所有支持的分辨率
vidcontrol -i mode
#尝试1024x768x24
vidcontrol MODE_280

6.2在/etc/rc.conf中增加

allscreens_flags="MODE_280"

7、启动后,发现sendmail服务启动耗时很久,反正用不到,编辑/etc/rc.conf文件,禁用之

vi /etc/rc.conf
sendmail_enable="NONE"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

8、最终,我的/etc/rc.conf文件如下

#network config
hostname="freebsd10"
ifconfig_le0="inet 172.16.172.5 netmask 255.255.0.0"
ifconfig_le1="DHCP"
ip6addrctl_enable="NO"
defaultrouter="10.0.3.2"
#static_routes="net1"
#route_net1="-net 172.16.172.0/16 172.16.172.1"

#display config
vboxguest_enable="YES"
vboxservice_enable="YES"
allscreens_flags="MODE_280"
#gdm_enable="YES"
#gnome_enable="YES"

#other service config
sshd_enable="YES"
powerd_enable="YES"
moused_enable="YES"
dbus_enable="YES"

#"AUTO" to enable crash dumps, "NO" to disable crash dumps
dumpdev="AUTO"

#disapbled service
zfs_enable="NO"
sendmail_enable="NONE"
sendmail_outbound_enbale="NO"
sendmail_msp_queue_enable="NO"
sendmail_submit_enable="NO"

Debian8 Jessie修改Terminal分辨率

昨天安装了Debian8 Jessie,禁用了gdb以后,发现Terminal分辨率变的超级低。
用以前的方法调整了一下,发现搞不定了,搞了大半天,终于找到了靠谱的方案:

1、修改/etc/default/grub
找到

#GRUB_GFXMODE=XXXXXX

修改该行,并新增一行,最后效果为

GRUB_GFXMODE=1024x768x24
GRUB_GFXPAYLOAD_LINUX=1024x768x24

2、修改/etc/grub.d/00_header
找到

if [ "x${GRUB_GFXMODE}" = "x" ] ; then auto ; fi,

修改该行,并新增一行,最后效果为

if [ "x${GRUB_GFXMODE}" = "x" ] ; then GRUB_GFXMODE=1024x768x24 ; fi
if [ "x${GRUB_GFXPAYLOAD}" = "x" ] ; then GRUB_GFXPAYLOAD=1024x768x24 ; fi

3、仍然是etc/grub.d/00_header
找到

set gfxmode=${GRUB_GFXMODE}

在其后新增一行,最后效果为

set gfxmode=${GRUB_GFXMODE}
set gfxpayload=${GRUB_GFXPAYLOAD}

4、更新grub并重启,搞定

update-grub2
reboot

5、感觉Debian8 Jessie的配置改变了好多。。。

CentOS7常见操作

1、通过CentOS光盘安装软件

#挂载光盘
mount -r /dev/sr0 /media/cdrom

#修改文件,将光盘查找路径定为/media/cdrom
vi /etc/yum.repos.d/CentOS-Media.repo

#刷新列表
yum --disablerepo=\* --enablerepo=c7-media repolist

#安装vim
yum --disablerepo=\* --enablerepo=c7-media install vim

#通过命令查找包并安装包
yum --disablerepo=\* --enablerepo=c7-media provides ifconfig
yum --disablerepo=\* --enablerepo=c7-media install net-tools

#卸载包
yum erase 包名

2、rpm安装及卸载软件

#安装
rpm -ivh rpm文件路径

#安装并不进行依赖检查
rpm -ivh --nodeps rpm文件路径

#更新
rpm -Uvh rpm文件路径

#删除
rpm -e 包名

#查看包的用途、版本等信息
rpm -qpi rpm文件路径

#查看包的文件清单
rpm -qpl rpm文件路径

#查看软件包文档位置
rpm -qpd rpm文件路径

#查看软件包的配置文件
rpm -qpc rpm文件路径

#查看软件包依赖关系
rpm -qpR rpm文件路径

3、rpm查看已安装软件包信息

#查看已经安装的软件
rpm -qa
 
#查看一个文件属于哪个软件包
rpm -qf 文件绝对路径

#查看安装软件包都安装到何处;
rpm -ql 包名

#查看包的信息
rpm  -qi 包名

#查看包配置文件
rpm -qc 包名

#查看包文档安装位置
rpm -qd 包名

#查看包的依赖
rpm -qR 包名

4、配置网络为静态地址

vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
#修改或新增以下内容
BOOTPROTO=static
ONBOOT=yes
IPADDR=172.16.172.80
NETMASK=255.255.0.0
GATEWAY=172.16.172.2

#重启网络
service network restart

5、防火墙配置

#查看状态
systemctl status firewalld 

#启动
systemctl start firewalld

#关闭
systemctl stop firewalld

#开机启用
systemctl enable firewalld

#开机禁用 
systemctl disable firewalld

Debian默认命令行启动

由于Debian6和Debian8服务管理方式不同,很多旧方法不再适用于Debian8

1、Debian6之前:修改内核启动参数
1.1、修改文件/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

GRUB_CMDLINE_LINUX_DEFAULT="quiet text"

1.2、然后运行

update-grub

2、Debian8之后:systemctl

#切换为命令行登录
systemctl set-default multi-user.target
#退出GUI
gnome-session-quit

#切换为GUI登录
systemctl set-default graphical

3、Grub禁用图像模式
3.1、修改文件/etc/default/grub

#GRUB_TERMINAL=console

GRUB_TERMINAL=console

3.2、然后运行

update-grub

Hadoop Linux Native 编译说明

首先说明一下,如果要使用Linux Native的话,Hadoop是已经自带了哦

然后,如果要编译的话,建议直接从Hadoop源码按官方的说明进行编译,不要像我这样自己搞。。。

如果你喜欢折腾,请继续看:

1、按源码架构拷贝下面的文件及文件夹

hadoop-2.5.2-src\hadoop-common-project\hadoop-common\src\main\native
hadoop-2.5.2-src\hadoop-common-project\hadoop-common\src\CMakeLists.txt
hadoop-2.5.2-src\hadoop-common-project\hadoop-common\src\config.h.cmake
hadoop-2.5.2-src\hadoop-common-project\hadoop-common\src\JNIFlags.cmake
hadoop-2.5.2-src\hadoop-hdfs-project\hadoop-hdfs\src\main\native
hadoop-2.5.2-src\hadoop-hdfs-project\hadoop-hdfs\src\CMakeLists.txt(可能需要调整一下依赖文件JNIFlags.cmake的相对路径)
hadoop-2.5.2-src\hadoop-hdfs-project\hadoop-hdfs\src\config.h.cmake

2、编译libhadoop
2.1、检查并安装以来关系

#需要gcc、make、jdk,这些一般大家都有了
#需要zlib
apt-get install zlib1g-dev
#需要cmake
apt-get install cmake

2.2、用cmake生成Makefile

cmake ./src/ -DGENERATED_JAVAH=~/Build/hadoop-2.5.2-src/build/hadoop-common-project/hadoop-common/native/javah -DJVM_ARCH_DATA_MODEL=64 -DREQUIRE_BZIP2=false -DREQUIRE_SNAPPY=false

2.3、用javah生成头文件
需要三个jar包,hadoop-common,hadoop-annotations,guava

javah org.apache.hadoop.io.compress.lz4.Lz4Compressor
javah org.apache.hadoop.io.compress.lz4.Lz4Decompressor
javah org.apache.hadoop.io.compress.zlib.ZlibCompressor
javah org.apache.hadoop.io.compress.zlib.ZlibDecompressor
javah org.apache.hadoop.io.nativeio.NativeIO 
javah org.apache.hadoop.io.nativeio.SharedFileDescriptorFactory
javah org.apache.hadoop.net.unix.DomainSocket
javah org.apache.hadoop.net.unix.DomainSocketWatcher
javah org.apache.hadoop.security.JniBasedUnixGroupsMapping
javah org.apache.hadoop.security.JniBasedUnixNetgroupsMapping
javah org.apache.hadoop.util.NativeCrc32

将生成的文件,拷贝到对应的c文件夹中

2.3、生成

make

3、编译libhdfs
3.1、用cmake生成Makefile

cmake ./src/ -DGENERATED_JAVAH=~/Build/hadoop-2.5.2-src/build/hadoop-common-project/hadoop-common/native/javah -DJVM_ARCH_DATA_MODEL=64 -DREQUIRE_LIBWEBHDFS=false -DREQUIRE_FUSE=false

3.2、生成

make

4、将生成的文件拷贝到HADOOP_HOME/lib/mynative

5、修改/etc/profile,增加下面一行

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/mynative"

6、刷新配置

source /etc/profile

搞定!

Hadoop Windows Native 编译说明

1、首先,下载hadoop-2.5.2-src源码

拷贝文件夹hadoop-2.5.2-src\hadoop-common-project\hadoop-common\src\main\native
拷贝文件夹from hadoop-2.5.2-src\hadoop-common-project\hadoop-common\src\main\winutils

2、设置JAVA_HOME及PATH环境变量

3、生成javah的头文件
解压hadoop-common-2.5.1.jar,然后运行

javah org.apache.hadoop.util.NativeCrc32
javah org.apache.hadoop.io.compress.lz4.Lz4Compressor
javah org.apache.hadoop.io.compress.lz4.Lz4Decompressor
javah org.apache.hadoop.io.nativeio.NativeIO
javah org.apache.hadoop.security.JniBasedUnixGroupsMapping
javah org.apache.hadoop.security.JniBasedUnixGroupsMapping

4、打开winutils.sln,修改输出路径到../bin,编译

5、打开native.sln,修改输出路径到../bin,修改winutils.lib引用地址,编译

6、拷贝exe及dll文件到HADOOP_HOME/bin,搞定

常见问题:
1、编译的硬件平台要与java位数一致(x86,x64),否则dll无法加载
2、出问题时,先运行winutils.exe,无法运行时,要安装对应VS版本的vcredist可再发行包就好了
3、如果提示”unable to load native hadoop-library for your platform”的话,那只需要在JVM启动参数中制定native library的路径,就可以了

如果比较着急的话,可以到我的github上下载2.5.2版本的native binary:hadoop-windows-native

Xcode7文档下载地址

具体的下载地址,可以在这里查到
https://developer.apple.com/library/downloads/docset-index.dvtdownloadableindex

对于Xcode7,对应文档的下载地址为
watchOS 2.0 Documentation
iOS 9.0 Documentation
OS X 10.11 Documentation
Xcode 7 Documentation

已知问题
1、文档下载安装后可以使用,但Xcode无法识别。
2、从apple官网下,还是太慢了

从BootCamp中提取HFS驱动

一、说明:
1、如果你是MAC,那直接安装Bootcamp就好了,别瞎折腾

2、如果你只想用这个驱动,来这里下载https://forums.macrumors.com/threads/apple-hfs-windows-driver-download.1368010/

3、即使你折腾成功了,也是只读,无法写入

4、Bootcamp的版本是通过下面的条件划分的
A、MAC硬件版本
B、Windows操作系统版本(win7、win8、win10、x86、x64)
C、发布版本
从而,直接查找Bootcamp,本身就成了一件很痛苦的事情

5、Bootcamp的HFS驱动文件的默认安装位置为
C:\Windows\System32\drivers\AppleHFS.sys
C:\Windows\System32\drivers\AppleMNT.sys
而文件系统驱动是与MAC硬件版本无关的,所以我们只需要考虑B、C两个问题就好了

二、然后说HFS驱动提取的方式:
1、按上面所说的,驱动提取只需要考虑Windows操作系统版本和Bootcamp发布版本就可以了,是不需要考虑MAC硬件版本的
2、下载后,解压文件
3、将AppleHFS.sys、AppleMNT.sys拷贝出来
4、备份注册表(这一步一般来说是可以省掉的)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\AppleHFS
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\AppleMNT

一般来说用下面的文件进行安装和卸载就好了:
Add_AppleHFS.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\AppleHFS]
"Type"=dword:00000002
"ErrorControl"=dword:00000001
"Start"=dword:00000000
"Group"="File System"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\AppleMNT]
"Group"="System Bus Extender"
"Type"=dword:00000001
"ErrorControl"=dword:00000001
"Start"=dword:00000000

Remove_AppleHFS.reg

Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\AppleHFS]

[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\AppleMNT]

5、这样驱动提取就完成了

三、HFS驱动的安装方式:
1、一定要核对windows版本与驱动提取的版本信息是一致的才可以(win7、win8、win10、x86、x64)
2、将驱动拷贝到指定路径
C:\Windows\System32\drivers\AppleHFS.sys
C:\Windows\System32\drivers\AppleMNT.sys
3、双击Add_AppleHFS.reg
4、重启即可

四、HFS驱动的卸载方式:
1、双击Remove_AppleHFS.reg
2、重启
3、删除驱动文件
C:\Windows\System32\drivers\AppleHFS.sys
C:\Windows\System32\drivers\AppleMNT.sys

五、兼容Win10方式:
1、按上面的方式安装驱动
2、打开磁盘管理器,从磁盘0的第一个卷,一直数到你想挂在的HFS卷,记录卷的序号,比如我有几块硬盘,我想挂载的卷是第10个卷(要注意,没有挂载的卷也是要计算的)
3、修改注册表

#位置
HKEY_LOCAL_MACHINE/system/CurrentControlSet/Control/Session Manager/DOS Devices/
#新建String类型的键值对
#左边的Key就是你想挂在的盘符,比如
#N:
#右边的Value就是卷的序号
#\Device\HarddiskVolume序号
#比如你是第10个卷,那就是
#\Device\HarddiskVolume10

4、重启,如果卷号错了,就调整一下再重启
5、只是一个临时方案,不太适合移动设备,有些太麻烦了

IPv6地址规则

一、IPv6顾名思义,其地址长128bit(2的64次方)。
为了便于记忆,通常采用16进制表示,每4个16进制为一段,共8段(8*4*4=128):
XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX
其中,XXXX范围为0000-FFFF

二、IPv6地址表示,主要有下面几种:
1、首选法,即每一位都写全,比如:
0234:0000:0000:0000:1234:0000:0000:2234
0000:0000:0000:0000:0234:0000:0000:2234
但这样不便于书写,于是人们想办法来进行缩写

2、将相连的0000,表示为::,但只允许出现一次,上面的地址可以缩写为
0234::1234:0000:0000:2234
::0234:0000:0000:2234

3、将每一段的前导0去掉,这样上面的地址变为
234::1234:0:0:2234
::234:0:0:2234
这样就便于人们记忆了

4、另外,IPv6可以兼容IPv4:
IPV4兼容的IPV6地址,用于在IPV4网络上建立自动隧道,以传输IPV6数据包:
0000:0000:0000:0000:0000:0000:YYY.YYY.YYY.YYY
其中,YYY范围为000-255
映射IPV4的IPV6地址,仅用于拥有IPV4和IPV6双协议栈节点的本地范围:
0000:0000:0000:0000:0000:FFFF:YYY.YYY.YYY.YYY
其中,YYY范围为000-255

三、IPv6的地址分为单播(Unicast)、多播(Multicast)和任意播(Anycast)。
其中单播分为本地链路,本站点地址,ULA,可聚合全球单播地址,回环。
1、本地链路地址(Link-Local Addresses):同一链路相邻节点之间通讯,不能被路由
地址前10个bit是1111 1110 10,规则为FE80::/64,即FE80::/10+54bit0+EUI-64
FE80:0000:0000:0000:EUI-64

2、本地站点地址(Site-Local Addresses):只能在一个站点内使用,私有地址
地址前10个bit是1111 1110 11,规则为FEC0::/48,即FEC0::/10+38bit0+16bit子网表示+EUI-64
FEC0:XXXX:XXXX:XXXX:EUI-64

3、唯一的本地IPv6单播地址(ULA,Unique Local IPv6 Unicast Address):用于替代Site-Local Addresses
地址规则为FD00::/8,后面跟一个被称为全局ID的40bit随机标识符。

4、可聚合全球单播地址(Aggregatable Global Unicast Addresses):公网地址,全球路由
前三bit为001,第一个地址为:
2000:0000:0000:0000:0000:0000:0000:0000
最后一个地址为:
3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF

5、回环地址:
0000:0000:0000:0000:0000:0000:0000:0001
0:0:0:0:0:0:0:1
::1

6、未指定地址(Unspecified address)
0000:0000:0000:0000:0000:0000:0000:0000
0:0:0:0:0:0:0:0
::

四、多播地址:一对多
前8个bit为1111 1111,地址规则为FE00::/8
FF01::到FF0F::的多播地址是保留专用地址
FF01::1 节点本地范围所有节点多播地址
FF02::1 链路本地范围所有节点多播地址
FF01::2 节点本地范围所有路由器多播地址
FF02::2 链路本地范围所有路由器多播地址
FF05::2 站点本地范围所有路由器多播地址

五、任意播:任意播是多个设备共享一个地址,应用在一到附近模式(one-to-nearest)
发送方发送一个以任意播为目标地址的包,当路由器接受到这个包以后,就转发给具有这个地址的离它最近的设备。
任意播地址是从单播地址中划分出来的,对于那些没有配备任意播的的地址就是单播地址;但是当一个单播地址分配给不止一个接口的时候,单播地址就成了任意播地址。
所以单播地址与任意播地址的规则是一样的。

六、EUI-64计算方法:
假设电脑的MAC是00:0C:85:AB:50:01;
首先在MAC地址正中间插入FFFE,得到00:0C:85:FF:FE:AB:50:01
然后由左到右第七bit置反,得到02:0C:85:FF:FE:AB:50:01
将其改写为EUI-64规则,得到020C:85FF:FEAB:5001
需要对第七位取反的原因:
在MAC地址中,第7比特为1表示本地管理,为0表示全球管理
在EUI-64格式中,第7位为1表示全球惟一,为0表示本地惟一

七、隧道协议地址转换
6over4地址
[64bit-prefix]:0:0:WWXX:YYZZ,其中的WWXX:YYZZ是w.x.y.z IPv4公共地址的十进制点号表示法,用于一个使用6to4协议的隧道机制的节点。
6to4地址
2002:WWXX:YYZZ:[SLA ID]:[Interface ID],用于表示一个使用6to4协议的隧道机制节点。