2014年12月2日 星期二

[openSuSE] Supermicro 重開機後無法進入OS/ Linux halts after reboot/shutdown -r

學校買了一台 Supermicro 6027TR-HTRF 4nodes的server

灌下去才發現灌好openSuSE 12.2以後, 只要重開機(reboots), 下次進OS就會卡在登入畫面


爬文發現不只openSuSE, Ubuntu似乎也有這個問題, 共通點是Supermicro的主機板

估計是bios的問題, 不確定


我的症狀:

當使用下列指令的 或用功能表restart時, 電腦可以關機, 但是重新開機後會停在OS的載入畫面
shutdown -r
reboot


Solution 1: [Success]

URL:
Issue:
reboot does a shutdown instead of rebooting
這比較不像我的症狀,但是真的可行

方法: 停用MEI driver (<-這個driver我不知道幹嘛的, 如果以後真的因為他而碰到其他問題, 我再向您們求助, 暫時沒有發現問題)

1. vim /etc/modprobe.d/blacklist.conf
#不一定叫做blacklist.conf, 像opensuse裡面叫做 50-blacklist.conf, 前面可能有前綴

2. 在檔案結尾加上以下兩行

# Make system reboot
blacklist mei

不過我的電腦重開機時, 跳登入畫面前會進入黑屏, KVM會自動跳到下一台電腦, 這個症狀別台電腦不會, 也許是負作用, 不過暫時沒事..


Solution 2: [Fail]

Issue:
Linux hang/freeze during reboots and restarts
URL:
其實我的症狀比較像這篇寫的

所以我照著去改, 讓grub開機的時候加上參數reboot=xx, 不過沒有用, 如果你的客戶照著這篇網站改過, 卻沒有用, 可以試試看Solution1, 兩種都有可能

欲修改grub開OS餵的參數, 要編輯這個文件 /etc/default/grub, 當中有一條GRUB_CMDLINE_LINUX=""

把它改成
GRUB_CMDLINE_LINUX="reboot=bios"
GRUB_CMDLINE_LINUX="reboot=acpi"

不行的話就照上面URL裡面提到的那10個參數一個一個試

2014年11月24日 星期一

OpenSuSE 12.2 中使用pptpd佈建VPN server,並設置NAT,防火牆設置,log設置

1. 首先 YaST中安裝package pptpd

2.pptpd vpn 相關的設定

vim /etc/pptpd.conf
添加以下設定
(在此我的server有兩張網卡,
本來就有區網 網段為192.168.0.x, 為了避開, 所以改成192.168.16.x,
一般分開兩網段比較方便管理,也有人用10.0.0.x)
# 開啟 debug (會寫到 /var/log/message) 測試完記得關閉
debug
# 連線數
connections 20
ppp /usr/sbin/pppd
option  /etc/ppp/pptpd-options
localip 192.168.16.1
remoteip    192.168.16.201-220
debug 測試的時候可以開(把#號拿掉)
local-ip是你主機的IP, 可故意分在不同網段
connections 可不寫

vim /etc/ppp/options
asyncmap 0
auth
crtscts
lock
hide-password
modem
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
noipx 


vim  /etc/ppp/pptpd-options
name MyVPN

# 與連線加密相關的設定
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nodefaultroute
lock
nobsdcomp

# 設定要分派的 DNS Server
ms-dns 168.95.1.1
ms-dns 8.8.8.8
# 指定 logfile
logfile /var/log/pptpd.log
# 設定閒置幾秒後自動斷線
idle 7200
最後編輯帳號密碼
vim /etc/ppp/chap-secrets
"username"      MyVPN   "password"    *



開啟 Forward,主要是為了能夠進行 NAT
vim /etc/sysctl.conf
 net.ipv4.ip_forward = 1

service network reload

3.啟動pptpd

最後啟動 pptpd 並且設定 pptpd 開機自動啟用
chkconfig --level 345 pptpd on
service pptpd start

檢查 pptpd是否有 run 起來:
service --status-all | grep pptp

note: 重啟pptpd的方法
service pptpd restart


3. 防火牆設置

opensuse 12.2內建SuSE2firewall ,我不會改iptables..
所以直接對internal的route設通通可以

vim /etc/sysconfig/SuSEfirewall2
記得備份!

裡面加入以下設定
#對internal 開放
FW_ALLOW_CLASS_ROUTING="int"

FW_ROUTE="yes"
FW_MASQUERADE="yes"

FW_DEV_INT="ppp+"
#如果對內本來還有別張網卡, ex eth1
#那就改成 "eth1 ppp+" 以空白隔開
 完成 


Appendix. 其他linux之防火牆設置

一般linux的話, 直接照著網路上常有的nat設定 for vpn即可(port 1723 與 gre協定)

先來做個備份吧

iptables-save > ./iptables_backup
note: 還原的方法
iptables-restore < ./iptables_backup

開始設定iptable
#開啟 forward
echo "1" > /proc/sys/net/ipv4/ip_forward
#pptp
iptables -t nat -A POSTROUTING -s 192.168.16.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -i eth0 -p gre -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp+ -j ACCEPT
 
Appendix.2 自訂log要記錄的資料
 vim /etc/ppp/ip-down.local
 以下為範例:
 (改完後記得還要chmod 把ip-down.local改成可執行 ex: chmod 777 /etc/ppp/ip-down.local)

#!/bin/bash

BASENAME=${0##*/}
INTERFACE=$1
DEVICE=$2
SPEED=$3
LOCALIP=$4
REMOTEIP=$5
IPPARAM=$6


echo "================================================" >> /var/log/pptpd.log
echo "log of clientIP: $6    username: $PEERNAME" >> /var/log/pptpd.log
echo "------------------------------------------------" >> /var/log/pptpd.log
echo "/etc/ppp/ip-down.local starts.." >> /var/log/pptpd.log
echo "time: `date -d today +%F,%T`" >> /var/log/pptpd.log
echo "interface: $1    device: $2" >> /var/log/pptpd.log
echo "assignIP: $5" >> /var/log/pptpd.log
echo "================================================" >> /var/log/pptpd.log
 
 
非常有幫助的資料:
在 Linux 安裝 VPN Server 教學 (pptpd on CentOS)  
PPTP协议的VPN服务器的搭建,包括pptpd的自动启动...  
 

2014年7月13日 星期日

Parallel HARQ processes 平行的HARQ程序

概念是從這篇介紹UMTS中HARQ程序的文章中看到的
http://letstalkumts.blogspot.tw/2011/10/harq-procedure.html

此篇前面敘述的前提應是UMTS中downlink部分,最後下面分點敘述才提到uplink部分



Automatic Repeat Request(ARQ)
是基本的重傳機制,reciver一旦發現收到的資料有誤,就全部捨棄,然後向sender要求重傳

Hybrid ARQ(HARQ)
則是檢查錯誤後,若有錯 就把資料buffer起來,並向sender要求重傳,然後根據buffer的data與重傳的data合併成無誤的結果 ( channel decoding and error detection)

Parallel HARQ processes
是用來避免重傳對throughput的影響。
當一個HARQ程序正在等待ACK時,第二個HARQ程序就可以趁此機會 在接下來的TTI傳送資料
這些parallel processes就稱為Stop and Wait processes

3GPP中,允許最大8個parallel HARQ processes被config給同一個UE (DL)



原文應在TS 36.213 section 7,其中註名HARQ process的最大數量

2014年3月5日 星期三

[Linear Programming] The Simplex Method in tableau / /線性規劃的Tableau方法之教學 (youtube)


影片有步驟,一步一步代數字很清楚,

原本的object funciton   MAX z =  x1 + 2 x2

subject to
x1 <= 2  ... (L1)
x2 <= 2  ... (L2)
x1+x2 <= 3  ... (L3)

加入slack variable以後變成
x1+       x3               = 2
      x2 +     + x4       = 2
x1+x2                +x5 = 3


然後先找一個initial的解(不一定最佳)

( basis = {x3,x4,x5} ,  non-basis = {x1,x2} )
x1 = x2 = 0,   x3 = 2, x4 = 2, x5 = 3 明顯式子會滿足限制式L1~L3

然後找一個能讓z增加的column, 影片中是先選x2, 作為working column

於是乎三條限制式都限制x2, 它找其中那個ratio最大的那一步, 就是在找哪一條式子限制x2最多

因此2:49那邊L2限制x2最多, 因此把代表該行的x4踢掉, x2近來( x2長大變成x2=2, x2進入basis),

此時basis = {x3, x2, x5}     non-basis={x1, x4}

接著把其它L1,L3的兩行內的x2消掉(為的讓L1,與L3都跟x2無關, 使x2固定在2)



照類似的步驟 5:08, L3對x1最嚴格, 因此把L3代表的x5踢離basis,

basis = {x1, x2, x3},   non-basis={x4,x5}

之後發現L4的係數皆負,

0 0 0 -1 -1

如此無法藉由增加non-basis而讓z變好(增加x4,x5的話, 乘上-號會使z變小),所以得到了最佳解(最大值)



影片如下↓