xml地图|网站地图|网站标签 [设为首页] [加入收藏]
VirtualBox虚拟机开机后台自启动,简单粗暴的更换
分类:操作系统

#ifndef __HSS_DBG_HSS__
#define __HSS_DBG_HSS__

/**************************************************************************************************
*  2009-06-28

    调试信息输出的宏版

    (1) 一定起作用的宏
        __trace, __trace_file, __trace_fmt, __trace_end

    (2) 需要定义 __dbg__才有作用的宏
        __if, _if, __trace_dbg, __trace_file_dbg, __trace_fmt_dbg, __trace_end_dbg

        (宏名dbg在后面,是为了在搜索__trace的时候可以找到所有的宏)

    (3) 用法示例:

      __trace "a=%d b=%drn", a, b); __trace_end

      __trace_file "a=%d b=%drn", a, b); __trace_end

      //注意:这个宏有参数 ,并且在宏的参数括号的后面,不能有逗号
      __trace_fmt(__FILE__, __LINE__, TRUE) "a=%d b=%d", a, b); __trace_end

      其中__FILE__可以替换为其他文件名,若是全路径会只显示文件名

    (4) __if 是长格式版,显示条件的内容

    (5) _if 是短格式版,不显示条件的内容,仅显示条件的值


**************************************************************************************************/
#include <shlwapi.h>
#pragma comment(lib, "shlwapi.lib")

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#define __trace_end    if (__sztrace && __sztrace[0])        
                        OutputDebugStringA(__sztrace);    
                    }

#define __trace    
            {    
                char __sztrace[260] = {0};    
                _snprintf(__sztrace, sizeof(__sztrace), 

#define __trace_file    
            {    
                char __sztrace[260] = {0};    
                int _n = _snprintf(__sztrace, sizeof(__sztrace)-1, "%08X %s/%d ", GetCurrentThreadId(), strrchr(__FILE__, '\') + 1, __LINE__);    
                _snprintf(__sztrace+_n, sizeof(__sztrace)-_n-1,

#define __trace_fmt(file, line, error)     
            {                            
                char __sztrace[260] = {0};    
                int __n = 0;            
                if (file && ((char*)file)[0])    
                {                        
                    LPCTSTR __p = strrchr(file, '\');    
                    if (__p == 0)        
                        __p = file;        
                    __n += _snprintf(__sztrace+__n, sizeof(__sztrace)-1-__n, "%s ", __p);    
                }                        
                if (line)                
                {                        
                    __n += _snprintf(__sztrace+__n, sizeof(__sztrace)-1-__n, "/%d ", line);    
                }                        
                if (error)                
                {                        
                    int se = GetLastError();    
                    LPSTR __lpMsgbuf = 0;    
                    if (FormatMessage(    
                        FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,    
                        NULL,            
                        se,            
                        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),        
                        (LPSTR) & __lpMsgbuf,    
                        0,                
                        NULL)            
                        )                
                    {                    
                        if (__lpMsgbuf && __lpMsgbuf[0])    
                        {                
                            __n += _snprintf(__sztrace+__n, sizeof(__sztrace)-1-__n, "%s (%d) ", __lpMsgbuf, se);    
                        }                
                        if (__lpMsgbuf)    
                        {    
                            LocalFree( __lpMsgbuf );    
                        }    
                    }                    
                }                        
                __n += _snprintf(__sztrace+__n, sizeof(__sztrace)-1-__n, 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//sample : __trace_bytes("profix", pData, cbData) __trace_end;
#define __trace_bytes(Profix, pData, cbData)    
        {                                        
            int __size = cbData * 3 + (Profix == 0 ? 0 : strlen(Profix)) + 32;    
            char* __sztrace = (char*)alloca(__size);    
            LPBYTE __p = (LPBYTE)pData;            
            if (__sztrace)                        
            {                                    
                int __n = _snprintf(__sztrace, __size-1, "%s", Profix);    
                for (int __l = 0 ; __l < cbData ; __l ++)    
                {                                
                    DWORD __d = (DWORD)__p[__l];    
                    __n += _snprintf(__sztrace + __n, __size-1-__n, "%02X ", __d);    
                }                                
                __n += _snprintf(__sztrace + __n, __size-1-__n, "(%d)", cbData);    
                __sztrace[__n] = 0;                
                __sztrace[__size-1] = 0;        
            }

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#define __FL__        __trace_file "rn");__trace_end;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifdef __dbg__

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#define __trace_end_dbg        __trace_end

#define __trace_dbg            __trace

#define __trace_file_dbg    __trace_file

#define __trace_fmt_dbg        __trace_fmt


/**************************************************************************************************
 *  2009-06-28
 显示程序的分支和判断的值
 长格式:__if 显示判断的条件的文本
 短格式:_if 不显示判断的条件的文本
**************************************************************************************************/

#define __if_false(x)        
    {                
        char __szif[256] = {0};    
        if (!(x))        
        {            
            _snprintf(__szif, sizeof(__szif)-1, "%s/%d %d == ("#x")rn", strrchr(__FILE__, '\') + 1, __LINE__, (x));    
            OutputDebugStringA(__szif);    
        }            
    }                
    if (x)

///////////////////////////////////////////////////////////////////////////////////////////////////

#define __if_true(x)        
    {                
        char __szif[256] = {0};    
        if (x)        
        {            
            _snprintf(__szif, sizeof(__szif)-1, "%s/%d %d == ("#x")rn", strrchr(__FILE__, '\') + 1, __LINE__, (x));    
            OutputDebugStringA(__szif);    
        }            
    }                
    if (x)

///////////////////////////////////////////////////////////////////////////////////////////////////

#define __if(x)        
    {                
        char __szif[256] = {0};    
        if (x)        
        {            
            _snprintf(__szif, sizeof(__szif)-1, "%s/%d %d == ("#x")rn", strrchr(__FILE__, '\') + 1, __LINE__, (x));    
        }            
        else        
        {            
            _snprintf(__szif, sizeof(__szif)-1, "%s/%d %d == ("#x")rn", strrchr(__FILE__, '\') + 1, __LINE__, (x));    
        }            
        OutputDebugStringA(__szif);    
    }                
    if (x)

///////////////////////////////////////////////////////////////////////////////////////////////////

#define _if(x)        
    {                
        char __szif[256] = {0};    
        if (x)        
        {            
            _snprintf(__szif, sizeof(__szif)-1, "%s/%d %d rn", strrchr(__FILE__, '\') + 1, __LINE__, (x));    
        }            
        else        
        {            
            _snprintf(__szif, sizeof(__szif)-1, "%s/%d %d rn", strrchr(__FILE__, '\') + 1, __LINE__, (x));    
        }            
        OutputDebugStringA(__szif);    
    }                
    if (x)

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#else

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#define _if(x)                if(x)
#define __if(x)                if(x)
#define __if_true(x)        if(x)
#define __if_false(x)        if(x)
#define __trace_end_dbg        }
#define __trace_dbg            if (0) { (
#define __trace_file_dbg    if (0) { (
#define __trace_fmt_dbg        if (0) { (

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#endif

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#endif

简介:本文希望帮助如本人一样的计算机小白,能够以最快的速度更换固态硬盘及安装系统。

win7下安装个linux虚拟机,学习下非常好。

 

但是每次使用linux的时候,都是打开virtualBox-->启动安装的linux系统-->再用远程桌面(SSH等)连接

1、提前将准备空白U盘(至少8G),利用UltraISO工具,或者软媒魔方,制作U盘启动盘。

每次手动打开比较麻烦,而且linux虚拟机也有窗口,比较冗杂。如果能开机自启,并且后台运行linux虚拟机(没有可见窗口),那就开心了。

    PS:需提前下载好WIN10的.iso镜像(itellyou). 

 

2、新买的固态硬盘无需4K对齐,出厂时已经做好了。所以,固态硬盘直接放入原机械硬盘位,机械硬盘放至光驱位,注意需要有光驱托架。

找到VirtualBox的安装目录                   

 我的virtualbox安装在 D:virualBox,进入这个目录,你会看到有个VBoxManage.exe文件,没有错,我们就是用它来启动虚拟机的。

怎么启动呢?命令行如下

  VBoxManage startvm <uuid>|<name> [--type gui|sdl|headless]

比如我新建的虚拟机叫study,那么

  D:virualBoxVBoxManage startvm study --type headless

*               --type headless:表示后台执行,没有窗口哦*

来,我们打开cmd,试下这个命令

  图片 1

提示已经启动了study虚拟机了。

 

 

    PS:购买时注意本机固态硬盘的尺寸和光驱位托盘的尺寸。买内存条要注意本机最高拓展大小,及频率。

开机自启动                

 现在看不到窗口了,但是还是需要手动输入命令行启动。如果能开机自启动就好了

1、首选我们要做一个bat脚本:virtualboxtStart.bat

2、里面写入上面的命令:D:virualBoxVBoxManage startvm study --type headless

3、把virtualboxtStart.bat放到C:ProgramDataMicrosoftWindowsStart MenuProgramsStartup,这个目录下的脚本是开机的时候自动运行的哦

 

好了,小工告成。重启电脑,你就会发现,win7偷偷帮我们启动了study这个虚拟机了。

可以用SSH连接,操作了。

 

注:也可以在cmd中使用命令行对虚拟机进行状态管理:

VBoxManage controlvm   <uuid>|<name>   pause|resume|reset|poweroff|savestate|

比如我想关闭:

D:virualBoxVBoxManage controlvm  study  poweroff

 

3、插入U盘,启动,按F2(华硕笔记本),更改启动优先级,将带U盘字样的存储盘设置为第一启动优先级。

4、开始安装WIN10。固态硬盘大约10分钟左右。

5、WIN10安装结束。

6、下载Ubuntu镜像(厦门大学镜像),制作新的U盘启动盘。

本文由澳门新葡亰手机版发布于操作系统,转载请注明出处:VirtualBox虚拟机开机后台自启动,简单粗暴的更换

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文