多种方法解决开机显示grub rescue>_的故障

grub rescue>_,即GRUB启动管理器的救援模式,可以理解为一个残缺的GRUB,通常在GRUB无法找到其相关文件时出现,一般是由分区变更引起的。

用4个字概括就是:引导挂了~

下面两张方法适用于linux的分区还在的情况,如果你是希望删除linux而删掉了linux,请看最后一种方式。

下面两张方法中,部分命令仅针对deb系发行版,其他发行版类似。

法一:使用LiveCD启动并重新安装GRUB

这种方法最为简单,不用输入繁琐的GRUB命令。

首先LiveCD启动,进入Live系统,将硬盘上linux的/分区挂载到Live系统中例如/mnt的地方:

sudo mount /dev/sdaN /mnt          #按实际情况替换N,如果你的启动磁盘不是sda,也请替换为你的启动磁盘

如果单独分了/boot,则一并挂载,例如:

sudo mount /dev/sdaM /mnt/boot     #按实际情况替换M,如果你的启动磁盘不是sda,也请替换为你的启动磁盘

然后重新安装GRUB:

sudo grub-install --root-directory=/mnt/ /dev/sda

若看到类似如下的输出,则表示成功完成修复:

Installing for i386-pc platform.
Installation finished. No error reported.

法二:先将GRUB恢复到正常模式,然后进入Linux重新安装GRUB

既然GRUB找不到他的文件,那么我们就手动加载即可,救援模式其实就是一个支持的命令有限的GRUB命令行,我们可以在其中执行一些命令。
先输入以下命令:

ls

GRUB会列出所有的磁盘和上面的分区,如:

(hd0) (hd0,msdos5) (hd0,msdos1) (hd0,msdos2)

然后就一个分区一个分区的试,看看那个是linux的/分区,如果你当分了/boot,则要找/boot分区
如果/boot没有单独分区,用以下命令:

ls (hd0,msdosN)/boot/grub

如果/boot单独分区,则用下列命令:

ls (hd0,msdosN)/grub

正常情况下,会列出来一大堆文件,很多文件的扩展名是.mod和.lst和.img,还有一个文件是grub.cfg。假设找到(hd0,msdos2)时,显示了文件夹中的文件,则表示我们要找的就是这个分区。

然后我们要让GRUB去加载之前它没有加载的文件
下面是/boot没有单独分区的命令:

grub rescue>set root=(hd0,msdos2)
grub rescue>set prefix=(hd0,msdos2)/boot/grub
grub rescue>insmod /boot/grub/normal.mod

下面是/boot 单独分区的命令:

grub rescue>set root=(hd0,5)
grub rescue>set prefix=(hd0,5)/grub
grub rescue>insmod /grub/normal.mod

然后调用如下命令,就可以看到GRUB的菜单了。

grub rescue>normal

然后进入Linux系统,执行:

sudo update-grub             #更新引导菜单,非deb系的发行版可能不是这个命令
sudo grub-install /dev/sda   #如果你的启动磁盘不是sda,请替换为你的启动磁盘

至此,修复完毕。

法三:使用PE系统直接安装Windows的启动管理器

这种方法适合已经删除了Linux分区,或者正准备删除Linux分区,然后回到Windows系统的人。

首先你需要一个装在U盘上的PE,网上一搜全是,个人比较推荐这个还算比较干净的PE:http://www.wepe.com.cn/

然后启动PE系统,里面一般有个修复Windows引导的工具,运行即可。

PHP-如何正确的删除array中的一个元素

数组是几乎所以编程语言里必有的数据结构,而在编程时,数组可以又与其他数组和数据结构相结合,构成如二维数组三维数组233维数组乱七八糟什么都不是的数组。而数组也是最基本的可迭代的数据结构,常与for(foreach)相结合,形成。。。

好了我tm实在编不下去了,下面步入正题。

在PHP中,删除array中的一个元素有两种方法

1.array_splice($array, $offset, 1);

示例代码:

$array = array('aaa', 'bbb', 'ccc', 'ddd');
$offset = 1;
array_splice($array, $offset, 1);

var_dump($array);

/* 输出:

array(3) {
  [0]=>
  string(3) "aaa"
  [1]=>
  string(3) "ccc"
  [2]=>
  string(3) "ddd"
}
*/

注意,不能写成array_splice($array, $offset);,一定要写上最后那个为1的参数,否则会把数组直接从$key的位置删到末尾!
而且array_splice中所用的是偏移量,而不是key,这点要注意!

2.unset($array[$key]);

示例代码:

<?php
$array = array('aaa', 'bbb', 'ccc', 'ddd');
$key = 1;
unset($array[$key]);

var_dump($array);

/* 输出:

array(3) {
  [0]=>
  string(3) "aaa"
  [2]=>
  string(3) "ccc"
  [3]=>
  string(3) "ddd"
}
*/

注意,元素的key没有重新排序,而是直接从0跳到了2,这可能会导致一些潜在的问题,你可以在后面使用array_values();来重新排序key

Minecraft中Schematic文件格式详解

Schematic文件格式为一种由玩家社区所创建的用于存储Minecraft世界信息,进而可以通过第三方应用程序(如MCEdit, Minecraft Note Block Studio, 红石模拟器以及WorldEdit等)进行编辑。

说白这种文件是用来存储Minecraft世界的一定范围内的数据(方块、实体等)的东西,它最常见的用法莫过于使用mcedit将存档的一个区域导出到Schematic文件,或者将Schematic文件导入到存档中。

Linux 在4K屏幕下的界面缩放设置

最近趁着京东特价,入了个23寸的4K显示器。由于4K的分辨率是3840*2160,是1080P的整整4倍,像素密度十分高,但整个屏幕的大小却和一般的1080P显示器一样大,这就造成了如果还是按照原来的显示方式,界面会变得非常小,根本看不了,所以需要把界面的尺寸放大。对于我的分辨率,放大2倍正好,在windows下缩放是自动完成的,但有些字体还是不太清晰,下面介绍如何在linux下启用缩放。

一开始,我尝试桌面环境的显示设置中直接启用缩放,后来发现总会有各种各样的问题,最终选择了通过开机时设置qt和gtk的环境变量来实现缩放:

在创建一个开机会执行的脚本文件,如/etc/profile.d/hidpi.sh 脚本文件的内容如下:

export QT_AUTO_SCREEN_SCALE_FACTOR=1
export GDK_SCALE=2

然后重启即可,如果鼠标指针过小,到桌面环境的设置里设置一下了可以了。

可喜可贺!网易云音乐Linux版终于发布了

一直把linux作为开发环境,而写代码时没点音乐怎么行呢?但网易云音乐那缓慢的基于flash的web端简直不能忍,而现在这些都不是问题了,因为在几个月前就说要发布的网易云音乐Linux客户端最近终于发布了!

Arch Linux用户可以直接从aurarchlinuxcn中安装,debian系用户请到官网下载,其他发行版请尝试直接解包安装或干看着眼馋23333

顺便说一下,如果出现无法播放的问题,请尝试关闭其他程序,因为有可能是其他程序占用了。linux下的音频驱动,你懂得~

服务器外网无法访问?可能是网关设置问题!

一个在内网的服务器出现如下症状:使用内网地址访问正常,但无法使用外网地址访问,路由器等设备均已配置正确。

起初因为内网访问是正常的,所以直接忽略了网络配置不正确的可能。但在更新时发现,这台服务器也无法访问外网。

自然而然的想到了路由的问题,使用route命令查询后果不其然:连default都没有设置,就设置了个192.168.1.0,也就能在内网玩玩!

之后检查 /etc/network/interfaces发现原来是少写了个auto enp3s0,应该加上这个导致的网关的问题,加上之后重启(也可以只重启网络服务)就没有问题了,一切正常。

PS:那个link-local大可不必管它,那个叫做链路本地地址,似乎也没什么用,wikipedia上连它的中文页面都没有。。。

顺便附一张IPv4保留地址全表,截自wikipedia:

雅黑PHP探针魔改版 – 支持PHP7,大幅改进界面

雅黑PHP探针,还是非常好用的,但n年没有更新了,以至于其使用的新版PHP已弃用的函数,使其在新版PHP下甚至无法工作。

所以我对它进行了一番魔改,修复在新版PHP下的bug自然不必说,顺便还魔改了一下界面,加入了图标,是不是立马就又现代感了?

废话不多说了,直接上地址:

Gitbub:https://github.com/WuSiYu/PHP-Probe

git@osc国内分流:https://github.com/WuSiYu/PHP-Probe

PS:关于这个bug我已经给雅黑PHP探针的作者发邮件说明了,但几个月过去了根本没有回我。。。

在Virtualbox下玩windows平台的opengl游戏

最近迷上了一个算是太空射击类游戏,叫reassembly,制作精良,自由性也非常的高。

但很可惜,这款游戏并没有linux版,而且用wine也跑不起来。不过好在,这款游戏使用的是opengl,而且显存占用也不大。这就意味着,简单的使用virtualbox自带的3D图形加速功能,就可以使这个游戏流畅运行。

SMCL – 使用Python编写简单Minecraft启动器

Simple Minecraft Launcher,一个使用python3编写的轻量级Minecraft启动器。

代码见:http://ideone.com/aVWnVh , Github地址:https://github.com/WuSiYu/smcl。直接不加任何参数运行脚本会显示帮助和用法,这里就不再多说了。

下面介绍原理:

Apache2配置虚拟主机(VirtualHost)快速教程

Apache2的一个基本的虚拟主机配置范例如下:

<VirtualHost *:80>

    # 站点域名
    ServerName wusiyu.me

    # 需绑定更多域名则启用下面这句
    # ServerAlias new.wusiyu.me www.wusiyu.me
    
    # 站点的Web根目录
    DocumentRoot /var/www/wusiyu.me

    # 站点管理员邮箱
    ServerAdmin webmaster@localhost

    # 站点的日志
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

理论上将这些内容直接扔在apache配置文件里即可,不过为了管理方便我们一般都把每一个虚拟主机都存成一个配置文件,并放在一个目录中。debian系的发行版默认就已经这样做了。

如果你用得不是debian系发行版,或者是自己编译安装的apache,可以在apache的主配置文件中加入这句来使其加载其他目录下的配置文件:

IncludeOptional sites/*.conf

配置完后,apache的服务restart或reload即可:

service apache2 reload

 

1 2 3 8
Zitheax Theme by WuSiYu