上一篇中我提到了如何破解RHEL上SQLServer的内存大小限制,但是Ubuntu上还有一道检查

这篇我将会讲解如何在3.5GB以下内存的Ubuntu中安装和运行SQLServer for Linux

a. 首先按照微软的给出的步骤安装和配置

https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-setup-ubuntu

b. 使用apt安装mssql的包时会提示这个错误

ERROR: This machine must have at least 3.25 gigabytes of memory to install Microsoft(R) SQL Server(R).

c. 通过分析deb包可以找到检查的地方在config脚本中

#!/bin/bash -e

# Source debconf library.
. /usr/share/debconf/confmodule db_version 2.0
db_capb backup let system_memory="$(awk '/MemTotal/ {print $2}' /proc/meminfo) / 1024" if [ $system_memory -lt 3250 ]; then
echo "ERROR: This machine must have at least 3.25 gigabytes of memory to install Microsoft(R) SQL Server(R)."
exit 1
fi

对于这种检查,可以修改这里的内容并重新打包deb包,也可以通过LD_PRELOAD来绕过错误的报告,接下来我会使用LD_PRELOAD

d. 使用LD_PRELOAD让所有进程的返回值都变成0

root@ubuntu:~# vi crack.c
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h> static void (*real_exit)(int status) = NULL; static void exit_init() {
real_exit = dlsym(RTLD_NEXT, "exit");
if (real_exit == NULL) {
fprintf(stderr, "dlsym error: %s\n", dlerror());
abort();
}
} void exit(int status) {
if (real_exit == NULL) {
exit_init();
}
real_exit(0);
}
root@ubuntu:~# gcc -Wall -shared -fPIC -o crack.so crack.c

e. 重新运行apt安装mssql包

root@ubuntu:~# env LD_PRELOAD=/root/crack.so apt-get install -y mssql-server

如果安装成功,你可以看到下面的消息

+-------------------------------------------------------------------+
| Please run /opt/mssql/bin/sqlservr-setup to complete the setup of |
| Microsoft(R) SQL Server(R). |
+-------------------------------------------------------------------+

f. 接下来和RHEL篇一样,破解程序文件

替换3250000000到512000000

root@ubuntu:~# cd /opt/mssql/bin/
root@ubuntu:/opt/mssql/bin# cp sqlservr sqlservr.old
root@ubuntu:/opt/mssql/bin# cp sqlpackage sqlpackage.old
root@ubuntu:/opt/mssql/bin# sed -i "s/\x80\x10\xb7\xc1/\x00\x80\x84\x1e/g" sqlservr
root@ubuntu:/opt/mssql/bin# sed -i "s/\x80\x10\xb7\xc1/\x00\x80\x84\x1e/g" sqlpackage

g. 重新配置mssql

root@ubuntu:/opt/mssql/bin# rm -rf /var/opt/mssql
root@ubuntu:/opt/mssql/bin# /opt/mssql/bin/sqlservr-setup
root@ubuntu:/opt/mssql/bin# systemctl status mssql-server

可以看到消息

● mssql-server.service - Microsoft(R) SQL Server(R) Database Engine
Loaded: loaded (/lib/systemd/system/mssql-server.service; disabled; vendor pr
Active: active (running) since Tue 2016-12-06 01:03:16 EST; 28s ago
Main PID: 9349 (sqlservr)
Tasks: 101
Memory: 458.7M
CPU: 4.296s
CGroup: /system.slice/mssql-server.service
├─9349 /opt/mssql/bin/sqlservr
└─9364 /opt/mssql/bin/sqlservr

到这里就已经大功告成了,上图



mssql刚启动就占了600MB的内存,所以微软设置3.5G的内存限制也不是没有道理的

mssql for linux似乎运行在一层windows的兼容层上,这也可能是内存占用大的原因

需要更低的资源消耗?考虑postgresql或mariadb吧

破解SQLServer for Linux预览版的3.5GB内存限制 (UBUNTU篇)的更多相关文章

  1. 破解SQLServer for Linux预览版的3.5GB内存限制 (RHEL篇)

    微软发布了SQLServer for Linux,但是安装竟然需要3.5GB内存,这让大部分云主机用户都没办法尝试这个新东西 这篇我将讲解如何破解这个内存限制 要看关键的可以直接跳到第6步,只需要替换 ...

  2. 破解SQLServer for Linux预览版的3.5GB内存限制 (RHEL篇) 转

    https://www.ancii.com/database/30842.html 微软发布了SQLServer for Linux,但是安装竟然需要3.5GB内存,这让大部分云主机用户都没办法尝试这 ...

  3. [干货来袭]MSSQL Server on Linux预览版安装教程(先帮大家踩坑)

    前言 昨天晚上微软爸爸开了全国开发者大会,会上的内容,我就不多说了,园子里面很多.. 我们唐总裁在今年曾今透漏过SQL Server love Linux,果不其然,这次开发者大会上就推出了MSSQL ...

  4. 微软发布 Windows Server 2016 预览版第三版,开发者要重点关注Nano Server

    微软已经发布 Windows Server 2016 和 System Center 2016 第三个技术预览版,已经提供下载.Windows Server 2016 技术预览版第三版也是首个包括了容 ...

  5. Win10桌面预览版14316更新内容大全

    下载更新: 安装之后右下角: Win10桌面预览版14316更新内容:       Windows上运行乌班图Bash:通过设置开启开发者模式,更新和安全>面向开发人员.然后搜索"Wi ...

  6. Windows 10预览版14316开启Bash命令支持

    00x0 前言 4月7日凌晨,微软推送了最新的Windows 10一周年更新预览版14316,其中重要的是原生支持Linux Bash命令行支持. 00x1 问题 如何开启Linux Bash命令行? ...

  7. Swift 3.0首个开发者预览版将在5月12日释出

    Swift团队在博客中宣布Swift 3.0语言首个开发者预览版将于5月12日释出,正式版将在4-6周之后推出.开发者预览阶段并无确定的更新周期和计划,不过Swift团队称努力将其控 制在4-6周内. ...

  8. 【译】Visual Studio 15 预览版更新说明

    序:恰逢Build2016大会召开,微软发布了VS2015的update2更新包和VS2016预览版.本人正在提升英文水平中,于是在这里对VS2016预览版的官方文档进行了部分翻译.因为VS有些功能使 ...

  9. Visual Studio 2015 预览版 - 支持跨平台开发Android/iOS应用程序(内置安卓模拟器)

    微软最近的惊人举动真多,对普通消费者Office 移动版宣布免费,对开发者也发布了完全免费的 VS2013 社区版! 不仅如此,就连 .Net 开发框架环境也竟然「开源」并且跨平台支持 Mac 及 L ...

随机推荐

  1. 关于 Chrome 浏览器中 onresize 事件的 Bug

    我在写插件时用到了 onresize 事件,在反复地测试后发现该事件在 Chrome 及 Opera(内核基本与 Chrome 相同,以下统称 Chrome)浏览器打开时就会执行,这种情况也许不能算作 ...

  2. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

  3. 戏说HTML5

    如果有非技术人员问你,HTML5是什么,你会怎么回答? 新的HTML规范... 给浏览器提供了牛逼能力,干以前不能干的事...(确切地说应该是给浏览器规定了许多新的接口标准,要求浏览器实现牛逼的功能. ...

  4. CSS3 3D立方体效果-transform也不过如此

    CSS3系列已经学习了一段时间了,第一篇文章写了一些css3的奇技淫巧,原文戳这里,还获得了较多网友的支持,在此谢过各位,你们的支持是我写文章最大的动力^_^. 那么这一篇文章呢,主要是通过一个3D立 ...

  5. 关于Layer弹出框初探

    layer至今仍作为layui的代表作,她的受众广泛并非偶然,而是这五年多的坚持,不断完善和维护.不断建设和提升社区服务,使得猿们纷纷自发传播,乃至于成为今天的Layui最强劲的源动力.目前,laye ...

  6. 免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)

    在生活中有一种东西几乎已经快要成为我们的另一个电子”身份证“,那就是二维码.无论是在软件开发的过程中,还是在普通用户的日常中,几乎都离不开二维码.二维码 (dimensional barcode) , ...

  7. iOS架构一个中型普通App的一些经验总结

    这一版比较完善的的App终于提交审核了.有时间写写自己的一些经验的总结了.自己主导的从0到比较成型的app到目前来说也只有两个,但是其中的很多东西都是大同小异.基本上是想到了什么就写什么,感觉写的不到 ...

  8. TemplateMethod(模块方法模式)

    /** * 模块模式 * @author TMAC-J * 将一个完整的算法分离,分成不同的模块 * 用于有很多步骤的时候,可能以后这些步骤还会增加,把这些步骤分离 * 将有共性的部分放在抽象类中 * ...

  9. trigger事件模拟

    事件模拟trigger 在操作DOM元素中,大多数事件都是用户必须操作才会触发事件,但有时,需要模拟用户的操作,来达到效果. 需求:页面初始化时触发搜索事件并获取input控件值,并打印输出(效果图如 ...

  10. iOS7 NavigationController 手势问题

    在iOS7中,如果使用了UINavigationController,那么系统自带的附加了一个从屏幕左边缘开始滑动可以实现pop的手势.但是,如果自定义了navigationItem的leftBarB ...