详细看原文:链接

安装grub2到u盘:

1
sudo grub-install -v --target=i386-pc --boot-directory=/run/media/root/EXT4 /dev/sdb

注意上面的参数:
–target,根据需要替换,参数值可以到/usr/lib/grub/下查看,每一个目录都可以作为参数值
–boot-directory,此参数的含义自行查看grub-install的help
具体看man grub-install使用方法

grub2间接引导WinPE

U盘上建立WXPE目录,将WinPE文件放置入内:

目前网络上的WinPE到处都是,各种版本其实都差不多,主要需要如下5个文件:
LDRXPE NTCOM PE SETUPLDR.BIN WINPE.IS_

大致过程是:LDRXPE调用NTCOM和SETUPLDR.BIN读取PE找到WINPE.IS_镜像,加载WinPE。

修改grub.cfg,加入winpe引导项:

阅读全文 »

本文篇幅较长,最好通过文章内容上面的目录进行查看,否则很容易迷失在一个又一个的步骤中


前言:
在中文+英文arch-wiki的指导下,大概经过了将近十次的格式化+重装,终于满意了,这个过程中也了解了linux新的系统服务管理机制:systemd(systemclt),
不说废话了,开始安装步骤

折腾日期为:2015-4-28到2015-5-??
arch更新迅速,如果要参考本文,自行留意日期,也可以自己去arch-wiki去看官方教程:arch-wiki-Beginners’guide

>本文将简略的说一下步骤,主要说我在安装过程中出现的问题!
所以如果你是对大概的linux命令都不熟悉的新手,本文也许不适合你,
你应该先去看arch-wiki,然后再来这里看
阅读全文 »

当前系统,archlinux+xfce4

tilda简介

tilda有一个非常方便的功能,那就是绑定一个按键,来切换tilda这个终端模拟器的显示和隐藏,
注意是显示和隐藏而不是开启和关闭,它在切换的期间不会影响终端中所执行的命令,
如果用过deepin linux的话应该就知道dde自带的终端有个特殊的模式叫雷神模式,
原理就跟tilda一样

开机启动

设置tilda开机启动很简单,就是在’~/.config/autostart/‘下放一个tilda的desktop文件就行了,
也可以把系统的链接过去:

1
ln -s /usr/share/applications/tilda.desktop ~/.config/autostart/

发现问题

可是当你开机后按’F1’(tilda默认绑定的按键)打开tilda后,如果你设置了tilda的背景为透明,
你会发现透明没有生效,而是黑色的背景,此时按’CTRL-SHIFT-q’退出tilda,再重新打开,
发现透明又生效了,经过再三校验tilda的配置文件的确正确后,只能猜测是xfce4桌面环境在
刚启动的时候,透明化这个功能暂时还没有初始化完成,而此时tilda已经启动了,所以就造成上述结果

解决问题

既然tilda的透明化需要等待系统初始化完毕,那么让tilda暂停一会儿再启动就行了
所以上面开机启动一段在’~/.config/autostart/‘下的tilda.desktop文件就不要了,删掉后自己新建一个

阅读全文 »

注意实体按键和虚拟按键的区别
使用的是android4.2版本,硬件:mt6589

以下操作都需要root权限!

关闭实体按键功能

包括:菜单,返回,home,最近

使用root文件管理器,如RE文件管理器
/system/usr/keylayout/Generic.kl文件中搜索menu,
注意搜索结果应该是只有menu这一个单词,而不是包含menu的单词

搜索到后在这一行的开头,添加上一个英文的符号:‘#’
也就是把这一行注释掉的意思!

返回键:back
同理、同上

我的手机菜单,home,返回键所对应的键值为(仅供参考):

1
2
3
139    MENU
158 BACK
172 HOME

修改之后保存重启手机、被你注释掉的对应的实体功能键就失效了,点击没有任何反应
如果不成功可以尝试注释掉其他的行

阅读全文 »

linux和win下的oracle不同、开机后不能直接使用
经过一段时间摸索、终于大体摸清了linux下oracle的数据库启动流程
所以自己动手写了几个shell脚本、省的每次都要输一堆命令来启动数据库、启动监听、启动em。。
不同的数据库安装和不同的系统可能有较大的差异、不能保证都能用

启动数据库

1
2
3
#!/bin/sh
echo 打开数据库
echo startup|sqlplus "/as sysdba"

关闭数据库

1
2
3
#!/bin/sh
echo 关闭数据库
echo shut|sqlplus "/as sysdba"

启动监听

1
2
3
#!/bin/sh
echo 打开监听
lsnrctl start

关闭监听

1
2
3
#!/bin/sh
echo 关闭监听
lsnrctl stop
阅读全文 »

搜了点网上的资料、发现都是修复MBR分区的、我的电脑是GPT分区+UEFI、虽然不同、但也大同小异、
出现grub rescue模式一般是硬盘分区出现变动、导致旧的grub找不到启动文件而出现的、

错误提示

今天开机是出现了这样的提示:

1
2
3
error:file'/grub/x86_64-efi/normal.mod'not found
entering rescue mode...
grub rescue>

大概意思是那个路径下normal.mod文件找不到、从而进入了grub rescue模式
那么在grub rescue 模式下应该怎么修复呢?
首先使用set 命令只看当前错误的grub变量、下面是我的电脑的信息

1
2
3
4
5
6
set

#返回信息是:
cmdpath=(hd0,gpt1)/EFI/Deepin 2014.2
prefix=(hd0,gpt10)/grub
root=hd0,gpt10

数据分析

那么我们开分析下这些数据、首先cmdpath指向的是UEFI的启动文件、
这个应该不会错、因为硬盘第一分区一般都是EFI分区、并且目录“Deepin 2014.2”也不会出错

所以就应该是prefix和root变量出错了、并且是”gpt10”这个指向的分区出错了、
这就好办了、只要找到并修改为正确的分区应该就行了

接着使用ls命令来查看当前硬盘上有哪些分区:

1
2
3
4
ls

//返回信息是:
hd0,gpt1 hd0,gpt2 hd0,gpt3 hd0,gpt4 hd0,gpt* .......

接下来就该测试到底那个分区才是正确的启动分区、我的linux的boot分区是单独挂出来的
我们先往上看那个prefix变量、它指向一个分区下的grub目录、
那么我们就用这个目录来测试看那个分区中包含grub目录、
只要包含这个目录那么基本上就可以确定那个分区就是正确的启动分区了、也就是boot分区

阅读全文 »

同步CM10.1到99%出现错误:
error: Cannot fetch CyanogenMod/Android external svox

或者是这样的提示:
repo sync Repository unavailable due to DMCA takedown

解决办法:

repo init后
修改 .repo/manifests/default.xml

<project path="external/svox" name="CyanogenMod/android_external_svox"/>
替换修改为
<project path="external/svox" name="platform/external/svox" remote="aosp" revision="refs/tags/android-4.4.4_r2"/>

阅读全文 »

先说两种客户端发送http到服务端、然后再说服务端如何处理

客户端

首先客户端有两种方式可以发送http请求
当然还有其他方式,这里只讨论这两种方式:

doget方式

客户端中先使用“url?name1=value1&&name2=value2&&….”来new出HttpGet的对象
使用HttpClient的对象:deafultHttpClient来发送HttpGet的对象到服务端、同时将会获得服务器返回的HttpResponse对象、
接着HttpResponse对象调用getEntity()来获取服务端发送过来的信息

dopost方式

客户端先使用URL来new出HttpPost的对象
接着使用NameValuePair来保存要传递的Post的参数
可以使用集合框架、例如new一个List的对象params、并使用其add(new BasicNameValuePair("name","value"))方法来将数据保存起来、

此时还不能直接发送、要将params放到HttpPost的对象中才行、然而List类型的params并不能直接被放置到HttpPost

需要转换成另一种类型的数据:HttpEntity、在转换的同时还可以设置一下编码:

1
HttpEntity httpEntity=new UrlEncodedFormEntity("params","GB2312");

阅读全文 »

原因以及解决方法:

核心方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public static void main(String[] args) throws Exception{

FileReader fr=new FileReader("test.txt");
FileWriter fw=new FileWriter("test2.txt");

/*
int b=0;
while(b!=-1){
b=fr.read();
System.out.print("-"+(char)b);
fw.write(b);
}
用这种方法会比下面的方法在最后的文本后面多出一个乱码'?'
因为当读取到最后一个字符时,b此时还不等于-1,判断后会接着读取
下一个字符,但在上一次读取时已读取到最后一个字符,所以这次
就什么都读取不到(产生乱码),并返回-1,结束循环
*/

int b;
while((b=fr.read())!=-1){

System.out.print("-"+(char)b);
fw.write(b);
      //这个方法的优点在于它会在读取的同时判断是否执行方法体
}
fr.close();
fw.close();
}

手动敲一遍、算是加强记忆吧~

/:文件系统的入口,也是最高一级的目录

/bin:最基本的且着急用户和普通用户都可以使用的命令放在此目录下,如:ls、cp等

/boot:存放Linux的内核及引导系统所需要的文件,包括引导装载程序

/etc:存放系统配置文件,一些服务器的配置文件也放在这里

/dev:存放所有的设备文件,比如声卡、磁盘等

/home:包含普通用户的个人主目录,如/home/lisi

/lib:包含二进制文件的共享库

/media:即插即用型存储设备如U盘、光盘等的自动挂载点在此目录下创建

阅读全文 »