作者归档:Windows Hao

关于Windows Hao

力求做到最好的数据恢复效果,降低数据丢失带来的损失,为您的数据安全保驾护航。

Ubuntu安装BusyBox致命错误curses.h没有那个文件或目录

问题:
 root@czu:~# cd /root/桌面/busybox-1.19.3
root@czu:~/桌面/busybox-1.19.3# make menuconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/basic/split-include
scripts/basic/split-include.c: 在函数‘main’中:
scripts/basic/split-include.c:134:11: 警告: 忽略声明有 warn_unused_result 属性的‘fgets’的返回值 [-Wunused-result]
  HOSTCC  scripts/basic/docproc
  GEN     include/applets.h
  GEN     include/usage.h
  GEN     applets/Kbuild
  GEN     coreutils/Kbuild
  GEN     coreutils/Config.in
  GEN     coreutils/libcoreutils/Kbuild
  GEN     procps/Kbuild
  GEN     procps/Config.in
  GEN     mailutils/Kbuild
  GEN     mailutils/Config.in
  GEN     e2fsprogs/Kbuild
  GEN     e2fsprogs/Config.in
  GEN     e2fsprogs/old_e2fsprogs/Kbuild
  GEN     e2fsprogs/old_e2fsprogs/Config.in
  GEN     e2fsprogs/old_e2fsprogs/uuid/Kbuild
  GEN     e2fsprogs/old_e2fsprogs/blkid/Kbuild
  GEN     e2fsprogs/old_e2fsprogs/e2p/Kbuild
  GEN     e2fsprogs/old_e2fsprogs/ext2fs/Kbuild
  GEN     libbb/Kbuild
  GEN     libbb/Config.in
  GEN     printutils/Kbuild
  GEN     printutils/Config.in
  GEN     libpwdgrp/Kbuild
  GEN     debianutils/Kbuild
  GEN     debianutils/Config.in
  GEN     shell/Kbuild
  GEN     shell/Config.in
  GEN     loginutils/Kbuild
  GEN     loginutils/Config.in
  GEN     sysklogd/Kbuild
  GEN     sysklogd/Config.in
  GEN     console-tools/Kbuild
  GEN     console-tools/Config.in
  GEN     init/Kbuild
  GEN     init/Config.in
  GEN     scripts/Kbuild
  GEN     runit/Kbuild
  GEN     runit/Config.in
  GEN     miscutils/Kbuild
  GEN     miscutils/Config.in
  GEN     archival/Kbuild
  GEN     archival/Config.in
  GEN     archival/libarchive/Kbuild
  GEN     modutils/Kbuild
  GEN     modutils/Config.in
  GEN     selinux/Kbuild
  GEN     selinux/Config.in
  GEN     util-linux/Kbuild
  GEN     util-linux/Config.in
  GEN     util-linux/volume_id/Kbuild
  GEN     editors/Kbuild
  GEN     editors/Config.in
  GEN     findutils/Kbuild
  GEN     findutils/Config.in
  GEN     networking/Kbuild
  GEN     networking/Config.in
  GEN     networking/libiproute/Kbuild
  GEN     networking/udhcp/Kbuild
  GEN     networking/udhcp/Config.in
  HOSTCC  scripts/kconfig/conf.o
scripts/kconfig/conf.c: 在函数‘conf_choice’中:
scripts/kconfig/conf.c:354:9: 警告: 忽略声明有 warn_unused_result 属性的‘fgets’的返回值 [-Wunused-result]
scripts/kconfig/conf.c: 在函数‘conf_askvalue’中:
scripts/kconfig/conf.c:106:8: 警告: 忽略声明有 warn_unused_result 属性的‘fgets’的返回值 [-Wunused-result]
  HOSTCC  scripts/kconfig/kxgettext.o
  HOSTCC  scripts/kconfig/mconf.o
scripts/kconfig/mconf.c: 在函数‘show_textbox’中:
scripts/kconfig/mconf.c:839:7: 警告: 忽略声明有 warn_unused_result 属性的‘write’的返回值 [-Wunused-result]
scripts/kconfig/mconf.c: 在函数‘exec_conf’中:
scripts/kconfig/mconf.c:473:6: 警告: 忽略声明有 warn_unused_result 属性的‘pipe’的返回值 [-Wunused-result]
  SHIPPED scripts/kconfig/zconf.tab.c
  SHIPPED scripts/kconfig/lex.zconf.c
  SHIPPED scripts/kconfig/zconf.hash.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/mconf
  HOSTCC  scripts/kconfig/lxdialog/checklist.o
In file included from scripts/kconfig/lxdialog/checklist.c:24:0:
scripts/kconfig/lxdialog/dialog.h:31:20: 致命错误: curses.h:没有那个文件或目录
编译中断。
make[2]: *** [scripts/kconfig/lxdialog/checklist.o] 错误 1
make[1]: *** [menuconfig] 错误 2
make: *** [menuconfig] 错误 2
root@czu:~/桌面/busybox-1.19.3#
解决办法:
root@czu:~/桌面/busybox-1.19.3# apt-get install libncurses5-dev
原因:
Ubuntu系统中缺少一个套件 ncurses devel ,把此套件安装下即可。

Ubuntu设置root用户登录图形界面

先设定一个root的密码,sudo passwd root
1、先设定一个root的密码,sudo passwd root
2、root 登陆,su root
3、备份一下lightgdm,有备无患。
cp -p /etc/lightdm/lightdm.conf /etc/lightdm/lightdm.conf.bak
4、编辑lightdm.conf
sudo gedit /etc/lightdm/lightdm.conf
5、添加一行:
greeter-show-manual-login=true
修改后为:
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-show-manual-login=true
重启登陆即可。已经可以输入root了。

自己动手编译Linux内核

一、实验目的

学习重新编译Linux内核,理解、掌握Linux内核和发行版本的区别。

 

二、实验内容

在Linux操作系统环境下重新编译内核。实验主要内容:

A. 查找并且下载一份内核源代码,本实验使用最新的Linux内核2.6.36。

B. 配置内核。

C. 编译内核和模块。

D. 配置启动文件。

本次实验环境是Linux2.6.35内核的环境下,下载并重新编译内核源代码(2.6.36);然后,配置GNU的启动引导工具grub,成功运行编译成功的内核。

 

三、主要仪器设备(必填)

Linux环境:utuntu10.10,linux内核2.6.35

待编译内核:linux2.6.36

 

四、操作方法和实验步骤

【1】下载内核源代码

从http://os.zju.edu.cn/newlinux/files/jijiangmin网站上下载最新的Linux内核2.6.36。

 

【2】部署内核源代码

打开终端,更改用户权限为root。具体做法是在终端输入sudo su,然后按提示输入密码。判断是否是root用户是使用whoami命令,若输出为root则已经切换到root账户。

输入mv linux-2.6.36.tar.gz  /usr/src,目的是把下载的内核源代码文件移到/usr/src目录。

输入cd /usr/src切换到该目录下。

输入tar zxvf linux-2.6.36.tar.gz,目的是解压内核包,生成的源代码放在linux-2.6.36目录下。

输入cd linux-2.6.36,切换到该目录下。

输入cp /boot/config-,然后按下Tab键,系统会自动填上该目录下符合条件的文件名,然后继续输入 .config,目的是使用在boot目录下的原配置文件。

 

【3】配置内核

配置内核的方法很多,主要有如下几种:

#make menuconfig  //基于ncurse库编制的图形工具界面

#make config  //基于文本命令行工具,不推荐使用

#make xconfig  //基于X11图形工具界面

#make gconfig  //基于gtk+的图形工具界面

由于对Linux还处在初学阶段,所以选择了简单的配置内核方法,即make menuconfig。在终端输入make menuconfig,等待几秒后,终端变成图形化的内核配置界面。进行配置时,大部分选项使用其缺省值,只有一小部分需要根据不同的需要选择。

对每一个配置选项,用户有三种选择,它们分别代表的含义如下:

<*>或[*]——将该功能编译进内核

[]——不将该功能编译进内核

[M]——将该功能编译成可以在需要时动态插入到内核中的代码

本实验在make menuconfig后,把ext2和ext3文件系统编译进内核。如果用户是在虚拟机下编译的,那么一般要把SCSI设备编译进内核。不是在虚拟机下编译的也可以把它编译进去,不会有什么影响的。

 

【4】编译内核

这步是时间最长的一个步骤,一般在3个小时左右。

编译内核只需在终端输入make,然后等待编译的完成。

 

【5】编译和安装内核模块

输入make modules_install,这步很快能完成。

 

【6】安装内核

输入make install

 

【7】生成启动

依次输入:

sudo mkinitramfs -o /boot/initrd.img-2.6.36

sudo update-initramfs -c -k 2.6.36

sudo update-grub2  //自动修改系统引导配置,产生grub.cfg启动文件。

 

五、实验结果和分析

把内核源代码移动到目录/usr/src,如下图

 

在成功执行语句

sudo mkinitramfs -o /boot/initrd.img-2.6.36

sudo update-initramfs -c -k 2.6.36

后的boot目录,如下图

 

在成功执行语句

sudo update-grub2

后grub.cfg文件中增加了新内核的启动项,如下图

 

在所有的实验步骤成功完成后,重新启动,可以发现在启动项中多了两项,分别为Linux2.6.36模式和Linux2.6.36 recovery模式,选择Linux2.6.36模式,进入新的内核,若在启动过程中没有跳出错误提示,表示已经成功了。

进入系统后,打开终端,输入uname -a,输出如下图,表明现在已经是2.6.36的内核了

 

常用命令:编译内核: 
# cd /usr/src/linux 
# make dep -----链接程序代码与函数库. 
# make clean -----删除不必要的模块和文件. 
# make bzImage -----开始编译系统内核. 
# make modules -----开始编译外挂模块. 
# make modules_install -----安装编译完成的模块. 


# mkinitrd /boot/initrd-2.2.5-15.img 2.2.5-15


编译64位内核

    make ARCH=x86_64 menuconfig
    make ARCH=x86_64
    make ARCH=x86_64 modules_install
    make ARCH=x86_64 install

让 Hyper-V 和 VMware 虚拟机软件共存

在 Windows Server 2008 R2、Windows server 2012 以及最新的 Windows 8 中都已经支持微软的服务器虚拟化技术 Hyper-V,只需要在功能中启动即可创建并运行需要的的虚拟机实现操作系统测试或服务器虚拟化的工作。

但有的时候除了 Hyper-V 之外,还需要运行 VMware 的虚拟机,但如果在系统中同时安装着两个虚拟机平台, VMware 虚拟机将不能运行:

1

这是因为,两者都是基于 CPU 等底层硬件的 Hypervisor 机制来实现的,而他们必须独占管理 Hypervisor,因此不能在一台电脑中同时运行。

如果实在需要在一个系统中安装和使用这两种虚拟机平台,我们暂时只能使用折中的办法,那就是为 Windows 创建两个启动菜单,在启动时可以选择是否要运行 Hyper-V。实现方法很简单,只需在 Windows 中以管理员身份运行命令提示符 cmd,然后:

1、运行 bcdedit /copy {current} /d “Windows 8 (关闭 Hyper-V)” 命令,随后会提示已经创建了另外一个启动菜单项,记下 { } 中的一串代码。

2、运行 bcdedit /set {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} hypervisorlaunchtype OFF 命令,将上面的代码替换掉这里的红色XXX代码即可,如下图:

image

再次启动 Windows 8 即可手动选择是否要启用 Hyper-V,在“关闭 Hyper-V”的模式中,即可运行 Vmware 虚拟机,而另一个选项则可以运行 Hyper-V 虚拟机,这样就可以避免为了运行 VMware 虚拟机而卸载 Hyper-V 功能了:

image

通过Grub引导Clonezilla再生龙

把U盘版(.zip)解压到U盘根目录,
在grub4dos配置文件中添加:
title Clonezilla live
kernel /live/vmlinuz boot=live config noswap nolocales edd=on nomodeset noprompt ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_keymap="" ocs_live_batch="no" ocs_lang="" vga=788 ip=frommedia
initrd /live/initrd.img

 

内存加载方法:

title Clonezilla live (To RAM)
kernel /live/vmlinuz boot=live config noswap nolocales edd=on nomodeset noprompt ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_keymap="" ocs_live_batch="no" ocs_lang="" vga=788 toram=filesystem.squashfs ip=frommedia nosplash
initrd /live/initrd.img