mirror of
https://github.com/adulau/aha.git
synced 2024-12-26 18:56:14 +00:00
chg: [uncommited] historical uncommited files added + paper and PhD thesis
This commit is contained in:
parent
f1039eec4d
commit
59e6fc3bc2
34 changed files with 46988 additions and 92163 deletions
2
README.md
Normal file
2
README.md
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
# AHA - Adaptive Honeypot Alternative (historical repository)
|
||||||
|
|
11
aha/aha.cfg
11
aha/aha.cfg
|
@ -4,18 +4,19 @@ sleeptime=3
|
||||||
#The treshold that is taken into account to decide whether the file should be
|
#The treshold that is taken into account to decide whether the file should be
|
||||||
#removed or not
|
#removed or not
|
||||||
timeout=3
|
timeout=3
|
||||||
logfile=/tmp/aha.log
|
logfile=/home/gerard/kernel/adaptive-honeypot/linux-2.6/aha/aha.log
|
||||||
#Directory where UML information is periodically stored
|
#Directory where UML information is periodically stored
|
||||||
exportdir=/tmp/ahaworker
|
exportdir=/tmp/ahaworker
|
||||||
|
|
||||||
[common]
|
[common]
|
||||||
#Directory where the kernel writes data
|
#Directory where the kernel writes data
|
||||||
outqueue=/home/gerard/dev/linux-2.6/out
|
outqueue=/home/gerard/kernel/adaptive-honeypot/linux-2.6/out
|
||||||
#Directory where the aha decision process writes data for the kernel
|
#Directory where the aha decision process writes data for the kernel
|
||||||
inqueue=/home/gerard/dev/linux-2.6/in
|
inqueue=/home/gerard/kernel/adaptive-honeypot/linux-2.6/in
|
||||||
|
|
||||||
[insults]
|
[insults]
|
||||||
maxidx = 3
|
maxidx = 3
|
||||||
|
|
||||||
[gui]
|
[game]
|
||||||
database=gui.db
|
cases=0.54
|
||||||
|
block=0.1
|
||||||
|
|
2237
aha/aha.log
Normal file
2237
aha/aha.log
Normal file
File diff suppressed because it is too large
Load diff
8199
aha/aha.log.recycled_pids
Normal file
8199
aha/aha.log.recycled_pids
Normal file
File diff suppressed because it is too large
Load diff
108
aha/aha.py
108
aha/aha.py
|
@ -6,58 +6,40 @@ import os,sys,random,getopt,ConfigParser
|
||||||
from pyinotify import *
|
from pyinotify import *
|
||||||
from ctypes import *
|
from ctypes import *
|
||||||
from ahalib import *
|
from ahalib import *
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
import sqlite3,os.path
|
|
||||||
class KernelEvents(ProcessEvent):
|
class KernelEvents(ProcessEvent):
|
||||||
|
|
||||||
def __init__(self,inqueue,outqueue,insultmaxidx, guidb):
|
def __init__(self,inqueue,outqueue,insultmaxidx,cases,block):
|
||||||
self.ahaa = AHAActions(inqueue,outqueue)
|
self.ahaa = AHAActions(inqueue,outqueue)
|
||||||
self.database = guidb
|
self.cases = cases
|
||||||
|
self.block = block
|
||||||
self.processtrees = ProcessTrees()
|
self.processtrees = ProcessTrees()
|
||||||
if os.path.exists(self.database):
|
|
||||||
self.con = sqlite3.connect(self.database)
|
#Blocks the sys_execve calls according the game
|
||||||
#Do it here to win time
|
def play(self):
|
||||||
self.cur = self.con.cursor()
|
#By default allow the system call
|
||||||
|
print "PLAY: mixed cases ",cases
|
||||||
|
print "PLAY: blockpr", blockpr
|
||||||
|
b = 0
|
||||||
|
x = random.random()
|
||||||
|
|
||||||
|
if x < self.cases:
|
||||||
|
print "PLAY: Cases choice: ",x
|
||||||
|
#i.e. in 0.54 blocking probability of 0.1 should be used
|
||||||
|
y = random.random()
|
||||||
|
print "PLAY: Blocking choice",y
|
||||||
|
if y < self.block:
|
||||||
|
b = 1
|
||||||
else:
|
else:
|
||||||
os.system('pwd')
|
# in the other cases another blocking probability should be used
|
||||||
print "[ERROR] Database file not found ",self.database
|
y = random.random()
|
||||||
sys.exit(1)
|
q = 1-self.block
|
||||||
|
print "PLAY: Other blocking probability should be used ",q
|
||||||
def askgui(self, filekey,msg):
|
print "PLAY: Other blocking choice: ",y
|
||||||
ret = False
|
if y < q:
|
||||||
program = os.path.basename(msg['file'][0])
|
b = 1
|
||||||
args = ','.join(msg['argument'][1:])
|
|
||||||
#Lets see what the user has defined
|
return b
|
||||||
action = 0
|
|
||||||
for row in self.cur.execute('SELECT action FROM perms WHERE cmd=?',[program]):
|
|
||||||
action = int(row[0])
|
|
||||||
if action == 0:
|
|
||||||
#Message is allowed
|
|
||||||
self.ahaa.create_message(filekey,block=0,exitcode=0, insult=0,
|
|
||||||
substitue=0)
|
|
||||||
ret = True
|
|
||||||
if action == 1:
|
|
||||||
#Message is blocked
|
|
||||||
self.ahaa.create_message(filekey, block=1,
|
|
||||||
exitcode=KERNEL_ERRORS.EACESS, insult=0,
|
|
||||||
substitue=0)
|
|
||||||
ret = True
|
|
||||||
if action == 2:
|
|
||||||
#User is insulted
|
|
||||||
self.ahaa.create_message(filekey, block=0, exitcode=0, insult=2,
|
|
||||||
substitue=0)
|
|
||||||
ret = True
|
|
||||||
|
|
||||||
#Update the gui shell this takes time but the message had already
|
|
||||||
#been transmitted to the kernel
|
|
||||||
outstr = program + "(" + args + ")"
|
|
||||||
self.cur.execute('INSERT INTO shell (cmd) VALUES (?)',[outstr])
|
|
||||||
self.con.commit()
|
|
||||||
#FIXME If fallback of decision to allow it is anyhow too late
|
|
||||||
#Therefore allows the kernel by it self the execution
|
|
||||||
return ret
|
|
||||||
#Exception handling is done in decision method
|
|
||||||
|
|
||||||
def decision(self,filekey,msg):
|
def decision(self,filekey,msg):
|
||||||
try:
|
try:
|
||||||
|
@ -71,28 +53,37 @@ class KernelEvents(ProcessEvent):
|
||||||
if type == 1:
|
if type == 1:
|
||||||
# Got sys_execve
|
# Got sys_execve
|
||||||
command = msg['file'][0]
|
command = msg['file'][0]
|
||||||
|
print "Got command: ",command, "in ",filekey
|
||||||
#Is there a new SSH connection?
|
#Is there a new SSH connection?
|
||||||
if msg['file'][0] == '/usr/sbin/sshd':
|
if msg['file'][0] == '/usr/sbin/sshd':
|
||||||
|
print "New user found pid=",pid,",ppid=",ppid
|
||||||
self.processtrees.addUser(pid)
|
self.processtrees.addUser(pid)
|
||||||
self.ahaa.create_message(filekey,block=0, exitcode=0,
|
self.ahaa.create_message(filekey,block=0, exitcode=0,
|
||||||
insult=0, substitue=0)
|
insult=0, substitue=0)
|
||||||
#print "New user found pid=",pid,",ppid=",ppid
|
|
||||||
return
|
return
|
||||||
|
|
||||||
#is this process induced by clone or sys_execve related to a user?
|
#is this process induced by clone or sys_execve related to a user?
|
||||||
if self.processtrees.searchTree(pid,ppid) == False:
|
if self.processtrees.searchTree(pid,ppid) == False:
|
||||||
|
print "Process belongs to the system, allow it"
|
||||||
#Note the process could also belong to a local
|
#Note the process could also belong to a local
|
||||||
#connected user
|
#connected user
|
||||||
self.ahaa.create_message(filekey,block=0, exitcode=0,
|
self.ahaa.create_message(filekey,block=0, exitcode=0,
|
||||||
insult=0, substitue=0)
|
insult=0, substitue=0)
|
||||||
#print "Process belongs to the system, allow it"
|
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
if msg.has_key('file'):
|
print "Process belongs to a user, play"
|
||||||
r = self.askgui(filekey,msg)
|
shouldBlock = self.play()
|
||||||
if r:
|
if shouldBlock:
|
||||||
return
|
print "User process is artifically blocked ..."
|
||||||
|
self.ahaa.create_message(filekey,block=1,
|
||||||
|
exitcode=KERNEL_ERRORS.EACESS,insult=0,
|
||||||
|
substitue=0)
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
print "User process is allowed ..."
|
||||||
|
self.ahaa.create_message(filekey,block=0,exitcode=0,insult=0,
|
||||||
|
substitue=0)
|
||||||
|
return
|
||||||
except KeyError,e:
|
except KeyError,e:
|
||||||
print "EXCEPTION: KeyError"
|
print "EXCEPTION: KeyError"
|
||||||
except IndexError,w:
|
except IndexError,w:
|
||||||
|
@ -151,14 +142,15 @@ if __name__ == '__main__':
|
||||||
inqueue = c.get('common','inqueue')
|
inqueue = c.get('common','inqueue')
|
||||||
outqueue = c.get('common','outqueue')
|
outqueue = c.get('common','outqueue')
|
||||||
insultmaxidx = int(c.get('insults','maxidx'))
|
insultmaxidx = int(c.get('insults','maxidx'))
|
||||||
guidb = c.get('gui','database')
|
cases = float(c.get('game','cases'))
|
||||||
|
blockpr = float(c.get('game','block'))
|
||||||
|
|
||||||
print "Setting up listeners..."
|
print "Setting up listeners..."
|
||||||
wm = WatchManager()
|
wm = WatchManager()
|
||||||
mask = IN_CLOSE_WRITE # watched events
|
mask = IN_CLOSE_WRITE # watched events
|
||||||
|
|
||||||
k = KernelEvents(inqueue, outqueue,insultmaxidx,guidb)
|
notifier = Notifier(wm, KernelEvents(inqueue,outqueue,insultmaxidx,
|
||||||
#If database is not valid exit here
|
cases,blockpr))
|
||||||
notifier = Notifier(wm,k)
|
|
||||||
wdd = wm.add_watch(outqueue, mask, rec=True)
|
wdd = wm.add_watch(outqueue, mask, rec=True)
|
||||||
|
|
||||||
print "Waiting for events..."
|
print "Waiting for events..."
|
||||||
|
|
168
aha/ahagui.py
168
aha/ahagui.py
|
@ -1,168 +0,0 @@
|
||||||
#!/usr/bin/python
|
|
||||||
#Adaptive Honeypot Demo
|
|
||||||
#Gerard Wagener
|
|
||||||
#License GPL
|
|
||||||
|
|
||||||
from PyQt4 import QtGui, QtCore
|
|
||||||
import getopt,sys,sqlite3
|
|
||||||
|
|
||||||
#Default values
|
|
||||||
commandList = ['uname', 'id','cat','wget','rm','ls','tar', 'vim']
|
|
||||||
database='gui.db'
|
|
||||||
shouldCreate = False
|
|
||||||
timerInterval = 500
|
|
||||||
|
|
||||||
def usage():
|
|
||||||
print """
|
|
||||||
Adaptive Honeypot Alternative - Demo
|
|
||||||
|
|
||||||
ahagui [-hdc]
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
-h --help Shows this screen
|
|
||||||
-d --database Specify the message exchange database; default value = gui.db
|
|
||||||
-c --create Create a new database
|
|
||||||
"""
|
|
||||||
|
|
||||||
def createDatabase():
|
|
||||||
try:
|
|
||||||
|
|
||||||
con = sqlite3.connect(database)
|
|
||||||
cur = con.cursor()
|
|
||||||
cur.execute('CREATE TABLE perms (cmd VARCHAR(100), action INTEGER)')
|
|
||||||
#Go through the command list and allow everything
|
|
||||||
for command in commandList:
|
|
||||||
cur.execute('INSERT INTO perms (cmd,action) VALUES (?,?)',
|
|
||||||
[command,0])
|
|
||||||
cur.execute('CREATE TABLE shell (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, \
|
|
||||||
cmd VARCHAR(255))')
|
|
||||||
con.commit()
|
|
||||||
print "Database successfully created"
|
|
||||||
|
|
||||||
except sqlite3.OperationalError,e:
|
|
||||||
print e
|
|
||||||
sys.stderr.write('Failed to create database '+database +'\n' )
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
def resetDatabase(con):
|
|
||||||
cur=con.cursor()
|
|
||||||
cur.execute('UPDATE perms SET action=0')
|
|
||||||
cur.execute('DELETE FROM shell')
|
|
||||||
con.commit()
|
|
||||||
|
|
||||||
class ActionCombo(QtGui.QComboBox):
|
|
||||||
|
|
||||||
def __init__(self,name,con):
|
|
||||||
QtGui.QComboBox.__init__(self)
|
|
||||||
|
|
||||||
self.con = con
|
|
||||||
self.actionList = ['Allow','Block','Insult']
|
|
||||||
self.addActions()
|
|
||||||
self.name = name
|
|
||||||
self.connect(self, QtCore.SIGNAL('currentIndexChanged (int)'),
|
|
||||||
QtCore.SLOT('handler(int)'))
|
|
||||||
|
|
||||||
def addActions(self):
|
|
||||||
for action in self.actionList:
|
|
||||||
self.addItem(action)
|
|
||||||
|
|
||||||
|
|
||||||
@QtCore.pyqtSlot('int')
|
|
||||||
def handler(self,value):
|
|
||||||
cur = self.con
|
|
||||||
cur.execute('UPDATE perms SET action=? WHERE cmd=?',[value,self.name])
|
|
||||||
con.commit()
|
|
||||||
|
|
||||||
class Example(QtGui.QWidget):
|
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, con):
|
|
||||||
self.con = con
|
|
||||||
QtGui.QWidget.__init__(self,None)
|
|
||||||
|
|
||||||
self.initUI()
|
|
||||||
self.lastId = 0
|
|
||||||
|
|
||||||
@QtCore.pyqtSlot()
|
|
||||||
def updateShell(self):
|
|
||||||
try:
|
|
||||||
cur = self.con.cursor()
|
|
||||||
for row in cur.execute('SELECT cmd,id FROM shell WHERE id>?',
|
|
||||||
[self.lastId]):
|
|
||||||
self.topright.appendPlainText(row[0])
|
|
||||||
self.lastId = int(row[1])
|
|
||||||
except sqlite3.OperationalError,e:
|
|
||||||
self.topright.appendPlainText('Warning! System calls are not available')
|
|
||||||
|
|
||||||
def initUI(self):
|
|
||||||
|
|
||||||
hbox = QtGui.QHBoxLayout(self)
|
|
||||||
|
|
||||||
topleft = QtGui.QWidget()
|
|
||||||
topleftScroll = QtGui.QScrollArea()
|
|
||||||
topleftgrid = QtGui.QGridLayout()
|
|
||||||
topleft.setLayout(topleftgrid)
|
|
||||||
|
|
||||||
self.topright = QtGui.QPlainTextEdit()
|
|
||||||
|
|
||||||
#Scroll test
|
|
||||||
for i in xrange(0,len(commandList)):
|
|
||||||
name = commandList[i]
|
|
||||||
topleftgrid.addWidget(QtGui.QLabel(name),i,0)
|
|
||||||
topleftgrid.addWidget(ActionCombo(name,self.con),i,1)
|
|
||||||
|
|
||||||
self.timer=QtCore.QTimer()
|
|
||||||
QtCore.QObject.connect(self.timer, QtCore.SIGNAL("timeout()"),
|
|
||||||
self.updateShell)
|
|
||||||
#FIXME Slot does work here?
|
|
||||||
QtCore.QMetaObject.connectSlotsByName(self)
|
|
||||||
self.timer.start(timerInterval)
|
|
||||||
|
|
||||||
splitter1 = QtGui.QSplitter(QtCore.Qt.Horizontal)
|
|
||||||
topleftScroll.setWidget(topleft)
|
|
||||||
splitter1.addWidget(topleftScroll)
|
|
||||||
splitter1.addWidget(self.topright)
|
|
||||||
|
|
||||||
|
|
||||||
hbox.addWidget(splitter1)
|
|
||||||
self.setLayout(hbox)
|
|
||||||
|
|
||||||
self.setGeometry(250, 200, 450, 350)
|
|
||||||
self.setWindowTitle('Adaptive Honeypot Alternative - Demo')
|
|
||||||
|
|
||||||
|
|
||||||
try:
|
|
||||||
opts, args = getopt.getopt(sys.argv[1:], "hcd:", ["help", "create",
|
|
||||||
"database="])
|
|
||||||
for o,a in opts:
|
|
||||||
if o in ('-h','--help'):
|
|
||||||
usage()
|
|
||||||
if o in ('-d','--database'):
|
|
||||||
database = a
|
|
||||||
if o in ('-c','--create'):
|
|
||||||
shouldCreate = True
|
|
||||||
|
|
||||||
except getopt.GetoptError, err:
|
|
||||||
print str(err)
|
|
||||||
usage()
|
|
||||||
|
|
||||||
|
|
||||||
if (shouldCreate):
|
|
||||||
createDatabase()
|
|
||||||
|
|
||||||
con=None
|
|
||||||
try:
|
|
||||||
con = sqlite3.connect(database)
|
|
||||||
resetDatabase(con)
|
|
||||||
|
|
||||||
except sqlite3.OperationalError,e:
|
|
||||||
sys.stderr.write('Cannot connect to message exchange database '
|
|
||||||
+database +'\n')
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
app = QtGui.QApplication([])
|
|
||||||
exm = Example(con)
|
|
||||||
exm.show()
|
|
||||||
app.exec_()
|
|
||||||
|
|
115
aha/ahakern01/aha-eye.py
Normal file
115
aha/ahakern01/aha-eye.py
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#Analyse log files generated from aha-worker and generate reports
|
||||||
|
#FIXME If a PID is reused during an SSH sessions aha might be confused
|
||||||
|
#a better solution than shadowing the process list is to contruct the
|
||||||
|
#process vectors on the fly
|
||||||
|
|
||||||
|
from ahalib import *
|
||||||
|
import getopt
|
||||||
|
#logfile='aha.log'
|
||||||
|
aha = AHAActions(None,None)
|
||||||
|
ptress = ProcessTrees()
|
||||||
|
|
||||||
|
def usage(exitcode):
|
||||||
|
print """
|
||||||
|
Analyze log files of aha-worker and recovers process trees
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
|
||||||
|
-h Shows this screen
|
||||||
|
-e Specifies an export file (i.e. accessible through apache)
|
||||||
|
-l Specifies the log file generated by aha-worker
|
||||||
|
|
||||||
|
AUTHOR
|
||||||
|
Gerard Wagener
|
||||||
|
|
||||||
|
LICENSE
|
||||||
|
|
||||||
|
GPL
|
||||||
|
"""
|
||||||
|
sys.exit(exitcode)
|
||||||
|
|
||||||
|
def extract_object(obj,exportdir):
|
||||||
|
try:
|
||||||
|
#FIXME Until now discard decisions from aha
|
||||||
|
if obj.has_key('block') and obj.has_key('insult'):
|
||||||
|
return
|
||||||
|
tp = int(obj['type'][0])
|
||||||
|
pid = int(obj['pid'][0])
|
||||||
|
ppid = int(obj['ppid'][0])
|
||||||
|
ts = obj['timestamp']
|
||||||
|
#handle sys_clone messages
|
||||||
|
if (tp == 2):
|
||||||
|
ptress.searchTree(pid,ppid)
|
||||||
|
|
||||||
|
|
||||||
|
#handle sys_execve
|
||||||
|
if (tp == 1):
|
||||||
|
file = obj['file'][0]
|
||||||
|
if file == '/usr/sbin/sshd':
|
||||||
|
print "Potential new user found: pid=",pid,"ppid=",ppid
|
||||||
|
ptress.addUser(pid)
|
||||||
|
ptress.annotateProcessList(obj)
|
||||||
|
return
|
||||||
|
if ptress.searchTree(pid,ppid):
|
||||||
|
print "User related command: ",file,"pid=",pid," ppid=",ppid
|
||||||
|
#Annotation info is only available in sys_execve messages
|
||||||
|
print "annotate process ",pid
|
||||||
|
ptress.annotateProcessList(obj)
|
||||||
|
#But need to record ppid for pid reusage .grrr
|
||||||
|
if (tp == 2):
|
||||||
|
if (ptress.searchTree(pid,ppid)):
|
||||||
|
ptress.annotateProcessList(obj)
|
||||||
|
# Thread exited
|
||||||
|
if (tp == 3):
|
||||||
|
if ptress.does_user_disconnects(pid):
|
||||||
|
#User disconnected generate a report, to avoid that other
|
||||||
|
#information is droped
|
||||||
|
print "List export is triggered for root ",pid
|
||||||
|
ptress.exportUserListTxt(exportdir)
|
||||||
|
ptress.silent_remove_pid(pid)
|
||||||
|
#Cleanup annotated list
|
||||||
|
print "Clean annotated list"
|
||||||
|
ptress.clean_aplist(pid)
|
||||||
|
except ValueError,e:
|
||||||
|
sys.stderr.write("Failed to parse "+str(obj) + '\n')
|
||||||
|
except KeyError,e:
|
||||||
|
sys.stderr.write("Incomplete message\n")
|
||||||
|
|
||||||
|
try:
|
||||||
|
line = None
|
||||||
|
logfile = None
|
||||||
|
exportdir = None
|
||||||
|
opts,args = getopt.getopt(sys.argv[1:],"hl:e:",["help","logfile=", "export="])
|
||||||
|
for o,a in opts:
|
||||||
|
if o in ('--help','-h'):
|
||||||
|
usage(0)
|
||||||
|
if o in ('--logfile','-l'):
|
||||||
|
logfile = a
|
||||||
|
if o in ('--export','-e'):
|
||||||
|
exportdir = a
|
||||||
|
if logfile == None:
|
||||||
|
sys.stderr.write('A log file from aha-worker needs to be specified\n')
|
||||||
|
sys.exit(1)
|
||||||
|
#Load config file and get opts
|
||||||
|
if exportdir == None:
|
||||||
|
sys.stderr.write('An export file needs to be specified\n')
|
||||||
|
sys.exit(1)
|
||||||
|
f = open(logfile,'r')
|
||||||
|
for line in f:
|
||||||
|
(timestamp,key,serobj) = line.split('|',2)
|
||||||
|
obj = aha.unserializeMessage(serobj)
|
||||||
|
extract_object(obj,exportdir)
|
||||||
|
f.close()
|
||||||
|
#Dump process trees
|
||||||
|
ptress.exportUserListTxt(exportdir)
|
||||||
|
sys.exit(0)
|
||||||
|
except ValueError,e:
|
||||||
|
#File may be incomplete
|
||||||
|
sys.stderr.write("Value error, file may be incomplete\n")
|
||||||
|
sys.stderr.write(str(e) + '\n')
|
||||||
|
sys.stderr.write(line+'\n')
|
||||||
|
|
||||||
|
except getopt.GetoptError,e:
|
||||||
|
sys.stderr.write(str(e)+'\n')
|
||||||
|
sys.exit(1)
|
145
aha/ahakern01/aha-worker.py
Normal file
145
aha/ahakern01/aha-worker.py
Normal file
|
@ -0,0 +1,145 @@
|
||||||
|
#Cleans up messages laying around from the kernel / aha framework
|
||||||
|
#Copyright (c) 2010 Gerard Wagener
|
||||||
|
#LICENSE GPL
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#We assume that after the timeout the message must be consummed and then
|
||||||
|
#it is removed
|
||||||
|
#Do this as seperated process aiming to speed up at maximum time
|
||||||
|
#for the aha tak to take the decisions
|
||||||
|
#The aha framework can be launched then in screen
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
import dircache,os.path,time,sys,ConfigParser,getopt
|
||||||
|
from ahalib import *
|
||||||
|
|
||||||
|
class PeriodTaks():
|
||||||
|
#Define message types
|
||||||
|
FROM_KERNEL = 1
|
||||||
|
TO_KERNEL = 2
|
||||||
|
|
||||||
|
def __init__(self,outqueue,inqueue, timeout,sleeptime, logfile):
|
||||||
|
self.outqueue= outqueue
|
||||||
|
self.inqueue = inqueue
|
||||||
|
self.timeout = timeout
|
||||||
|
self.sleeptime = sleeptime
|
||||||
|
self.logfile = logfile
|
||||||
|
#Log file descriptor
|
||||||
|
self.lfd = open(logfile,'a')
|
||||||
|
self.aha = AHAActions(inqueue,outqueue)
|
||||||
|
|
||||||
|
#Make close action externally available
|
||||||
|
def closeLogFile(self):
|
||||||
|
self.lfd.close()
|
||||||
|
|
||||||
|
def remove_old_msg(self,queue):
|
||||||
|
#Get current date if the files are older than the timeout remove them
|
||||||
|
t0 = int(time.strftime("%s"))
|
||||||
|
#FIXME os.walkdir, os.listdir could also be used
|
||||||
|
dircache.reset()
|
||||||
|
files = dircache.listdir(queue)
|
||||||
|
for file in files:
|
||||||
|
af = queue + os.sep + file
|
||||||
|
s = os.stat(af)
|
||||||
|
t1 = int(s[os.path.stat.ST_CTIME])
|
||||||
|
delta = t0 - t1
|
||||||
|
if (delta > self.timeout):
|
||||||
|
#Old file was found record it
|
||||||
|
if queue == self.outqueue:
|
||||||
|
self.record_message(af,t1,PeriodTaks.FROM_KERNEL)
|
||||||
|
if queue == self.inqueue:
|
||||||
|
self.record_message(af,t1,PeriodTaks.TO_KERNEL)
|
||||||
|
#Remove it
|
||||||
|
self.aha.silent_clean(af)
|
||||||
|
|
||||||
|
def clean_input_queue(self):
|
||||||
|
try:
|
||||||
|
self.remove_old_msg(self.inqueue)
|
||||||
|
except OSError,e:
|
||||||
|
sys.stderr.write(str(e))
|
||||||
|
|
||||||
|
|
||||||
|
def clean_output_queue(self):
|
||||||
|
try:
|
||||||
|
self.remove_old_msg(self.outqueue)
|
||||||
|
except OSError,e:
|
||||||
|
sys.stderr.write(str(e))
|
||||||
|
|
||||||
|
#Parse the file an put the information in a log file for later processing
|
||||||
|
#One log file is handier than for each message a file
|
||||||
|
#Take timestamps when the kernel created the file
|
||||||
|
def record_message(self,filename, ctime,type):
|
||||||
|
try:
|
||||||
|
if type == PeriodTaks.FROM_KERNEL:
|
||||||
|
msg = self.aha.load_file(filename)
|
||||||
|
logEntry = self.aha.serializeKernelMessage(msg,filename,ctime)
|
||||||
|
self.lfd.write(logEntry)
|
||||||
|
|
||||||
|
if type == PeriodTaks.TO_KERNEL:
|
||||||
|
msg = self.aha.get_kernel_reply(filename)
|
||||||
|
logEntry=self.aha.serializeAhaReply(msg,filename,ctime)
|
||||||
|
self.lfd.write(logEntry)
|
||||||
|
except IOError,e:
|
||||||
|
sys.stderr.write('Failed to record message: %s\n'%filename)
|
||||||
|
|
||||||
|
def usage(exitcode):
|
||||||
|
print """
|
||||||
|
Do periodic tasks, like cleanups from the AHA framework
|
||||||
|
|
||||||
|
-h Shows this screen
|
||||||
|
-c Specifies the config file
|
||||||
|
|
||||||
|
AUTHOR
|
||||||
|
|
||||||
|
Gerard Wagener
|
||||||
|
|
||||||
|
LICENSE
|
||||||
|
|
||||||
|
GPL
|
||||||
|
|
||||||
|
"""
|
||||||
|
return exitcode
|
||||||
|
|
||||||
|
|
||||||
|
configfile = None
|
||||||
|
isHelp = 0
|
||||||
|
p = None
|
||||||
|
try:
|
||||||
|
opts,args = getopt.getopt(sys.argv[1:],"hc:",["help","config="])
|
||||||
|
for o,a in opts:
|
||||||
|
if o in ('--help','-h'):
|
||||||
|
usage(0)
|
||||||
|
if o in ('--config','-c'):
|
||||||
|
configfile = a
|
||||||
|
if configfile == None:
|
||||||
|
sys.stderr.write('A configuration file needs to be specified\n')
|
||||||
|
sys.exit(1)
|
||||||
|
#Load config file and get opts
|
||||||
|
c=ConfigParser.ConfigParser()
|
||||||
|
c.read(configfile)
|
||||||
|
timeout = int(c.get('worker','timeout'))
|
||||||
|
sleeptime = int(c.get('worker','sleeptime'))
|
||||||
|
inqueue = c.get('common','inqueue')
|
||||||
|
outqueue= c.get('common','outqueue')
|
||||||
|
logfile = c.get('worker','logfile')
|
||||||
|
p = PeriodTaks(outqueue, inqueue, timeout,sleeptime,logfile)
|
||||||
|
print "Start working ..."
|
||||||
|
while True:
|
||||||
|
p.clean_input_queue()
|
||||||
|
p.clean_output_queue()
|
||||||
|
time.sleep(sleeptime)
|
||||||
|
print "Resume ..."
|
||||||
|
|
||||||
|
sys.exit(0)
|
||||||
|
except getopt.GetoptError,e:
|
||||||
|
usage(1)
|
||||||
|
except ConfigParser.NoOptionError,e:
|
||||||
|
sys.stderr.write('Configuration error. (%s)\n'%(str(e)))
|
||||||
|
sys.exit(1)
|
||||||
|
except KeyboardInterrupt,e:
|
||||||
|
if p !=None:
|
||||||
|
p.closeLogFile()
|
||||||
|
sys.exit(0)
|
||||||
|
#Should not be reached
|
||||||
|
sys.exit(0)
|
22
aha/ahakern01/aha.cfg
Normal file
22
aha/ahakern01/aha.cfg
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
[worker]
|
||||||
|
#The worker is periodically polling for work
|
||||||
|
sleeptime=3
|
||||||
|
#The treshold that is taken into account to decide whether the file should be
|
||||||
|
#removed or not
|
||||||
|
timeout=3
|
||||||
|
logfile=/home/gerard/kernel/adaptive-honeypot/linux-2.6/aha/aha.log
|
||||||
|
#Directory where UML information is periodically stored
|
||||||
|
exportdir=/tmp/ahaworker
|
||||||
|
|
||||||
|
[common]
|
||||||
|
#Directory where the kernel writes data
|
||||||
|
outqueue=/home/gerard/kernel/adaptive-honeypot/linux-2.6/out
|
||||||
|
#Directory where the aha decision process writes data for the kernel
|
||||||
|
inqueue=/home/gerard/kernel/adaptive-honeypot/linux-2.6/in
|
||||||
|
|
||||||
|
[insults]
|
||||||
|
maxidx = 3
|
||||||
|
|
||||||
|
[game]
|
||||||
|
cases=0.54
|
||||||
|
block=0.1
|
171
aha/ahakern01/aha.py
Normal file
171
aha/ahakern01/aha.py
Normal file
|
@ -0,0 +1,171 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#Core of the adaptive honeypot alternative
|
||||||
|
# (c) Gerard Wagener
|
||||||
|
#License GPL
|
||||||
|
import os,sys,random,getopt,ConfigParser
|
||||||
|
from pyinotify import *
|
||||||
|
from ctypes import *
|
||||||
|
from ahalib import *
|
||||||
|
|
||||||
|
class KernelEvents(ProcessEvent):
|
||||||
|
|
||||||
|
def __init__(self,inqueue,outqueue,insultmaxidx,cases,block):
|
||||||
|
self.ahaa = AHAActions(inqueue,outqueue)
|
||||||
|
self.cases = cases
|
||||||
|
self.block = block
|
||||||
|
self.processtrees = ProcessTrees()
|
||||||
|
|
||||||
|
#Blocks the sys_execve calls according the game
|
||||||
|
def play(self):
|
||||||
|
#By default allow the system call
|
||||||
|
print "PLAY: mixed cases ",cases
|
||||||
|
print "PLAY: blockpr", blockpr
|
||||||
|
b = 0
|
||||||
|
x = random.random()
|
||||||
|
|
||||||
|
if x < self.cases:
|
||||||
|
print "PLAY: Cases choice: ",x
|
||||||
|
#i.e. in 0.54 blocking probability of 0.1 should be used
|
||||||
|
y = random.random()
|
||||||
|
print "PLAY: Blocking choice",y
|
||||||
|
if y < self.block:
|
||||||
|
b = 1
|
||||||
|
else:
|
||||||
|
# in the other cases another blocking probability should be used
|
||||||
|
y = random.random()
|
||||||
|
q = 1-self.block
|
||||||
|
print "PLAY: Other blocking probability should be used ",q
|
||||||
|
print "PLAY: Other blocking choice: ",y
|
||||||
|
if y < q:
|
||||||
|
b = 1
|
||||||
|
|
||||||
|
return b
|
||||||
|
|
||||||
|
def decision(self,filekey,msg):
|
||||||
|
try:
|
||||||
|
pid = int(msg['pid'][0])
|
||||||
|
ppid = int(msg['ppid'][0])
|
||||||
|
type = int(msg['type'][0])
|
||||||
|
#Was a process closed?
|
||||||
|
if type == 3:
|
||||||
|
self.processtrees.silent_remove_pid(pid)
|
||||||
|
return
|
||||||
|
if type == 1:
|
||||||
|
# Got sys_execve
|
||||||
|
command = msg['file'][0]
|
||||||
|
print "Got command: ",command, "in ",filekey
|
||||||
|
#Is there a new SSH connection?
|
||||||
|
if msg['file'][0] == '/usr/sbin/sshd':
|
||||||
|
print "New user found pid=",pid,",ppid=",ppid
|
||||||
|
self.processtrees.addUser(pid)
|
||||||
|
self.ahaa.create_message(filekey,block=0, exitcode=0,
|
||||||
|
insult=0, substitue=0)
|
||||||
|
return
|
||||||
|
|
||||||
|
#is this process induced by clone or sys_execve related to a user?
|
||||||
|
if self.processtrees.searchTree(pid,ppid) == False:
|
||||||
|
print "Process belongs to the system, allow it"
|
||||||
|
#Note the process could also belong to a local
|
||||||
|
#connected user
|
||||||
|
self.ahaa.create_message(filekey,block=0, exitcode=0,
|
||||||
|
insult=0, substitue=0)
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
print "Process belongs to a user, play"
|
||||||
|
shouldBlock = self.play()
|
||||||
|
if shouldBlock:
|
||||||
|
print "User process is artifically blocked ..."
|
||||||
|
self.ahaa.create_message(filekey,block=1,
|
||||||
|
exitcode=KERNEL_ERRORS.EACESS,insult=0,
|
||||||
|
substitue=0)
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
print "User process is allowed ..."
|
||||||
|
self.ahaa.create_message(filekey,block=0,exitcode=0,insult=0,
|
||||||
|
substitue=0)
|
||||||
|
return
|
||||||
|
except KeyError,e:
|
||||||
|
print "EXCEPTION: KeyError"
|
||||||
|
except IndexError,w:
|
||||||
|
print "EXCEPTION: IndexError"
|
||||||
|
except ValueError,s:
|
||||||
|
print "EXCEPTION: ValueError"
|
||||||
|
#Default action; allow-> out of memory
|
||||||
|
self.ahaa.create_message(filekey,block=0,exitcode=0,insult=0,
|
||||||
|
substitue=0)
|
||||||
|
|
||||||
|
def process_IN_CLOSE_WRITE(self, event):
|
||||||
|
try:
|
||||||
|
filename = os.path.join(event.path,event.name)
|
||||||
|
msg = self.ahaa.load_file(filename)
|
||||||
|
#Send back a message
|
||||||
|
self.decision(event.name,msg)
|
||||||
|
except IOError,e:
|
||||||
|
sys.stderr.write("Kernel message (%s) could not be loaded or \
|
||||||
|
decison failed\n"%event.name)
|
||||||
|
|
||||||
|
def usage(exitcode):
|
||||||
|
print """
|
||||||
|
Setup listener for kernel events of the user mode linux
|
||||||
|
-h Shows this screen
|
||||||
|
-c Specifies the config file
|
||||||
|
|
||||||
|
AUTHOR
|
||||||
|
Gerard Wagener
|
||||||
|
|
||||||
|
LICENSE
|
||||||
|
GPL
|
||||||
|
"""
|
||||||
|
sys.exit(exitcode)
|
||||||
|
def shutdown(notifier):
|
||||||
|
if notifier != None:
|
||||||
|
print "Stop listening..."
|
||||||
|
notifier.stop()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
notifier = None
|
||||||
|
configfile = None
|
||||||
|
try:
|
||||||
|
opts,args = getopt.getopt(sys.argv[1:],"hc:",["help","config="])
|
||||||
|
for o,a in opts:
|
||||||
|
if o in ('--help','-h'):
|
||||||
|
usage(0)
|
||||||
|
if o in ('--config','-c'):
|
||||||
|
configfile = a
|
||||||
|
|
||||||
|
if configfile == None:
|
||||||
|
sys.stderr.write('A configuration file needs to be specified\n')
|
||||||
|
sys.exit(1)
|
||||||
|
#Load config file and get opts
|
||||||
|
c=ConfigParser.ConfigParser()
|
||||||
|
c.read(configfile)
|
||||||
|
inqueue = c.get('common','inqueue')
|
||||||
|
outqueue = c.get('common','outqueue')
|
||||||
|
insultmaxidx = int(c.get('insults','maxidx'))
|
||||||
|
cases = float(c.get('game','cases'))
|
||||||
|
blockpr = float(c.get('game','block'))
|
||||||
|
|
||||||
|
print "Setting up listeners..."
|
||||||
|
wm = WatchManager()
|
||||||
|
mask = IN_CLOSE_WRITE # watched events
|
||||||
|
|
||||||
|
notifier = Notifier(wm, KernelEvents(inqueue,outqueue,insultmaxidx,
|
||||||
|
cases,blockpr))
|
||||||
|
wdd = wm.add_watch(outqueue, mask, rec=True)
|
||||||
|
|
||||||
|
print "Waiting for events..."
|
||||||
|
while True:
|
||||||
|
# process the queue of events as explained above
|
||||||
|
notifier.process_events()
|
||||||
|
if notifier.check_events():
|
||||||
|
# read notified events and enqeue them
|
||||||
|
notifier.read_events()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
# destroy the inotify's instance on this interrupt (stop monitoring)
|
||||||
|
shutdown(notifier)
|
||||||
|
except getopt.GetoptError,e:
|
||||||
|
usage(1)
|
||||||
|
except ConfigParser.NoOptionError,e:
|
||||||
|
sys.stderr.write('Configuration error. (%s)\n'%(str(e)))
|
||||||
|
sys.exit(1)
|
||||||
|
sys.exit(0)
|
459
aha/ahakern01/ahalib.py
Normal file
459
aha/ahakern01/ahalib.py
Normal file
|
@ -0,0 +1,459 @@
|
||||||
|
#Common functions shared between aha and aha-worker
|
||||||
|
#FIXME Memory leak in process trees -> need to clean up them
|
||||||
|
#triggered by the kernel
|
||||||
|
from ctypes import *
|
||||||
|
import os,sys,random,datetime,json,time, unittest
|
||||||
|
|
||||||
|
class AHAActions:
|
||||||
|
|
||||||
|
def __init__(self,inqueue,outqueue):
|
||||||
|
self.inqueue = inqueue
|
||||||
|
self.outqueue = outqueue
|
||||||
|
|
||||||
|
#Can trow IOError
|
||||||
|
def load_file(self,filename):
|
||||||
|
msg = {}
|
||||||
|
s = os.stat(filename)
|
||||||
|
ts = int(s[os.path.stat.ST_CTIME])
|
||||||
|
msg['timestamp'] = ts
|
||||||
|
fp = open(filename,'r')
|
||||||
|
for i in fp.read().split('\n'):
|
||||||
|
try:
|
||||||
|
(key,value) = i.split('=',1)
|
||||||
|
if msg.has_key(key) == False:
|
||||||
|
msg[key]=[]
|
||||||
|
msg[key].append(value)
|
||||||
|
except ValueError,e:
|
||||||
|
pass
|
||||||
|
fp.close()
|
||||||
|
return msg
|
||||||
|
|
||||||
|
def silent_clean(self,filename):
|
||||||
|
try:
|
||||||
|
os.unlink(filename)
|
||||||
|
except OSError,e:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
#Can trow IOError
|
||||||
|
def create_message(self,filename,block,exitcode,substitue,insult):
|
||||||
|
print "CREATE_MESSAGE ",filename,"block=",block
|
||||||
|
try:
|
||||||
|
reply = ReplyMessage(block=block,exitcode=exitcode,substitue=substitue,
|
||||||
|
insult = insult)
|
||||||
|
fn = self.inqueue + os.sep + filename
|
||||||
|
f = open (fn,'wb')
|
||||||
|
f.write(reply)
|
||||||
|
f.close()
|
||||||
|
reply="(key=%s, block=%d,exitcode=%d,substitue=%d,insult=%d)"\
|
||||||
|
%(filename,block,exitcode, substitue,insult)
|
||||||
|
return reply
|
||||||
|
except IOError,e:
|
||||||
|
sys.stderr.write('Could not create reply file=(%s)\n'%filename)
|
||||||
|
#Propagate Error to higher level. Here it is only logged
|
||||||
|
raise IOError(e)
|
||||||
|
|
||||||
|
#Takes a parses kernel message as input and returns a serialized string
|
||||||
|
#that can be put in a log file
|
||||||
|
def serializeKernelMessage(self,msg,filename,ctime):
|
||||||
|
data = json.dumps(msg)
|
||||||
|
obj=datetime.datetime.fromtimestamp(ctime)
|
||||||
|
fn = os.path.basename(filename)
|
||||||
|
#FIXME aaargg timestamps are a mess in python
|
||||||
|
#Use str() which is not portable, but I do not want to spend hours
|
||||||
|
#of this shit
|
||||||
|
sd = str(obj)
|
||||||
|
return "%s|%s|%s\n"%(sd,fn,data);
|
||||||
|
|
||||||
|
def unserializeMessage(self,serobj):
|
||||||
|
return json.loads(serobj)
|
||||||
|
#Can throw IOError
|
||||||
|
#FIXME not tested
|
||||||
|
def get_kernel_reply(self,filename):
|
||||||
|
fp = open(filename,'rb')
|
||||||
|
buf = fp.read()
|
||||||
|
fp.close()
|
||||||
|
cstring = create_string_buffer(buf)
|
||||||
|
rmsg = cast(pointer(cstring), POINTER(ReplyMessage)).contents
|
||||||
|
return rmsg
|
||||||
|
|
||||||
|
#FIXME not tested
|
||||||
|
#Take a message read from get_kernel_reply function and return a string representation
|
||||||
|
def serializeAhaReply(self,m,filename,ctime):
|
||||||
|
#Create generic hash. Structure may change
|
||||||
|
msg= {'block':m.block,'exitcode':m.exitcode,'substitue':m.substitue,'insult':m.insult};
|
||||||
|
#kernel message is also a generic hash table; reuse it
|
||||||
|
return self.serializeKernelMessage(msg,filename,ctime)
|
||||||
|
|
||||||
|
class KERNEL_ERRORS():
|
||||||
|
EPERM = -1
|
||||||
|
ENOENT = -2
|
||||||
|
EIO = -5
|
||||||
|
ENOMEM = -12
|
||||||
|
EACESS = -13
|
||||||
|
EFAULT = -14
|
||||||
|
EPIPE = -32
|
||||||
|
ETXTBSY = -26
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.evec = (EPERM,ENOENT,EIO,ENOMEM,EACESS,EFAULT,EPIPE,ETXTBSY)
|
||||||
|
class ReplyMessage(Structure):
|
||||||
|
_fields_ = [ ("block" , c_int), ("exitcode" , c_int),
|
||||||
|
("substitue" ,c_int),("insult" , c_int) ]
|
||||||
|
|
||||||
|
class ProcessTrees:
|
||||||
|
def __init__(self):
|
||||||
|
self.userList = {}
|
||||||
|
self.processList = {}
|
||||||
|
self.foundUser = 0
|
||||||
|
self.aplist = {}
|
||||||
|
#This first clone of /usr/sbin/sshd does not has the
|
||||||
|
#SSH specific environment variables. Therefore ask all the
|
||||||
|
#children
|
||||||
|
def search_ssh_info(self,pid):
|
||||||
|
#print "Searching info for ",pid
|
||||||
|
children = self.get_children(pid)
|
||||||
|
#print "Children of pid",children
|
||||||
|
for child in children:
|
||||||
|
if self.aplist.has_key(child):
|
||||||
|
#print "Found annotations for child %d"%child
|
||||||
|
if self.aplist[child].has_key('ssh_client'):
|
||||||
|
#print "Found ssh info for child %d"%child
|
||||||
|
return self.aplist[child]['ssh_client']
|
||||||
|
# Retuns None if ssh related information was not found
|
||||||
|
sys.stderr.write('ERROR: No child provided SSH information\n')
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Record additional information about processes like SSH parameters
|
||||||
|
# and timestamps etc
|
||||||
|
#TODO annotate SSH_LOGNAME
|
||||||
|
#TODO annotate used terminal
|
||||||
|
def annotateProcessList(self,msg):
|
||||||
|
try:
|
||||||
|
pid = int(msg['pid'][0])
|
||||||
|
ppid = int(msg['ppid'][0])
|
||||||
|
if self.aplist.has_key(pid) == False:
|
||||||
|
#Got a new process, so create a new dictionary for meta data
|
||||||
|
self.aplist[pid] = dict()
|
||||||
|
#Store the parent
|
||||||
|
self.aplist[pid]['parent'] = ppid
|
||||||
|
#Does the message has a file name ?
|
||||||
|
if msg.has_key('file'):
|
||||||
|
self.aplist[pid]['file'] = msg['file'][0]
|
||||||
|
#print "Annotated pid=",pid, "file=",msg['file'][0]
|
||||||
|
#Does the message has SSH related information?
|
||||||
|
if msg.has_key('env'):
|
||||||
|
# Go through the environment list
|
||||||
|
for ev in msg['env']:
|
||||||
|
if ev.startswith('SSH_CLIENT='):
|
||||||
|
ev = ev.replace('SSH_CLIENT=','')
|
||||||
|
self.aplist[pid]['ssh_client'] = ev
|
||||||
|
print "Annotated with ssh info pid=", pid," ev",ev
|
||||||
|
# Is there a timestamp?
|
||||||
|
if msg.has_key('timestamp'):
|
||||||
|
self.aplist[pid]['timestamp'] = msg['timestamp']
|
||||||
|
|
||||||
|
except ValueError,e:
|
||||||
|
print e
|
||||||
|
pass
|
||||||
|
except IndexError,e:
|
||||||
|
print e
|
||||||
|
pass
|
||||||
|
|
||||||
|
def addUser(self,pid):
|
||||||
|
self.userList[pid] = 1 #Shortcut to init
|
||||||
|
|
||||||
|
def __searchTree(self, pid, ppid):
|
||||||
|
#Always add it pid and ppid the list
|
||||||
|
self.processList[pid] = ppid
|
||||||
|
if self.userList.has_key(ppid):
|
||||||
|
#print "DEBUG: user related command"
|
||||||
|
self.foundUser = 1
|
||||||
|
return
|
||||||
|
#print "DEBUG: Searching ppid ",ppid, "in ",self.processList
|
||||||
|
if self.processList.has_key(ppid):
|
||||||
|
#print "DEBUG: found parent of ",pid, "which is ",ppid
|
||||||
|
self.searchTree(ppid,self.processList[ppid])
|
||||||
|
else:
|
||||||
|
#print "DEBUG: Cannot find parent of ",ppid
|
||||||
|
pass
|
||||||
|
|
||||||
|
def searchTree(self,pid,ppid):
|
||||||
|
if pid == ppid:
|
||||||
|
# Avoid recursion error
|
||||||
|
return 0
|
||||||
|
self.foundUser = 0
|
||||||
|
self.__searchTree(pid,ppid)
|
||||||
|
#If the process belongs to the system remove it, to free up memory
|
||||||
|
if self.foundUser == False:
|
||||||
|
self.processList.pop(pid)
|
||||||
|
return self.foundUser
|
||||||
|
|
||||||
|
#Recursively get the children of a process
|
||||||
|
#Internal function
|
||||||
|
def __get_children(self,pid):
|
||||||
|
#Establish a list of children for a process
|
||||||
|
children = []
|
||||||
|
#FIXME not efficient; Go through all the processes
|
||||||
|
for p in self.processList.keys():
|
||||||
|
if self.processList[p] == pid:
|
||||||
|
children.append(p)
|
||||||
|
#Record them in a global list too
|
||||||
|
self.children[p]=1
|
||||||
|
if len(children) == 0:
|
||||||
|
return
|
||||||
|
#Go through the children list and do a recursion
|
||||||
|
for p in children:
|
||||||
|
self.__get_children(p)
|
||||||
|
|
||||||
|
def get_children(self,pid):
|
||||||
|
#Empty the list; do not want duplicates
|
||||||
|
self.children = dict()
|
||||||
|
self.__get_children(pid)
|
||||||
|
return self.children.keys()
|
||||||
|
|
||||||
|
def silent_remove_pid(self,pid):
|
||||||
|
try:
|
||||||
|
if self.processList.has_key(pid):
|
||||||
|
self.processList.pop(pid)
|
||||||
|
if self.userList.has_key(pid):
|
||||||
|
self.userList.pop(pid)
|
||||||
|
print "User in process ",pid," pid disconnected"
|
||||||
|
except KeyError,e:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def does_user_disconnects(self,pid):
|
||||||
|
if self.userList.has_key(pid):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
# Describe the root process
|
||||||
|
# f is file object
|
||||||
|
# pid is the root process
|
||||||
|
def desc_root_process(self,f,pid):
|
||||||
|
vec = self.recover_process_vector(pid)
|
||||||
|
#Sometimes SSHD clones processes that are not related
|
||||||
|
#to users, small trees about a length of 2
|
||||||
|
if (len(vec) == 0):
|
||||||
|
return
|
||||||
|
|
||||||
|
f.write("** user root process %d **\n"%pid)
|
||||||
|
sshinfo = self.search_ssh_info(pid)
|
||||||
|
if sshinfo:
|
||||||
|
f.write("SSH_client: %s\n"%sshinfo)
|
||||||
|
ts = self.get_timestamp_from_pid(pid)
|
||||||
|
print "11111",ts
|
||||||
|
if ts >0:
|
||||||
|
obj=datetime.datetime.fromtimestamp(float(ts))
|
||||||
|
f.write("Connection date: %s\n"%str(obj))
|
||||||
|
#Add process vector
|
||||||
|
f.write("Process vector: %s\n"%','.join(vec))
|
||||||
|
f.write('\n')
|
||||||
|
def exportUserListTxt(self,filename):
|
||||||
|
try:
|
||||||
|
#Opens the file in append mode aiming to keep the history
|
||||||
|
f = open(filename, 'a')
|
||||||
|
ts = time.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
f.write("*** UserList created on %s ***\n"%(str(ts)))
|
||||||
|
for pid in self.userList.keys():
|
||||||
|
#Each sshd clone is not necessarly related to a user
|
||||||
|
if (len(self.get_children(pid)) == 0):
|
||||||
|
#Discard empty subtrees
|
||||||
|
continue
|
||||||
|
self.desc_root_process(f,pid)
|
||||||
|
f.close()
|
||||||
|
except IOError,e:
|
||||||
|
#TODO implement logging of internal errors
|
||||||
|
#User should notice that there is something wrong when
|
||||||
|
#user lists are outdated or corrupted
|
||||||
|
pass
|
||||||
|
|
||||||
|
def get_command_from_pid(self,pid):
|
||||||
|
if self.aplist.has_key(pid):
|
||||||
|
if self.aplist[pid].has_key('file'):
|
||||||
|
return self.aplist[pid]['file']
|
||||||
|
else:
|
||||||
|
sys.stderr.write('No file information for pid=%d\n'%pid)
|
||||||
|
else:
|
||||||
|
sys.stderr.write('pid %d was not annotated\n'%pid)
|
||||||
|
return None
|
||||||
|
|
||||||
|
def get_timestamp_from_pid(self,pid):
|
||||||
|
if self.aplist.has_key(pid):
|
||||||
|
if self.aplist[pid].has_key('timestamp'):
|
||||||
|
return self.aplist[pid]['timestamp']
|
||||||
|
else:
|
||||||
|
sys.stderr.write('No timestamp information for pid: %d\n'%pid)
|
||||||
|
else:
|
||||||
|
sys.stderr.write('pid %d was not annotated\n'%pid)
|
||||||
|
return -1
|
||||||
|
|
||||||
|
def recover_process_vector(self,pid):
|
||||||
|
vector = dict() # FIXME use timestamps as key for a dictionary
|
||||||
|
print "Children of ",pid," ",self.get_children(pid)
|
||||||
|
for pid in self.get_children(pid):
|
||||||
|
ts = self.get_timestamp_from_pid(pid)
|
||||||
|
its = int(ts)
|
||||||
|
file = self.get_command_from_pid(pid)
|
||||||
|
if ts != -1 and file != None:
|
||||||
|
if vector.has_key(its) == False:
|
||||||
|
vector[its] = []
|
||||||
|
vector[its].append(file)
|
||||||
|
#Now sort the vector
|
||||||
|
tab = vector.keys()
|
||||||
|
tab.sort()
|
||||||
|
ret = []
|
||||||
|
for ts in tab:
|
||||||
|
for c in vector[ts]:
|
||||||
|
ret.append(c)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
#Recursively get the children of a process. This time from the annotated
|
||||||
|
#list.
|
||||||
|
#Internal function
|
||||||
|
def __get_aplist_children(self,pid):
|
||||||
|
#Establish a list of children for a process
|
||||||
|
children = []
|
||||||
|
#FIXME not efficient; Go through all the processes
|
||||||
|
for p in self.aplist.keys():
|
||||||
|
if self.aplist[p]['parent'] == pid:
|
||||||
|
children.append(p)
|
||||||
|
#Record them in a global list too
|
||||||
|
self.children[p]=1
|
||||||
|
if len(children) == 0:
|
||||||
|
return
|
||||||
|
#Go through the children list and do a recursion
|
||||||
|
for p in children:
|
||||||
|
self.__get_aplist_children(p)
|
||||||
|
|
||||||
|
def get__aplist_children(self,pid):
|
||||||
|
#Empty the list; do not want duplicates
|
||||||
|
self.children = dict()
|
||||||
|
self.__get_aplist_children(pid)
|
||||||
|
return self.children.keys()
|
||||||
|
|
||||||
|
#Pid is the root; remove this pid and all chidren
|
||||||
|
def clean_aplist(self,pid):
|
||||||
|
children = self.get__aplist_children(pid)
|
||||||
|
print "Removal candidates"
|
||||||
|
for pid in children:
|
||||||
|
self.aplist.pop(pid)
|
||||||
|
|
||||||
|
class TestProcessTree(unittest.TestCase):
|
||||||
|
def testSearchRegular0(self):
|
||||||
|
x = ProcessTrees()
|
||||||
|
x.addUser(1079)
|
||||||
|
#self.assertDictEqual(x.userList, {1079:1})
|
||||||
|
#FIXME python version is too old
|
||||||
|
self.assertEqual(x.userList[1079],1)
|
||||||
|
print "TEST: SSH clones a process 1081"
|
||||||
|
ret = x.searchTree(1081,1079)
|
||||||
|
self.assertEqual(ret,1)
|
||||||
|
print "TEST: System itself adds a porcess 555"
|
||||||
|
ret = x.searchTree(555,333)
|
||||||
|
self.assertEqual(ret,0)
|
||||||
|
print "TEST: User process 1081 creates a process 1082"
|
||||||
|
ret = x.searchTree(1082,1081)
|
||||||
|
self.assertEqual(ret,1)
|
||||||
|
|
||||||
|
print "TEST: The clone clones again"
|
||||||
|
ret = x.searchTree(1082,1081)
|
||||||
|
self.assertEqual(ret,1)
|
||||||
|
|
||||||
|
print "TEST: The system process 555 creates a process 888"
|
||||||
|
ret = x.searchTree(888,555)
|
||||||
|
self.assertEqual(ret,0)
|
||||||
|
|
||||||
|
print "TEST: Second user arrives"
|
||||||
|
x.addUser(2001)
|
||||||
|
print "TEST: SSH clones a process"
|
||||||
|
ret = x.searchTree(2002,2001)
|
||||||
|
self.assertEqual(ret,1)
|
||||||
|
print "TEST: Second user process create process 2007"
|
||||||
|
ret=x.searchTree(2007,2002)
|
||||||
|
self.assertEqual(ret,1)
|
||||||
|
|
||||||
|
print "TEST: First user process 1081 executes uname ppid 1082"
|
||||||
|
ret = x.searchTree(1082,1081)
|
||||||
|
self.assertEqual(ret,1)
|
||||||
|
|
||||||
|
print "TEST: Second user process 2007 creates process 2008"
|
||||||
|
ret = x.searchTree(2008,2007)
|
||||||
|
self.assertEqual(ret,1)
|
||||||
|
|
||||||
|
def testCleanUp(self):
|
||||||
|
x = ProcessTrees()
|
||||||
|
#Init is executed
|
||||||
|
ret = x.searchTree(1,0)
|
||||||
|
self.assertEqual(ret,0)
|
||||||
|
print x.processList
|
||||||
|
self.assertEqual(len(x.processList.keys()),0)
|
||||||
|
|
||||||
|
def testMixCleanUp(self):
|
||||||
|
x = ProcessTrees()
|
||||||
|
x.addUser(123)
|
||||||
|
ret = x.searchTree(444,123)
|
||||||
|
self.assertEqual(ret,1)
|
||||||
|
self.assertEqual(len(x.processList.keys()),1)
|
||||||
|
#System adds a process the process vector should not grow
|
||||||
|
#Process 555 does not exits
|
||||||
|
ret = x.searchTree(333,555)
|
||||||
|
self.assertEqual(ret,0)
|
||||||
|
self.assertEqual(len(x.processList.keys()),1)
|
||||||
|
|
||||||
|
def testRecurionErrorBreak(self):
|
||||||
|
#FIXME can an attacker create a process having its own parent?
|
||||||
|
x = ProcessTrees()
|
||||||
|
x.addUser(123)
|
||||||
|
x.searchTree(123,222)
|
||||||
|
ret = x.searchTree(222,222)
|
||||||
|
self.assertEqual(ret,0)
|
||||||
|
|
||||||
|
def testAnnotate(self):
|
||||||
|
msg = {'env': ['SHELL=/bin/sh', 'TERM=screen', 'SSH_CLIENT=192.168.1.23 49826 22', 'SSH_TTY=/dev/pts/0', 'USER=gabriela', 'MAIL=/var/mail/gabriela', 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games', 'PWD=/home/gabriela', 'LANG=en_US.UTF-8', 'HISTCONTROL=ignoreboth', 'SHLVL=1', 'HOME=/home/gabriela', 'LOGNAME=gabriela', 'SSH_CONNECTION=192.168.1.23 49826 192.168.1.1 22', '_=/usr/bin/lesspipe'], 'rppid': ['1138'], 'pid': ['1139'], 'argument': ['lesspipe'], 'DONE': ['1'], 'file': ['/usr/bin/lesspipe'], 'ppid': ['1138'], 'type': ['1'], 'timestamp':'1263846206'}
|
||||||
|
x = ProcessTrees()
|
||||||
|
x.annotateProcessList(msg)
|
||||||
|
# Check if information is there
|
||||||
|
self.assertEqual(x.aplist[1139]['timestamp'],'1263846206')
|
||||||
|
s = "192.168.1.23 49826 22"
|
||||||
|
self.assertEqual(x.aplist[1139]['ssh_client'],s)
|
||||||
|
self.assertEqual(x.aplist[1139]['file'], '/usr/bin/lesspipe')
|
||||||
|
x.addUser(1139)
|
||||||
|
#Test export
|
||||||
|
x.exportUserListTxt('/tmp/userlist.txt')
|
||||||
|
|
||||||
|
def testChildrenList(self):
|
||||||
|
x = ProcessTrees()
|
||||||
|
x.addUser(123) # Has two children
|
||||||
|
ret = x.searchTree(333,123)
|
||||||
|
self.assertEqual(ret,1)
|
||||||
|
|
||||||
|
ret = x.searchTree(334,123)
|
||||||
|
self.assertEqual(ret,1)
|
||||||
|
|
||||||
|
#First child has onother child
|
||||||
|
ret = x.searchTree(555,333)
|
||||||
|
self.assertEqual(ret,1)
|
||||||
|
#Second child has another child
|
||||||
|
ret = x.searchTree(666,334)
|
||||||
|
self.assertEqual(ret,1)
|
||||||
|
#Add concurrent user that has one child
|
||||||
|
x.addUser(1000)
|
||||||
|
ret = x.searchTree(1001,1000)
|
||||||
|
self.assertEqual(ret,1)
|
||||||
|
children = x.get_children(123)
|
||||||
|
#[666, 555, 333, 334]
|
||||||
|
self.assertEqual(len(children), 4)
|
||||||
|
self.assertEqual(children[0],666)
|
||||||
|
self.assertEqual(children[1],555)
|
||||||
|
self.assertEqual(children[2],333)
|
||||||
|
self.assertEqual(children[3],334)
|
||||||
|
#Query children for an invalid process
|
||||||
|
x= ProcessTrees()
|
||||||
|
children = x.get_children(999)
|
||||||
|
self.assertEqual(len(children),0)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
|
|
||||||
|
|
33
aha/ahakern01/insult.c
Normal file
33
aha/ahakern01/insult.c
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
/*
|
||||||
|
* Insulting program that should be installed on the honeypot.
|
||||||
|
* The kernel then swaps the filename for do_execve with this one
|
||||||
|
*
|
||||||
|
* (c) 2010 Gerard Wagener
|
||||||
|
* LICENSE GPL
|
||||||
|
*/
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#define N 5
|
||||||
|
|
||||||
|
/* The element 0 is reserved for that insult is not set and if the program is
|
||||||
|
* started from the shell with no arguments nothing should happen
|
||||||
|
* atoi(sss) -> 0
|
||||||
|
*/
|
||||||
|
char* list[] = {"",
|
||||||
|
"Fuck you",
|
||||||
|
"Is that all? I want to do more ...",
|
||||||
|
"Go away",
|
||||||
|
"I love you"};
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]){
|
||||||
|
int idx;
|
||||||
|
/* If another argv is used, then maybe only argv[0] is allocated when
|
||||||
|
* no command lines are delivered. Therefore the kernel overwrites this
|
||||||
|
* to avoid to allocate / smash the stack
|
||||||
|
*/
|
||||||
|
idx=atoi(argv[0]);
|
||||||
|
if ((idx>=0) && (idx<N))
|
||||||
|
printf("%s\n",list[idx]);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -34,9 +34,10 @@ class AHAActions:
|
||||||
except OSError,e:
|
except OSError,e:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
#Can trow IOError
|
#Can trow IOError
|
||||||
def create_message(self,filename,block,exitcode,substitue,insult):
|
def create_message(self,filename,block,exitcode,substitue,insult):
|
||||||
|
print "CREATE_MESSAGE ",filename,"block=",block
|
||||||
try:
|
try:
|
||||||
reply = ReplyMessage(block=block,exitcode=exitcode,substitue=substitue,
|
reply = ReplyMessage(block=block,exitcode=exitcode,substitue=substitue,
|
||||||
insult = insult)
|
insult = insult)
|
||||||
|
@ -46,8 +47,6 @@ class AHAActions:
|
||||||
f.close()
|
f.close()
|
||||||
reply="(key=%s, block=%d,exitcode=%d,substitue=%d,insult=%d)"\
|
reply="(key=%s, block=%d,exitcode=%d,substitue=%d,insult=%d)"\
|
||||||
%(filename,block,exitcode, substitue,insult)
|
%(filename,block,exitcode, substitue,insult)
|
||||||
#print "CREATE_MESSAGE ",filename,"block=",block, "insult=",insult,\
|
|
||||||
#"substitue=",substitue
|
|
||||||
return reply
|
return reply
|
||||||
except IOError,e:
|
except IOError,e:
|
||||||
sys.stderr.write('Could not create reply file=(%s)\n'%filename)
|
sys.stderr.write('Could not create reply file=(%s)\n'%filename)
|
||||||
|
@ -124,7 +123,7 @@ class ProcessTrees:
|
||||||
# Retuns None if ssh related information was not found
|
# Retuns None if ssh related information was not found
|
||||||
sys.stderr.write('ERROR: No child provided SSH information\n')
|
sys.stderr.write('ERROR: No child provided SSH information\n')
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# Record additional information about processes like SSH parameters
|
# Record additional information about processes like SSH parameters
|
||||||
# and timestamps etc
|
# and timestamps etc
|
||||||
#TODO annotate SSH_LOGNAME
|
#TODO annotate SSH_LOGNAME
|
||||||
|
@ -153,7 +152,7 @@ class ProcessTrees:
|
||||||
# Is there a timestamp?
|
# Is there a timestamp?
|
||||||
if msg.has_key('timestamp'):
|
if msg.has_key('timestamp'):
|
||||||
self.aplist[pid]['timestamp'] = msg['timestamp']
|
self.aplist[pid]['timestamp'] = msg['timestamp']
|
||||||
|
|
||||||
except ValueError,e:
|
except ValueError,e:
|
||||||
print e
|
print e
|
||||||
pass
|
pass
|
||||||
|
@ -205,8 +204,8 @@ class ProcessTrees:
|
||||||
return
|
return
|
||||||
#Go through the children list and do a recursion
|
#Go through the children list and do a recursion
|
||||||
for p in children:
|
for p in children:
|
||||||
self.__get_children(p)
|
self.__get_children(p)
|
||||||
|
|
||||||
def get_children(self,pid):
|
def get_children(self,pid):
|
||||||
#Empty the list; do not want duplicates
|
#Empty the list; do not want duplicates
|
||||||
self.children = dict()
|
self.children = dict()
|
||||||
|
@ -219,21 +218,21 @@ class ProcessTrees:
|
||||||
self.processList.pop(pid)
|
self.processList.pop(pid)
|
||||||
if self.userList.has_key(pid):
|
if self.userList.has_key(pid):
|
||||||
self.userList.pop(pid)
|
self.userList.pop(pid)
|
||||||
#print "User in process ",pid," pid disconnected"
|
print "User in process ",pid," pid disconnected"
|
||||||
except KeyError,e:
|
except KeyError,e:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def does_user_disconnects(self,pid):
|
def does_user_disconnects(self,pid):
|
||||||
if self.userList.has_key(pid):
|
if self.userList.has_key(pid):
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
# Describe the root process
|
# Describe the root process
|
||||||
# f is file object
|
# f is file object
|
||||||
# pid is the root process
|
# pid is the root process
|
||||||
def desc_root_process(self,f,pid):
|
def desc_root_process(self,f,pid):
|
||||||
vec = self.recover_process_vector(pid)
|
vec = self.recover_process_vector(pid)
|
||||||
#Sometimes SSHD clones processes that are not related
|
#Sometimes SSHD clones processes that are not related
|
||||||
#to users, small trees about a length of 2
|
#to users, small trees about a length of 2
|
||||||
if (len(vec) == 0):
|
if (len(vec) == 0):
|
||||||
return
|
return
|
||||||
|
@ -252,9 +251,9 @@ class ProcessTrees:
|
||||||
f.write('\n')
|
f.write('\n')
|
||||||
def exportUserListTxt(self,filename):
|
def exportUserListTxt(self,filename):
|
||||||
try:
|
try:
|
||||||
#Opens the file in append mode aiming to keep the history
|
#Opens the file in append mode aiming to keep the history
|
||||||
f = open(filename, 'a')
|
f = open(filename, 'a')
|
||||||
ts = time.strftime("%Y-%m-%d %H:%M:%S")
|
ts = time.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
f.write("*** UserList created on %s ***\n"%(str(ts)))
|
f.write("*** UserList created on %s ***\n"%(str(ts)))
|
||||||
for pid in self.userList.keys():
|
for pid in self.userList.keys():
|
||||||
#Each sshd clone is not necessarly related to a user
|
#Each sshd clone is not necessarly related to a user
|
||||||
|
@ -265,7 +264,7 @@ class ProcessTrees:
|
||||||
f.close()
|
f.close()
|
||||||
except IOError,e:
|
except IOError,e:
|
||||||
#TODO implement logging of internal errors
|
#TODO implement logging of internal errors
|
||||||
#User should notice that there is something wrong when
|
#User should notice that there is something wrong when
|
||||||
#user lists are outdated or corrupted
|
#user lists are outdated or corrupted
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -300,7 +299,7 @@ class ProcessTrees:
|
||||||
if vector.has_key(its) == False:
|
if vector.has_key(its) == False:
|
||||||
vector[its] = []
|
vector[its] = []
|
||||||
vector[its].append(file)
|
vector[its].append(file)
|
||||||
#Now sort the vector
|
#Now sort the vector
|
||||||
tab = vector.keys()
|
tab = vector.keys()
|
||||||
tab.sort()
|
tab.sort()
|
||||||
ret = []
|
ret = []
|
||||||
|
@ -309,8 +308,8 @@ class ProcessTrees:
|
||||||
ret.append(c)
|
ret.append(c)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
#Recursively get the children of a process. This time from the annotated
|
#Recursively get the children of a process. This time from the annotated
|
||||||
#list.
|
#list.
|
||||||
#Internal function
|
#Internal function
|
||||||
def __get_aplist_children(self,pid):
|
def __get_aplist_children(self,pid):
|
||||||
#Establish a list of children for a process
|
#Establish a list of children for a process
|
||||||
|
@ -325,8 +324,8 @@ class ProcessTrees:
|
||||||
return
|
return
|
||||||
#Go through the children list and do a recursion
|
#Go through the children list and do a recursion
|
||||||
for p in children:
|
for p in children:
|
||||||
self.__get_aplist_children(p)
|
self.__get_aplist_children(p)
|
||||||
|
|
||||||
def get__aplist_children(self,pid):
|
def get__aplist_children(self,pid):
|
||||||
#Empty the list; do not want duplicates
|
#Empty the list; do not want duplicates
|
||||||
self.children = dict()
|
self.children = dict()
|
||||||
|
@ -339,7 +338,7 @@ class ProcessTrees:
|
||||||
print "Removal candidates"
|
print "Removal candidates"
|
||||||
for pid in children:
|
for pid in children:
|
||||||
self.aplist.pop(pid)
|
self.aplist.pop(pid)
|
||||||
|
|
||||||
class TestProcessTree(unittest.TestCase):
|
class TestProcessTree(unittest.TestCase):
|
||||||
def testSearchRegular0(self):
|
def testSearchRegular0(self):
|
||||||
x = ProcessTrees()
|
x = ProcessTrees()
|
||||||
|
@ -431,7 +430,7 @@ class TestProcessTree(unittest.TestCase):
|
||||||
|
|
||||||
ret = x.searchTree(334,123)
|
ret = x.searchTree(334,123)
|
||||||
self.assertEqual(ret,1)
|
self.assertEqual(ret,1)
|
||||||
|
|
||||||
#First child has onother child
|
#First child has onother child
|
||||||
ret = x.searchTree(555,333)
|
ret = x.searchTree(555,333)
|
||||||
self.assertEqual(ret,1)
|
self.assertEqual(ret,1)
|
||||||
|
@ -443,8 +442,8 @@ class TestProcessTree(unittest.TestCase):
|
||||||
ret = x.searchTree(1001,1000)
|
ret = x.searchTree(1001,1000)
|
||||||
self.assertEqual(ret,1)
|
self.assertEqual(ret,1)
|
||||||
children = x.get_children(123)
|
children = x.get_children(123)
|
||||||
#[666, 555, 333, 334]
|
#[666, 555, 333, 334]
|
||||||
self.assertEqual(len(children), 4)
|
self.assertEqual(len(children), 4)
|
||||||
self.assertEqual(children[0],666)
|
self.assertEqual(children[0],666)
|
||||||
self.assertEqual(children[1],555)
|
self.assertEqual(children[1],555)
|
||||||
self.assertEqual(children[2],333)
|
self.assertEqual(children[2],333)
|
||||||
|
@ -453,7 +452,7 @@ class TestProcessTree(unittest.TestCase):
|
||||||
x= ProcessTrees()
|
x= ProcessTrees()
|
||||||
children = x.get_children(999)
|
children = x.get_children(999)
|
||||||
self.assertEqual(len(children),0)
|
self.assertEqual(len(children),0)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
||||||
|
|
BIN
aha/ahalib.pyc
Normal file
BIN
aha/ahalib.pyc
Normal file
Binary file not shown.
44
aha/ihook.sh
44
aha/ihook.sh
|
@ -1,44 +0,0 @@
|
||||||
command_not_found_handle() {
|
|
||||||
echo $1
|
|
||||||
ARGS=""
|
|
||||||
if [ ! -z "$1" ]; then
|
|
||||||
ARGS="$ARGS$1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -z "$2" ]; then
|
|
||||||
ARGS="$ARGS $2"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -z "$3" ]; then
|
|
||||||
ARGS="$ARGS $3"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -z "$4" ]; then
|
|
||||||
ARGS="$ARGS $4"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if [ ! -z "$5" ]; then
|
|
||||||
ARGS="$ARGS $5"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -z "$6" ]; then
|
|
||||||
ARGS="$ARGS $6"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -z "$7" ]; then
|
|
||||||
ARGS="$ARGS $7"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -z "$8" ]; then
|
|
||||||
ARGS="$ARGS $8"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -z "$9" ]; then
|
|
||||||
ARGS="$ARGS $9"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/sbin/user_insult $ARGS
|
|
||||||
}
|
|
91840
aha/subst.c
91840
aha/subst.c
File diff suppressed because it is too large
Load diff
|
@ -1,8 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
int main(int argc,char* argv[])
|
|
||||||
{
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
87
aha/userlist.txt
Normal file
87
aha/userlist.txt
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
*** UserList created on 2010-01-21 12:07:00 ***
|
||||||
|
** user root process 1092 **
|
||||||
|
SSH_client: 192.168.1.2 43412 22
|
||||||
|
Connection date: 2010-01-20 22:51:54
|
||||||
|
Process vector: /bin/bash,/usr/bin/id,/usr/bin/lesspipe,/usr/bin/basename,/usr/bin/dirname,/usr/bin/dircolors,/sbin/fdisk,/usr/bin/last
|
||||||
|
|
||||||
|
*** UserList created on 2010-01-21 12:07:00 ***
|
||||||
|
** user root process 1109 **
|
||||||
|
SSH_client: 192.168.1.2 43413 22
|
||||||
|
Connection date: 2010-01-20 22:55:53
|
||||||
|
Process vector: /usr/bin/dircolors,/bin/bash,/usr/bin/id,/usr/bin/lesspipe,/usr/bin/basename,/usr/bin/dirname,/bin/uname,/bin/gzip,/usr/bin/clear_console
|
||||||
|
|
||||||
|
*** UserList created on 2010-01-21 12:07:00 ***
|
||||||
|
*** UserList created on 2010-01-21 12:07:00 ***
|
||||||
|
** user root process 1166 **
|
||||||
|
SSH_client: 192.168.1.2 34154 22
|
||||||
|
Connection date: 2010-01-21 11:27:21
|
||||||
|
Process vector: /bin/bash,/usr/bin/id,/usr/bin/lesspipe,/usr/bin/basename,/usr/bin/dirname,/usr/bin/dircolors,/usr/bin/clear_console
|
||||||
|
|
||||||
|
*** UserList created on 2010-01-21 12:07:00 ***
|
||||||
|
** user root process 1180 **
|
||||||
|
SSH_client: 192.168.1.2 34155 22
|
||||||
|
Connection date: 2010-01-21 11:28:22
|
||||||
|
Process vector: /bin/bash,/usr/bin/id,/usr/bin/lesspipe,/usr/bin/basename,/usr/bin/dirname,/usr/bin/dircolors,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/uname,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/usr/bin/clear_console
|
||||||
|
|
||||||
|
*** UserList created on 2010-01-21 12:07:00 ***
|
||||||
|
** user root process 1211 **
|
||||||
|
SSH_client: 192.168.1.2 33541 22
|
||||||
|
Connection date: 2010-01-21 11:33:07
|
||||||
|
Process vector: /usr/bin/id,/usr/bin/lesspipe,/usr/bin/basename,/usr/bin/dirname,/usr/bin/dircolors,/bin/bash,/bin/ls,/bin/ls,/usr/bin/top
|
||||||
|
|
||||||
|
*** UserList created on 2010-01-21 12:07:00 ***
|
||||||
|
** user root process 1241 **
|
||||||
|
SSH_client: 192.168.1.2 54952 22
|
||||||
|
Connection date: 2010-01-21 11:39:24
|
||||||
|
Process vector: /usr/bin/lesspipe,/bin/bash,/usr/bin/id,/usr/bin/basename,/usr/bin/dirname,/usr/bin/dircolors,/bin/ls,/usr/bin/clear_console
|
||||||
|
|
||||||
|
*** UserList created on 2010-01-21 12:07:00 ***
|
||||||
|
** user root process 1286 **
|
||||||
|
SSH_client: 192.168.1.2 50213 22
|
||||||
|
Connection date: 2010-01-21 11:51:50
|
||||||
|
Process vector: /bin/bash
|
||||||
|
|
||||||
|
*** UserList created on 2010-01-21 12:07:00 ***
|
||||||
|
*** UserList created on 2010-01-21 12:27:29 ***
|
||||||
|
** user root process 1092 **
|
||||||
|
SSH_client: 192.168.1.2 43412 22
|
||||||
|
Connection date: 2010-01-20 22:51:54
|
||||||
|
Process vector: /bin/bash,/usr/bin/id,/usr/bin/lesspipe,/usr/bin/basename,/usr/bin/dirname,/usr/bin/dircolors,/sbin/fdisk,/usr/bin/last
|
||||||
|
|
||||||
|
*** UserList created on 2010-01-21 12:27:29 ***
|
||||||
|
** user root process 1109 **
|
||||||
|
SSH_client: 192.168.1.2 43413 22
|
||||||
|
Connection date: 2010-01-20 22:55:53
|
||||||
|
Process vector: /usr/bin/dircolors,/bin/bash,/usr/bin/id,/usr/bin/lesspipe,/usr/bin/basename,/usr/bin/dirname,/bin/uname,/bin/gzip,/usr/bin/clear_console
|
||||||
|
|
||||||
|
*** UserList created on 2010-01-21 12:27:29 ***
|
||||||
|
*** UserList created on 2010-01-21 12:27:29 ***
|
||||||
|
** user root process 1166 **
|
||||||
|
SSH_client: 192.168.1.2 34154 22
|
||||||
|
Connection date: 2010-01-21 11:27:21
|
||||||
|
Process vector: /bin/bash,/usr/bin/id,/usr/bin/lesspipe,/usr/bin/basename,/usr/bin/dirname,/usr/bin/dircolors,/usr/bin/clear_console
|
||||||
|
|
||||||
|
*** UserList created on 2010-01-21 12:27:29 ***
|
||||||
|
** user root process 1180 **
|
||||||
|
SSH_client: 192.168.1.2 34155 22
|
||||||
|
Connection date: 2010-01-21 11:28:22
|
||||||
|
Process vector: /bin/bash,/usr/bin/id,/usr/bin/lesspipe,/usr/bin/basename,/usr/bin/dirname,/usr/bin/dircolors,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/uname,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/bin/ls,/usr/bin/clear_console
|
||||||
|
|
||||||
|
*** UserList created on 2010-01-21 12:27:29 ***
|
||||||
|
** user root process 1211 **
|
||||||
|
SSH_client: 192.168.1.2 33541 22
|
||||||
|
Connection date: 2010-01-21 11:33:07
|
||||||
|
Process vector: /usr/bin/id,/usr/bin/lesspipe,/usr/bin/basename,/usr/bin/dirname,/usr/bin/dircolors,/bin/bash,/bin/ls,/bin/ls,/usr/bin/top
|
||||||
|
|
||||||
|
*** UserList created on 2010-01-21 12:27:29 ***
|
||||||
|
** user root process 1241 **
|
||||||
|
SSH_client: 192.168.1.2 54952 22
|
||||||
|
Connection date: 2010-01-21 11:39:24
|
||||||
|
Process vector: /usr/bin/lesspipe,/bin/bash,/usr/bin/id,/usr/bin/basename,/usr/bin/dirname,/usr/bin/dircolors,/bin/ls,/usr/bin/clear_console
|
||||||
|
|
||||||
|
*** UserList created on 2010-01-21 12:27:29 ***
|
||||||
|
** user root process 1286 **
|
||||||
|
SSH_client: 192.168.1.2 50213 22
|
||||||
|
Connection date: 2010-01-21 11:51:50
|
||||||
|
Process vector: /bin/bash
|
||||||
|
|
1
arch/um/include/aha/kern_constants.h
Normal file
1
arch/um/include/aha/kern_constants.h
Normal file
|
@ -0,0 +1 @@
|
||||||
|
#include "../../../../include/generated/asm-offsets.h"
|
|
@ -1,14 +1,13 @@
|
||||||
#ifndef AHA
|
#ifndef AHA
|
||||||
#define AHA
|
#define AHA
|
||||||
/* Debug messages are disabled */
|
#define AHA_DEBUG
|
||||||
/* #define AHA_DEBUG */
|
|
||||||
#include "linux/kernel.h" /* printk is declared there */
|
#include "linux/kernel.h" /* printk is declared there */
|
||||||
#include "linux/stddef.h"
|
#include "linux/stddef.h"
|
||||||
#include "linux/ptrace.h" /* access to kmalloc */
|
#include "linux/ptrace.h" /* access to kmalloc */
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
#include "linux/delay.h"
|
#include "linux/delay.h"
|
||||||
#include "aha-defs.h"
|
#include "aha-defs.h"
|
||||||
#define MAX_DUMP_BUF 1024
|
#define MAX_DUMP_BUF 512
|
||||||
struct ReplyMessage{
|
struct ReplyMessage{
|
||||||
int block;
|
int block;
|
||||||
int exitcode;
|
int exitcode;
|
||||||
|
@ -18,7 +17,7 @@ struct ReplyMessage{
|
||||||
|
|
||||||
#define EXECVE_MESSAGE 1
|
#define EXECVE_MESSAGE 1
|
||||||
#define CLONE_MESSAGE 2
|
#define CLONE_MESSAGE 2
|
||||||
#define EXIT_MESSAGE 3
|
#define EXIT_MESSAGE 3
|
||||||
#ifdef AHA_DEBUG
|
#ifdef AHA_DEBUG
|
||||||
#define AHA_PRINTK(args...) printk(args)
|
#define AHA_PRINTK(args...) printk(args)
|
||||||
#else
|
#else
|
||||||
|
|
1
arch/um/include/shared/kern_constants.h
Normal file
1
arch/um/include/shared/kern_constants.h
Normal file
|
@ -0,0 +1 @@
|
||||||
|
#include "../../../../include/generated/asm-offsets.h"
|
36
arch/um/include/shared/user_constants.h
Normal file
36
arch/um/include/shared/user_constants.h
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
/*
|
||||||
|
* DO NOT MODIFY.
|
||||||
|
*
|
||||||
|
* This file was generated by arch/um/Makefile
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define HOST_SC_TRAPNO 48 /* offsetof(struct sigcontext, trapno) # */
|
||||||
|
#define HOST_SC_ERR 52 /* offsetof(struct sigcontext, err) # */
|
||||||
|
#define HOST_SC_CR2 84 /* offsetof(struct sigcontext, cr2) # */
|
||||||
|
#define HOST_FP_SIZE 27 /* sizeof(struct user_fpregs_struct) # */
|
||||||
|
#define HOST_FPX_SIZE 128 /* sizeof(struct user_fpxregs_struct) # */
|
||||||
|
#define HOST_IP 12 /* EIP # */
|
||||||
|
#define HOST_SP 15 /* UESP # */
|
||||||
|
#define HOST_EFLAGS 14 /* EFL # */
|
||||||
|
#define HOST_EAX 6 /* EAX # */
|
||||||
|
#define HOST_EBX 0 /* EBX # */
|
||||||
|
#define HOST_ECX 1 /* ECX # */
|
||||||
|
#define HOST_EDX 2 /* EDX # */
|
||||||
|
#define HOST_ESI 3 /* ESI # */
|
||||||
|
#define HOST_EDI 4 /* EDI # */
|
||||||
|
#define HOST_EBP 5 /* EBP # */
|
||||||
|
#define HOST_CS 13 /* CS # */
|
||||||
|
#define HOST_SS 16 /* SS # */
|
||||||
|
#define HOST_DS 7 /* DS # */
|
||||||
|
#define HOST_FS 9 /* FS # */
|
||||||
|
#define HOST_ES 8 /* ES # */
|
||||||
|
#define HOST_GS 10 /* GS # */
|
||||||
|
#define UM_FRAME_SIZE 68 /* sizeof(struct user_regs_struct) # */
|
||||||
|
#define UM_POLLIN 1 /* POLLIN # */
|
||||||
|
#define UM_POLLPRI 2 /* POLLPRI # */
|
||||||
|
#define UM_POLLOUT 4 /* POLLOUT # */
|
||||||
|
#define UM_PROT_READ 1 /* PROT_READ # */
|
||||||
|
#define UM_PROT_WRITE 2 /* PROT_WRITE # */
|
||||||
|
#define UM_PROT_EXEC 4 /* PROT_EXEC # */
|
||||||
|
|
|
@ -32,8 +32,7 @@ inline void __aha_os_write_file_ck(int fd, char* buf, int size, int cnt)
|
||||||
if ((cnt > 0) & (cnt < size)){
|
if ((cnt > 0) & (cnt < size)){
|
||||||
os_write_file(fd,buf,cnt);
|
os_write_file(fd,buf,cnt);
|
||||||
} else {
|
} else {
|
||||||
AHA_PRINTK("Cannot write. buffer is too small size = %d cnt=%d, \
|
AHA_PRINTK("Failed to write information\n");
|
||||||
fd=%d\n", size, cnt,fd);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +47,6 @@ inline void __aha_dump_pid_ppids(int fd, char* buf, int size)
|
||||||
int cnt;
|
int cnt;
|
||||||
tsk = current;
|
tsk = current;
|
||||||
cnt = snprintf(buf,size,"pid=%d\n",tsk->pid);
|
cnt = snprintf(buf,size,"pid=%d\n",tsk->pid);
|
||||||
AHA_PRINTK("__aha_dump_pid_ppids\n");
|
|
||||||
__aha_os_write_file_ck(fd,buf,size,cnt);
|
__aha_os_write_file_ck(fd,buf,size,cnt);
|
||||||
cnt = snprintf(buf,size,"ppid=%d\n",tsk->parent->pid);
|
cnt = snprintf(buf,size,"ppid=%d\n",tsk->parent->pid);
|
||||||
__aha_os_write_file_ck(fd,buf,size,cnt);
|
__aha_os_write_file_ck(fd,buf,size,cnt);
|
||||||
|
@ -61,7 +59,6 @@ inline void __aha_set_done_tag(int fd, char* buf,int size)
|
||||||
int cnt;
|
int cnt;
|
||||||
/* FIXME the MAGIC word is not escaped it could emerge as argument */
|
/* FIXME the MAGIC word is not escaped it could emerge as argument */
|
||||||
cnt = snprintf(buf,size,"DONE=1\n");
|
cnt = snprintf(buf,size,"DONE=1\n");
|
||||||
AHA_PRINTK("__aha_set_done_tag\n");
|
|
||||||
__aha_os_write_file_ck(fd,buf,size,cnt);
|
__aha_os_write_file_ck(fd,buf,size,cnt);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -71,9 +68,7 @@ inline void __aha_set_type_tag(int fd, char* buf,int size,int tag)
|
||||||
int cnt; /* May break inline but makes code more readable */
|
int cnt; /* May break inline but makes code more readable */
|
||||||
/* FIXME Espacing is not done */
|
/* FIXME Espacing is not done */
|
||||||
cnt = snprintf(buf,size,"type=%d\n",tag);
|
cnt = snprintf(buf,size,"type=%d\n",tag);
|
||||||
AHA_PRINTK("__aha_set_type_tag\n");
|
__aha_os_write_file_ck(fd,buf,size,cnt);
|
||||||
__aha_os_write_file_ck(fd,buf,size,cnt);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,13 +77,12 @@ inline void __aha_dump_str_array(int fd, char** argv,char*id, char* p, char*q)
|
||||||
{
|
{
|
||||||
char* a;
|
char* a;
|
||||||
int cnt;
|
int cnt;
|
||||||
AHA_PRINTK("__aha_dump_str_array\n");
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (get_user(a,argv))
|
if (get_user(a,argv))
|
||||||
break;
|
break;
|
||||||
if (!a)
|
if (!a)
|
||||||
break;
|
break;
|
||||||
if (strncpy_from_user(p,a, (MAX_DUMP_BUF / 2) - 4 ) > 0) {
|
if (strncpy_from_user(p,a, MAX_DUMP_BUF) > 0) {
|
||||||
cnt=snprintf(q,MAX_DUMP_BUF,"%s=%s\n",id,p);
|
cnt=snprintf(q,MAX_DUMP_BUF,"%s=%s\n",id,p);
|
||||||
__aha_os_write_file_ck(fd,q,MAX_DUMP_BUF,cnt);
|
__aha_os_write_file_ck(fd,q,MAX_DUMP_BUF,cnt);
|
||||||
}
|
}
|
||||||
|
@ -219,7 +213,7 @@ void aha_record_sys_clone(int pid, int ppid)
|
||||||
flg.w = 1;
|
flg.w = 1;
|
||||||
flg.c = 1;
|
flg.c = 1;
|
||||||
cnt = 0;
|
cnt = 0;
|
||||||
AHA_PRINTK("aha_record_sys_clone\n");
|
|
||||||
aha_create_filename((char*)&filename,filename__size);
|
aha_create_filename((char*)&filename,filename__size);
|
||||||
snprintf((char*)&buf, buf__size,"out/%s",filename);
|
snprintf((char*)&buf, buf__size,"out/%s",filename);
|
||||||
fd = os_open_file(buf,flg,mode);
|
fd = os_open_file(buf,flg,mode);
|
||||||
|
|
785
arch/um/kernel/config.c
Normal file
785
arch/um/kernel/config.c
Normal file
|
@ -0,0 +1,785 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
|
||||||
|
* Licensed under the GPL
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "init.h"
|
||||||
|
|
||||||
|
static __initdata const char *config[] = {
|
||||||
|
|
||||||
|
"#\n",
|
||||||
|
"# Automatically generated make config: don't edit\n",
|
||||||
|
"# Linux kernel version: 2.6.33-rc2\n",
|
||||||
|
"# Tue Jan 5 22:00:43 2010\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_DEFCONFIG_LIST=\"arch/$ARCH/defconfig\"\n",
|
||||||
|
"CONFIG_GENERIC_HARDIRQS=y\n",
|
||||||
|
"CONFIG_UML=y\n",
|
||||||
|
"CONFIG_MMU=y\n",
|
||||||
|
"CONFIG_NO_IOMEM=y\n",
|
||||||
|
"# CONFIG_TRACE_IRQFLAGS_SUPPORT is not set\n",
|
||||||
|
"CONFIG_LOCKDEP_SUPPORT=y\n",
|
||||||
|
"# CONFIG_STACKTRACE_SUPPORT is not set\n",
|
||||||
|
"CONFIG_GENERIC_CALIBRATE_DELAY=y\n",
|
||||||
|
"CONFIG_GENERIC_BUG=y\n",
|
||||||
|
"CONFIG_GENERIC_TIME=y\n",
|
||||||
|
"CONFIG_GENERIC_CLOCKEVENTS=y\n",
|
||||||
|
"CONFIG_IRQ_RELEASE_METHOD=y\n",
|
||||||
|
"CONFIG_HZ=100\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# UML-specific options\n",
|
||||||
|
"#\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Host processor type and features\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_M386 is not set\n",
|
||||||
|
"# CONFIG_M486 is not set\n",
|
||||||
|
"# CONFIG_M586 is not set\n",
|
||||||
|
"# CONFIG_M586TSC is not set\n",
|
||||||
|
"# CONFIG_M586MMX is not set\n",
|
||||||
|
"CONFIG_M686=y\n",
|
||||||
|
"# CONFIG_MPENTIUMII is not set\n",
|
||||||
|
"# CONFIG_MPENTIUMIII is not set\n",
|
||||||
|
"# CONFIG_MPENTIUMM is not set\n",
|
||||||
|
"# CONFIG_MPENTIUM4 is not set\n",
|
||||||
|
"# CONFIG_MK6 is not set\n",
|
||||||
|
"# CONFIG_MK7 is not set\n",
|
||||||
|
"# CONFIG_MK8 is not set\n",
|
||||||
|
"# CONFIG_MCRUSOE is not set\n",
|
||||||
|
"# CONFIG_MEFFICEON is not set\n",
|
||||||
|
"# CONFIG_MWINCHIPC6 is not set\n",
|
||||||
|
"# CONFIG_MWINCHIP3D is not set\n",
|
||||||
|
"# CONFIG_MGEODEGX1 is not set\n",
|
||||||
|
"# CONFIG_MGEODE_LX is not set\n",
|
||||||
|
"# CONFIG_MCYRIXIII is not set\n",
|
||||||
|
"# CONFIG_MVIAC3_2 is not set\n",
|
||||||
|
"# CONFIG_MVIAC7 is not set\n",
|
||||||
|
"# CONFIG_MPSC is not set\n",
|
||||||
|
"# CONFIG_MCORE2 is not set\n",
|
||||||
|
"# CONFIG_MATOM is not set\n",
|
||||||
|
"# CONFIG_GENERIC_CPU is not set\n",
|
||||||
|
"# CONFIG_X86_GENERIC is not set\n",
|
||||||
|
"CONFIG_X86_CPU=y\n",
|
||||||
|
"CONFIG_X86_INTERNODE_CACHE_SHIFT=5\n",
|
||||||
|
"CONFIG_X86_CMPXCHG=y\n",
|
||||||
|
"CONFIG_X86_L1_CACHE_SHIFT=5\n",
|
||||||
|
"CONFIG_X86_XADD=y\n",
|
||||||
|
"CONFIG_X86_PPRO_FENCE=y\n",
|
||||||
|
"CONFIG_X86_WP_WORKS_OK=y\n",
|
||||||
|
"CONFIG_X86_INVLPG=y\n",
|
||||||
|
"CONFIG_X86_BSWAP=y\n",
|
||||||
|
"CONFIG_X86_POPAD_OK=y\n",
|
||||||
|
"CONFIG_X86_USE_PPRO_CHECKSUM=y\n",
|
||||||
|
"CONFIG_X86_TSC=y\n",
|
||||||
|
"CONFIG_X86_CMPXCHG64=y\n",
|
||||||
|
"CONFIG_X86_CMOV=y\n",
|
||||||
|
"CONFIG_X86_MINIMUM_CPU_FAMILY=5\n",
|
||||||
|
"CONFIG_CPU_SUP_INTEL=y\n",
|
||||||
|
"CONFIG_CPU_SUP_CYRIX_32=y\n",
|
||||||
|
"CONFIG_CPU_SUP_AMD=y\n",
|
||||||
|
"CONFIG_CPU_SUP_CENTAUR=y\n",
|
||||||
|
"CONFIG_CPU_SUP_TRANSMETA_32=y\n",
|
||||||
|
"CONFIG_CPU_SUP_UMC_32=y\n",
|
||||||
|
"CONFIG_UML_X86=y\n",
|
||||||
|
"# CONFIG_64BIT is not set\n",
|
||||||
|
"CONFIG_X86_32=y\n",
|
||||||
|
"CONFIG_RWSEM_XCHGADD_ALGORITHM=y\n",
|
||||||
|
"# CONFIG_RWSEM_GENERIC_SPINLOCK is not set\n",
|
||||||
|
"# CONFIG_3_LEVEL_PGTABLES is not set\n",
|
||||||
|
"CONFIG_ARCH_HAS_SC_SIGNALS=y\n",
|
||||||
|
"CONFIG_ARCH_REUSE_HOST_VSYSCALL_AREA=y\n",
|
||||||
|
"# CONFIG_SMP_BROKEN is not set\n",
|
||||||
|
"CONFIG_GENERIC_HWEIGHT=y\n",
|
||||||
|
"# CONFIG_STATIC_LINK is not set\n",
|
||||||
|
"CONFIG_SELECT_MEMORY_MODEL=y\n",
|
||||||
|
"CONFIG_FLATMEM_MANUAL=y\n",
|
||||||
|
"# CONFIG_DISCONTIGMEM_MANUAL is not set\n",
|
||||||
|
"# CONFIG_SPARSEMEM_MANUAL is not set\n",
|
||||||
|
"CONFIG_FLATMEM=y\n",
|
||||||
|
"CONFIG_FLAT_NODE_MEM_MAP=y\n",
|
||||||
|
"CONFIG_PAGEFLAGS_EXTENDED=y\n",
|
||||||
|
"CONFIG_SPLIT_PTLOCK_CPUS=4\n",
|
||||||
|
"# CONFIG_PHYS_ADDR_T_64BIT is not set\n",
|
||||||
|
"CONFIG_ZONE_DMA_FLAG=0\n",
|
||||||
|
"CONFIG_VIRT_TO_BUS=y\n",
|
||||||
|
"# CONFIG_KSM is not set\n",
|
||||||
|
"CONFIG_DEFAULT_MMAP_MIN_ADDR=4096\n",
|
||||||
|
"CONFIG_TICK_ONESHOT=y\n",
|
||||||
|
"CONFIG_NO_HZ=y\n",
|
||||||
|
"CONFIG_HIGH_RES_TIMERS=y\n",
|
||||||
|
"CONFIG_GENERIC_CLOCKEVENTS_BUILD=y\n",
|
||||||
|
"CONFIG_LD_SCRIPT_DYN=y\n",
|
||||||
|
"CONFIG_BINFMT_ELF=y\n",
|
||||||
|
"# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set\n",
|
||||||
|
"CONFIG_HAVE_AOUT=y\n",
|
||||||
|
"# CONFIG_BINFMT_AOUT is not set\n",
|
||||||
|
"CONFIG_BINFMT_MISC=y\n",
|
||||||
|
"CONFIG_HOSTFS=y\n",
|
||||||
|
"CONFIG_HPPFS=y\n",
|
||||||
|
"CONFIG_MCONSOLE=y\n",
|
||||||
|
"CONFIG_MAGIC_SYSRQ=y\n",
|
||||||
|
"# CONFIG_HIGHMEM is not set\n",
|
||||||
|
"CONFIG_KERNEL_STACK_ORDER=0\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# General setup\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_EXPERIMENTAL=y\n",
|
||||||
|
"CONFIG_BROKEN_ON_SMP=y\n",
|
||||||
|
"CONFIG_INIT_ENV_ARG_LIMIT=128\n",
|
||||||
|
"CONFIG_LOCALVERSION=\"\"\n",
|
||||||
|
"CONFIG_LOCALVERSION_AUTO=y\n",
|
||||||
|
"CONFIG_SWAP=y\n",
|
||||||
|
"CONFIG_SYSVIPC=y\n",
|
||||||
|
"CONFIG_SYSVIPC_SYSCTL=y\n",
|
||||||
|
"CONFIG_POSIX_MQUEUE=y\n",
|
||||||
|
"CONFIG_POSIX_MQUEUE_SYSCTL=y\n",
|
||||||
|
"CONFIG_BSD_PROCESS_ACCT=y\n",
|
||||||
|
"# CONFIG_BSD_PROCESS_ACCT_V3 is not set\n",
|
||||||
|
"# CONFIG_TASKSTATS is not set\n",
|
||||||
|
"# CONFIG_AUDIT is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# RCU Subsystem\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_TREE_RCU=y\n",
|
||||||
|
"# CONFIG_TREE_PREEMPT_RCU is not set\n",
|
||||||
|
"# CONFIG_TINY_RCU is not set\n",
|
||||||
|
"# CONFIG_RCU_TRACE is not set\n",
|
||||||
|
"CONFIG_RCU_FANOUT=32\n",
|
||||||
|
"# CONFIG_RCU_FANOUT_EXACT is not set\n",
|
||||||
|
"# CONFIG_TREE_RCU_TRACE is not set\n",
|
||||||
|
"CONFIG_IKCONFIG=y\n",
|
||||||
|
"CONFIG_IKCONFIG_PROC=y\n",
|
||||||
|
"CONFIG_LOG_BUF_SHIFT=14\n",
|
||||||
|
"# CONFIG_GROUP_SCHED is not set\n",
|
||||||
|
"# CONFIG_CGROUPS is not set\n",
|
||||||
|
"# CONFIG_SYSFS_DEPRECATED_V2 is not set\n",
|
||||||
|
"# CONFIG_RELAY is not set\n",
|
||||||
|
"CONFIG_NAMESPACES=y\n",
|
||||||
|
"# CONFIG_UTS_NS is not set\n",
|
||||||
|
"# CONFIG_IPC_NS is not set\n",
|
||||||
|
"# CONFIG_USER_NS is not set\n",
|
||||||
|
"# CONFIG_PID_NS is not set\n",
|
||||||
|
"# CONFIG_NET_NS is not set\n",
|
||||||
|
"# CONFIG_BLK_DEV_INITRD is not set\n",
|
||||||
|
"CONFIG_CC_OPTIMIZE_FOR_SIZE=y\n",
|
||||||
|
"CONFIG_SYSCTL=y\n",
|
||||||
|
"CONFIG_ANON_INODES=y\n",
|
||||||
|
"# CONFIG_EMBEDDED is not set\n",
|
||||||
|
"CONFIG_UID16=y\n",
|
||||||
|
"CONFIG_SYSCTL_SYSCALL=y\n",
|
||||||
|
"CONFIG_KALLSYMS=y\n",
|
||||||
|
"# CONFIG_KALLSYMS_ALL is not set\n",
|
||||||
|
"CONFIG_KALLSYMS_EXTRA_PASS=y\n",
|
||||||
|
"CONFIG_HOTPLUG=y\n",
|
||||||
|
"CONFIG_PRINTK=y\n",
|
||||||
|
"CONFIG_BUG=y\n",
|
||||||
|
"CONFIG_ELF_CORE=y\n",
|
||||||
|
"CONFIG_BASE_FULL=y\n",
|
||||||
|
"CONFIG_FUTEX=y\n",
|
||||||
|
"CONFIG_EPOLL=y\n",
|
||||||
|
"CONFIG_SIGNALFD=y\n",
|
||||||
|
"CONFIG_TIMERFD=y\n",
|
||||||
|
"CONFIG_EVENTFD=y\n",
|
||||||
|
"CONFIG_SHMEM=y\n",
|
||||||
|
"CONFIG_AIO=y\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Kernel Performance Events And Counters\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_VM_EVENT_COUNTERS=y\n",
|
||||||
|
"CONFIG_COMPAT_BRK=y\n",
|
||||||
|
"CONFIG_SLAB=y\n",
|
||||||
|
"# CONFIG_SLUB is not set\n",
|
||||||
|
"# CONFIG_SLOB is not set\n",
|
||||||
|
"# CONFIG_PROFILING is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# GCOV-based kernel profiling\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_SLOW_WORK is not set\n",
|
||||||
|
"# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set\n",
|
||||||
|
"CONFIG_SLABINFO=y\n",
|
||||||
|
"CONFIG_RT_MUTEXES=y\n",
|
||||||
|
"CONFIG_BASE_SMALL=0\n",
|
||||||
|
"# CONFIG_MODULES is not set\n",
|
||||||
|
"CONFIG_BLOCK=y\n",
|
||||||
|
"CONFIG_LBDAF=y\n",
|
||||||
|
"# CONFIG_BLK_DEV_BSG is not set\n",
|
||||||
|
"# CONFIG_BLK_DEV_INTEGRITY is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# IO Schedulers\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_IOSCHED_NOOP=y\n",
|
||||||
|
"CONFIG_IOSCHED_DEADLINE=y\n",
|
||||||
|
"CONFIG_IOSCHED_CFQ=y\n",
|
||||||
|
"# CONFIG_DEFAULT_DEADLINE is not set\n",
|
||||||
|
"CONFIG_DEFAULT_CFQ=y\n",
|
||||||
|
"# CONFIG_DEFAULT_NOOP is not set\n",
|
||||||
|
"CONFIG_DEFAULT_IOSCHED=\"cfq\"\n",
|
||||||
|
"# CONFIG_INLINE_SPIN_TRYLOCK is not set\n",
|
||||||
|
"# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set\n",
|
||||||
|
"# CONFIG_INLINE_SPIN_LOCK is not set\n",
|
||||||
|
"# CONFIG_INLINE_SPIN_LOCK_BH is not set\n",
|
||||||
|
"# CONFIG_INLINE_SPIN_LOCK_IRQ is not set\n",
|
||||||
|
"# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set\n",
|
||||||
|
"CONFIG_INLINE_SPIN_UNLOCK=y\n",
|
||||||
|
"# CONFIG_INLINE_SPIN_UNLOCK_BH is not set\n",
|
||||||
|
"CONFIG_INLINE_SPIN_UNLOCK_IRQ=y\n",
|
||||||
|
"# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set\n",
|
||||||
|
"# CONFIG_INLINE_READ_TRYLOCK is not set\n",
|
||||||
|
"# CONFIG_INLINE_READ_LOCK is not set\n",
|
||||||
|
"# CONFIG_INLINE_READ_LOCK_BH is not set\n",
|
||||||
|
"# CONFIG_INLINE_READ_LOCK_IRQ is not set\n",
|
||||||
|
"# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set\n",
|
||||||
|
"CONFIG_INLINE_READ_UNLOCK=y\n",
|
||||||
|
"# CONFIG_INLINE_READ_UNLOCK_BH is not set\n",
|
||||||
|
"CONFIG_INLINE_READ_UNLOCK_IRQ=y\n",
|
||||||
|
"# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set\n",
|
||||||
|
"# CONFIG_INLINE_WRITE_TRYLOCK is not set\n",
|
||||||
|
"# CONFIG_INLINE_WRITE_LOCK is not set\n",
|
||||||
|
"# CONFIG_INLINE_WRITE_LOCK_BH is not set\n",
|
||||||
|
"# CONFIG_INLINE_WRITE_LOCK_IRQ is not set\n",
|
||||||
|
"# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set\n",
|
||||||
|
"CONFIG_INLINE_WRITE_UNLOCK=y\n",
|
||||||
|
"# CONFIG_INLINE_WRITE_UNLOCK_BH is not set\n",
|
||||||
|
"CONFIG_INLINE_WRITE_UNLOCK_IRQ=y\n",
|
||||||
|
"# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set\n",
|
||||||
|
"# CONFIG_MUTEX_SPIN_ON_OWNER is not set\n",
|
||||||
|
"# CONFIG_FREEZER is not set\n",
|
||||||
|
"CONFIG_BLK_DEV=y\n",
|
||||||
|
"CONFIG_BLK_DEV_UBD=y\n",
|
||||||
|
"# CONFIG_BLK_DEV_UBD_SYNC is not set\n",
|
||||||
|
"CONFIG_BLK_DEV_COW_COMMON=y\n",
|
||||||
|
"CONFIG_BLK_DEV_LOOP=y\n",
|
||||||
|
"# CONFIG_BLK_DEV_CRYPTOLOOP is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# DRBD disabled because PROC_FS, INET or CONNECTOR not selected\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_BLK_DEV_NBD=y\n",
|
||||||
|
"# CONFIG_BLK_DEV_RAM is not set\n",
|
||||||
|
"# CONFIG_ATA_OVER_ETH is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Character Devices\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_STDERR_CONSOLE=y\n",
|
||||||
|
"CONFIG_STDIO_CONSOLE=y\n",
|
||||||
|
"CONFIG_SSL=y\n",
|
||||||
|
"CONFIG_NULL_CHAN=y\n",
|
||||||
|
"CONFIG_PORT_CHAN=y\n",
|
||||||
|
"CONFIG_PTY_CHAN=y\n",
|
||||||
|
"CONFIG_TTY_CHAN=y\n",
|
||||||
|
"CONFIG_XTERM_CHAN=y\n",
|
||||||
|
"# CONFIG_NOCONFIG_CHAN is not set\n",
|
||||||
|
"CONFIG_CON_ZERO_CHAN=\"fd:0,fd:1\"\n",
|
||||||
|
"CONFIG_CON_CHAN=\"xterm\"\n",
|
||||||
|
"CONFIG_SSL_CHAN=\"pts\"\n",
|
||||||
|
"CONFIG_UNIX98_PTYS=y\n",
|
||||||
|
"CONFIG_LEGACY_PTYS=y\n",
|
||||||
|
"# CONFIG_RAW_DRIVER is not set\n",
|
||||||
|
"CONFIG_LEGACY_PTY_COUNT=32\n",
|
||||||
|
"# CONFIG_WATCHDOG is not set\n",
|
||||||
|
"CONFIG_UML_SOUND=y\n",
|
||||||
|
"CONFIG_SOUND=y\n",
|
||||||
|
"CONFIG_SOUND_OSS_CORE=y\n",
|
||||||
|
"CONFIG_HOSTAUDIO=y\n",
|
||||||
|
"# CONFIG_HW_RANDOM is not set\n",
|
||||||
|
"CONFIG_UML_RANDOM=y\n",
|
||||||
|
"# CONFIG_MMAPPER is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Generic Driver Options\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_UEVENT_HELPER_PATH=\"/sbin/hotplug\"\n",
|
||||||
|
"# CONFIG_DEVTMPFS is not set\n",
|
||||||
|
"CONFIG_STANDALONE=y\n",
|
||||||
|
"CONFIG_PREVENT_FIRMWARE_BUILD=y\n",
|
||||||
|
"CONFIG_FW_LOADER=y\n",
|
||||||
|
"CONFIG_FIRMWARE_IN_KERNEL=y\n",
|
||||||
|
"CONFIG_EXTRA_FIRMWARE=\"\"\n",
|
||||||
|
"# CONFIG_DEBUG_DRIVER is not set\n",
|
||||||
|
"# CONFIG_DEBUG_DEVRES is not set\n",
|
||||||
|
"# CONFIG_SYS_HYPERVISOR is not set\n",
|
||||||
|
"CONFIG_NET=y\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Networking options\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_PACKET=y\n",
|
||||||
|
"CONFIG_PACKET_MMAP=y\n",
|
||||||
|
"CONFIG_UNIX=y\n",
|
||||||
|
"CONFIG_XFRM=y\n",
|
||||||
|
"# CONFIG_XFRM_USER is not set\n",
|
||||||
|
"# CONFIG_XFRM_SUB_POLICY is not set\n",
|
||||||
|
"# CONFIG_XFRM_MIGRATE is not set\n",
|
||||||
|
"# CONFIG_XFRM_STATISTICS is not set\n",
|
||||||
|
"# CONFIG_NET_KEY is not set\n",
|
||||||
|
"CONFIG_INET=y\n",
|
||||||
|
"# CONFIG_IP_MULTICAST is not set\n",
|
||||||
|
"# CONFIG_IP_ADVANCED_ROUTER is not set\n",
|
||||||
|
"CONFIG_IP_FIB_HASH=y\n",
|
||||||
|
"# CONFIG_IP_PNP is not set\n",
|
||||||
|
"# CONFIG_NET_IPIP is not set\n",
|
||||||
|
"# CONFIG_NET_IPGRE is not set\n",
|
||||||
|
"# CONFIG_ARPD is not set\n",
|
||||||
|
"# CONFIG_SYN_COOKIES is not set\n",
|
||||||
|
"# CONFIG_INET_AH is not set\n",
|
||||||
|
"# CONFIG_INET_ESP is not set\n",
|
||||||
|
"# CONFIG_INET_IPCOMP is not set\n",
|
||||||
|
"# CONFIG_INET_XFRM_TUNNEL is not set\n",
|
||||||
|
"# CONFIG_INET_TUNNEL is not set\n",
|
||||||
|
"CONFIG_INET_XFRM_MODE_TRANSPORT=y\n",
|
||||||
|
"CONFIG_INET_XFRM_MODE_TUNNEL=y\n",
|
||||||
|
"CONFIG_INET_XFRM_MODE_BEET=y\n",
|
||||||
|
"# CONFIG_INET_LRO is not set\n",
|
||||||
|
"CONFIG_INET_DIAG=y\n",
|
||||||
|
"CONFIG_INET_TCP_DIAG=y\n",
|
||||||
|
"# CONFIG_TCP_CONG_ADVANCED is not set\n",
|
||||||
|
"CONFIG_TCP_CONG_CUBIC=y\n",
|
||||||
|
"CONFIG_DEFAULT_TCP_CONG=\"cubic\"\n",
|
||||||
|
"# CONFIG_TCP_MD5SIG is not set\n",
|
||||||
|
"# CONFIG_IPV6 is not set\n",
|
||||||
|
"# CONFIG_NETWORK_SECMARK is not set\n",
|
||||||
|
"# CONFIG_NETFILTER is not set\n",
|
||||||
|
"# CONFIG_IP_DCCP is not set\n",
|
||||||
|
"# CONFIG_IP_SCTP is not set\n",
|
||||||
|
"# CONFIG_RDS is not set\n",
|
||||||
|
"# CONFIG_TIPC is not set\n",
|
||||||
|
"# CONFIG_ATM is not set\n",
|
||||||
|
"# CONFIG_BRIDGE is not set\n",
|
||||||
|
"# CONFIG_NET_DSA is not set\n",
|
||||||
|
"# CONFIG_VLAN_8021Q is not set\n",
|
||||||
|
"# CONFIG_DECNET is not set\n",
|
||||||
|
"# CONFIG_LLC2 is not set\n",
|
||||||
|
"# CONFIG_IPX is not set\n",
|
||||||
|
"# CONFIG_ATALK is not set\n",
|
||||||
|
"# CONFIG_X25 is not set\n",
|
||||||
|
"# CONFIG_LAPB is not set\n",
|
||||||
|
"# CONFIG_ECONET is not set\n",
|
||||||
|
"# CONFIG_WAN_ROUTER is not set\n",
|
||||||
|
"# CONFIG_PHONET is not set\n",
|
||||||
|
"# CONFIG_IEEE802154 is not set\n",
|
||||||
|
"# CONFIG_NET_SCHED is not set\n",
|
||||||
|
"# CONFIG_DCB is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Network testing\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_NET_PKTGEN is not set\n",
|
||||||
|
"# CONFIG_HAMRADIO is not set\n",
|
||||||
|
"# CONFIG_CAN is not set\n",
|
||||||
|
"# CONFIG_IRDA is not set\n",
|
||||||
|
"# CONFIG_BT is not set\n",
|
||||||
|
"# CONFIG_AF_RXRPC is not set\n",
|
||||||
|
"CONFIG_WIRELESS=y\n",
|
||||||
|
"# CONFIG_CFG80211 is not set\n",
|
||||||
|
"# CONFIG_LIB80211 is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# CFG80211 needs to be enabled for MAC80211\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_WIMAX is not set\n",
|
||||||
|
"# CONFIG_RFKILL is not set\n",
|
||||||
|
"# CONFIG_NET_9P is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# UML Network Devices\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_UML_NET=y\n",
|
||||||
|
"CONFIG_UML_NET_ETHERTAP=y\n",
|
||||||
|
"CONFIG_UML_NET_TUNTAP=y\n",
|
||||||
|
"CONFIG_UML_NET_SLIP=y\n",
|
||||||
|
"CONFIG_UML_NET_DAEMON=y\n",
|
||||||
|
"# CONFIG_UML_NET_VDE is not set\n",
|
||||||
|
"CONFIG_UML_NET_MCAST=y\n",
|
||||||
|
"# CONFIG_UML_NET_PCAP is not set\n",
|
||||||
|
"CONFIG_UML_NET_SLIRP=y\n",
|
||||||
|
"CONFIG_NETDEVICES=y\n",
|
||||||
|
"CONFIG_DUMMY=y\n",
|
||||||
|
"# CONFIG_BONDING is not set\n",
|
||||||
|
"# CONFIG_MACVLAN is not set\n",
|
||||||
|
"# CONFIG_EQUALIZER is not set\n",
|
||||||
|
"CONFIG_TUN=y\n",
|
||||||
|
"# CONFIG_VETH is not set\n",
|
||||||
|
"CONFIG_WLAN=y\n",
|
||||||
|
"# CONFIG_HOSTAP is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Enable WiMAX (Networking options) to see the WiMAX drivers\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_WAN is not set\n",
|
||||||
|
"CONFIG_PPP=y\n",
|
||||||
|
"# CONFIG_PPP_MULTILINK is not set\n",
|
||||||
|
"# CONFIG_PPP_FILTER is not set\n",
|
||||||
|
"# CONFIG_PPP_ASYNC is not set\n",
|
||||||
|
"# CONFIG_PPP_SYNC_TTY is not set\n",
|
||||||
|
"# CONFIG_PPP_DEFLATE is not set\n",
|
||||||
|
"# CONFIG_PPP_BSDCOMP is not set\n",
|
||||||
|
"# CONFIG_PPP_MPPE is not set\n",
|
||||||
|
"# CONFIG_PPPOE is not set\n",
|
||||||
|
"# CONFIG_PPPOL2TP is not set\n",
|
||||||
|
"CONFIG_SLIP=y\n",
|
||||||
|
"# CONFIG_SLIP_COMPRESSED is not set\n",
|
||||||
|
"CONFIG_SLHC=y\n",
|
||||||
|
"# CONFIG_SLIP_SMART is not set\n",
|
||||||
|
"# CONFIG_SLIP_MODE_SLIP6 is not set\n",
|
||||||
|
"# CONFIG_NETCONSOLE is not set\n",
|
||||||
|
"# CONFIG_NETPOLL is not set\n",
|
||||||
|
"# CONFIG_NET_POLL_CONTROLLER is not set\n",
|
||||||
|
"# CONFIG_CONNECTOR is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# File systems\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_EXT2_FS=y\n",
|
||||||
|
"# CONFIG_EXT2_FS_XATTR is not set\n",
|
||||||
|
"# CONFIG_EXT2_FS_XIP is not set\n",
|
||||||
|
"CONFIG_EXT3_FS=y\n",
|
||||||
|
"# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set\n",
|
||||||
|
"# CONFIG_EXT3_FS_XATTR is not set\n",
|
||||||
|
"# CONFIG_EXT4_FS is not set\n",
|
||||||
|
"CONFIG_JBD=y\n",
|
||||||
|
"CONFIG_REISERFS_FS=y\n",
|
||||||
|
"# CONFIG_REISERFS_CHECK is not set\n",
|
||||||
|
"# CONFIG_REISERFS_PROC_INFO is not set\n",
|
||||||
|
"# CONFIG_REISERFS_FS_XATTR is not set\n",
|
||||||
|
"# CONFIG_JFS_FS is not set\n",
|
||||||
|
"# CONFIG_FS_POSIX_ACL is not set\n",
|
||||||
|
"# CONFIG_XFS_FS is not set\n",
|
||||||
|
"# CONFIG_GFS2_FS is not set\n",
|
||||||
|
"# CONFIG_OCFS2_FS is not set\n",
|
||||||
|
"# CONFIG_BTRFS_FS is not set\n",
|
||||||
|
"# CONFIG_NILFS2_FS is not set\n",
|
||||||
|
"CONFIG_FILE_LOCKING=y\n",
|
||||||
|
"CONFIG_FSNOTIFY=y\n",
|
||||||
|
"CONFIG_DNOTIFY=y\n",
|
||||||
|
"CONFIG_INOTIFY=y\n",
|
||||||
|
"CONFIG_INOTIFY_USER=y\n",
|
||||||
|
"CONFIG_QUOTA=y\n",
|
||||||
|
"# CONFIG_QUOTA_NETLINK_INTERFACE is not set\n",
|
||||||
|
"CONFIG_PRINT_QUOTA_WARNING=y\n",
|
||||||
|
"# CONFIG_QFMT_V1 is not set\n",
|
||||||
|
"# CONFIG_QFMT_V2 is not set\n",
|
||||||
|
"CONFIG_QUOTACTL=y\n",
|
||||||
|
"CONFIG_AUTOFS_FS=y\n",
|
||||||
|
"CONFIG_AUTOFS4_FS=y\n",
|
||||||
|
"# CONFIG_FUSE_FS is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Caches\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_FSCACHE is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# CD-ROM/DVD Filesystems\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_ISO9660_FS=y\n",
|
||||||
|
"CONFIG_JOLIET=y\n",
|
||||||
|
"# CONFIG_ZISOFS is not set\n",
|
||||||
|
"# CONFIG_UDF_FS is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# DOS/FAT/NT Filesystems\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_MSDOS_FS is not set\n",
|
||||||
|
"# CONFIG_VFAT_FS is not set\n",
|
||||||
|
"# CONFIG_NTFS_FS is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Pseudo filesystems\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_PROC_FS=y\n",
|
||||||
|
"CONFIG_PROC_KCORE=y\n",
|
||||||
|
"CONFIG_PROC_SYSCTL=y\n",
|
||||||
|
"CONFIG_PROC_PAGE_MONITOR=y\n",
|
||||||
|
"CONFIG_SYSFS=y\n",
|
||||||
|
"CONFIG_TMPFS=y\n",
|
||||||
|
"# CONFIG_TMPFS_POSIX_ACL is not set\n",
|
||||||
|
"# CONFIG_HUGETLB_PAGE is not set\n",
|
||||||
|
"# CONFIG_CONFIGFS_FS is not set\n",
|
||||||
|
"CONFIG_MISC_FILESYSTEMS=y\n",
|
||||||
|
"# CONFIG_ADFS_FS is not set\n",
|
||||||
|
"# CONFIG_AFFS_FS is not set\n",
|
||||||
|
"# CONFIG_HFS_FS is not set\n",
|
||||||
|
"# CONFIG_HFSPLUS_FS is not set\n",
|
||||||
|
"# CONFIG_BEFS_FS is not set\n",
|
||||||
|
"# CONFIG_BFS_FS is not set\n",
|
||||||
|
"# CONFIG_EFS_FS is not set\n",
|
||||||
|
"# CONFIG_CRAMFS is not set\n",
|
||||||
|
"# CONFIG_SQUASHFS is not set\n",
|
||||||
|
"# CONFIG_VXFS_FS is not set\n",
|
||||||
|
"# CONFIG_MINIX_FS is not set\n",
|
||||||
|
"# CONFIG_OMFS_FS is not set\n",
|
||||||
|
"# CONFIG_HPFS_FS is not set\n",
|
||||||
|
"# CONFIG_QNX4FS_FS is not set\n",
|
||||||
|
"# CONFIG_ROMFS_FS is not set\n",
|
||||||
|
"# CONFIG_SYSV_FS is not set\n",
|
||||||
|
"# CONFIG_UFS_FS is not set\n",
|
||||||
|
"CONFIG_NETWORK_FILESYSTEMS=y\n",
|
||||||
|
"# CONFIG_NFS_FS is not set\n",
|
||||||
|
"# CONFIG_NFSD is not set\n",
|
||||||
|
"# CONFIG_SMB_FS is not set\n",
|
||||||
|
"# CONFIG_CIFS is not set\n",
|
||||||
|
"# CONFIG_NCP_FS is not set\n",
|
||||||
|
"# CONFIG_CODA_FS is not set\n",
|
||||||
|
"# CONFIG_AFS_FS is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Partition Types\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_PARTITION_ADVANCED is not set\n",
|
||||||
|
"CONFIG_MSDOS_PARTITION=y\n",
|
||||||
|
"CONFIG_NLS=y\n",
|
||||||
|
"CONFIG_NLS_DEFAULT=\"iso8859-1\"\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_437 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_737 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_775 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_850 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_852 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_855 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_857 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_860 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_861 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_862 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_863 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_864 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_865 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_866 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_869 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_936 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_950 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_932 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_949 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_874 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_8 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_1250 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_1251 is not set\n",
|
||||||
|
"# CONFIG_NLS_ASCII is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_1 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_2 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_3 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_4 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_5 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_6 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_7 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_9 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_13 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_14 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_15 is not set\n",
|
||||||
|
"# CONFIG_NLS_KOI8_R is not set\n",
|
||||||
|
"# CONFIG_NLS_KOI8_U is not set\n",
|
||||||
|
"# CONFIG_NLS_UTF8 is not set\n",
|
||||||
|
"# CONFIG_DLM is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Security options\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_KEYS is not set\n",
|
||||||
|
"# CONFIG_SECURITY is not set\n",
|
||||||
|
"# CONFIG_SECURITYFS is not set\n",
|
||||||
|
"# CONFIG_DEFAULT_SECURITY_SELINUX is not set\n",
|
||||||
|
"# CONFIG_DEFAULT_SECURITY_SMACK is not set\n",
|
||||||
|
"# CONFIG_DEFAULT_SECURITY_TOMOYO is not set\n",
|
||||||
|
"CONFIG_DEFAULT_SECURITY_DAC=y\n",
|
||||||
|
"CONFIG_DEFAULT_SECURITY=\"\"\n",
|
||||||
|
"CONFIG_CRYPTO=y\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Crypto core or helper\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_CRYPTO_FIPS is not set\n",
|
||||||
|
"CONFIG_CRYPTO_ALGAPI=y\n",
|
||||||
|
"CONFIG_CRYPTO_ALGAPI2=y\n",
|
||||||
|
"CONFIG_CRYPTO_RNG=y\n",
|
||||||
|
"CONFIG_CRYPTO_RNG2=y\n",
|
||||||
|
"# CONFIG_CRYPTO_MANAGER is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_MANAGER2 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_GF128MUL is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_NULL is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_CRYPTD is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_AUTHENC is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Authenticated Encryption with Associated Data\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_CRYPTO_CCM is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_GCM is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_SEQIV is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Block modes\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_CRYPTO_CBC is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_CTR is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_CTS is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_ECB is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_LRW is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_PCBC is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_XTS is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Hash modes\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_CRYPTO_HMAC is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_XCBC is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_VMAC is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Digest\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_CRYPTO_CRC32C is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_GHASH is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_MD4 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_MD5 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_MICHAEL_MIC is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_RMD128 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_RMD160 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_RMD256 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_RMD320 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_SHA1 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_SHA256 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_SHA512 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_TGR192 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_WP512 is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Ciphers\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_CRYPTO_AES=y\n",
|
||||||
|
"# CONFIG_CRYPTO_AES_586 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_ANUBIS is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_ARC4 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_BLOWFISH is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_CAMELLIA is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_CAST5 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_CAST6 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_DES is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_FCRYPT is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_KHAZAD is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_SALSA20 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_SALSA20_586 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_SEED is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_SERPENT is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_TEA is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_TWOFISH is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_TWOFISH_586 is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Compression\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_CRYPTO_DEFLATE is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_ZLIB is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_LZO is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Random Number Generation\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_CRYPTO_ANSI_CPRNG=y\n",
|
||||||
|
"CONFIG_CRYPTO_HW=y\n",
|
||||||
|
"# CONFIG_BINARY_PRINTF is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Library routines\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_BITREVERSE=y\n",
|
||||||
|
"CONFIG_GENERIC_FIND_FIRST_BIT=y\n",
|
||||||
|
"CONFIG_GENERIC_FIND_NEXT_BIT=y\n",
|
||||||
|
"CONFIG_GENERIC_FIND_LAST_BIT=y\n",
|
||||||
|
"# CONFIG_CRC_CCITT is not set\n",
|
||||||
|
"# CONFIG_CRC16 is not set\n",
|
||||||
|
"# CONFIG_CRC_T10DIF is not set\n",
|
||||||
|
"# CONFIG_CRC_ITU_T is not set\n",
|
||||||
|
"CONFIG_CRC32=y\n",
|
||||||
|
"# CONFIG_CRC7 is not set\n",
|
||||||
|
"# CONFIG_LIBCRC32C is not set\n",
|
||||||
|
"CONFIG_HAS_DMA=y\n",
|
||||||
|
"CONFIG_NLATTR=y\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# SCSI device support\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_RAID_ATTRS is not set\n",
|
||||||
|
"# CONFIG_SCSI is not set\n",
|
||||||
|
"# CONFIG_SCSI_DMA is not set\n",
|
||||||
|
"# CONFIG_SCSI_NETLINK is not set\n",
|
||||||
|
"# CONFIG_MD is not set\n",
|
||||||
|
"# CONFIG_NEW_LEDS is not set\n",
|
||||||
|
"# CONFIG_INPUT is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Kernel hacking\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_PRINTK_TIME is not set\n",
|
||||||
|
"CONFIG_ENABLE_WARN_DEPRECATED=y\n",
|
||||||
|
"CONFIG_ENABLE_MUST_CHECK=y\n",
|
||||||
|
"CONFIG_FRAME_WARN=1024\n",
|
||||||
|
"# CONFIG_STRIP_ASM_SYMS is not set\n",
|
||||||
|
"# CONFIG_UNUSED_SYMBOLS is not set\n",
|
||||||
|
"# CONFIG_DEBUG_FS is not set\n",
|
||||||
|
"CONFIG_DEBUG_KERNEL=y\n",
|
||||||
|
"# CONFIG_DEBUG_SHIRQ is not set\n",
|
||||||
|
"CONFIG_DETECT_SOFTLOCKUP=y\n",
|
||||||
|
"# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set\n",
|
||||||
|
"CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0\n",
|
||||||
|
"CONFIG_DETECT_HUNG_TASK=y\n",
|
||||||
|
"# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set\n",
|
||||||
|
"CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0\n",
|
||||||
|
"CONFIG_SCHED_DEBUG=y\n",
|
||||||
|
"# CONFIG_SCHEDSTATS is not set\n",
|
||||||
|
"# CONFIG_TIMER_STATS is not set\n",
|
||||||
|
"# CONFIG_DEBUG_OBJECTS is not set\n",
|
||||||
|
"# CONFIG_DEBUG_SLAB is not set\n",
|
||||||
|
"# CONFIG_DEBUG_RT_MUTEXES is not set\n",
|
||||||
|
"# CONFIG_RT_MUTEX_TESTER is not set\n",
|
||||||
|
"# CONFIG_DEBUG_SPINLOCK is not set\n",
|
||||||
|
"# CONFIG_DEBUG_MUTEXES is not set\n",
|
||||||
|
"# CONFIG_DEBUG_SPINLOCK_SLEEP is not set\n",
|
||||||
|
"# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set\n",
|
||||||
|
"# CONFIG_DEBUG_KOBJECT is not set\n",
|
||||||
|
"CONFIG_DEBUG_BUGVERBOSE=y\n",
|
||||||
|
"CONFIG_DEBUG_INFO=y\n",
|
||||||
|
"# CONFIG_DEBUG_VM is not set\n",
|
||||||
|
"# CONFIG_DEBUG_WRITECOUNT is not set\n",
|
||||||
|
"CONFIG_DEBUG_MEMORY_INIT=y\n",
|
||||||
|
"# CONFIG_DEBUG_LIST is not set\n",
|
||||||
|
"# CONFIG_DEBUG_SG is not set\n",
|
||||||
|
"# CONFIG_DEBUG_NOTIFIERS is not set\n",
|
||||||
|
"# CONFIG_DEBUG_CREDENTIALS is not set\n",
|
||||||
|
"CONFIG_FRAME_POINTER=y\n",
|
||||||
|
"# CONFIG_BOOT_PRINTK_DELAY is not set\n",
|
||||||
|
"# CONFIG_RCU_TORTURE_TEST is not set\n",
|
||||||
|
"CONFIG_RCU_CPU_STALL_DETECTOR=y\n",
|
||||||
|
"# CONFIG_BACKTRACE_SELF_TEST is not set\n",
|
||||||
|
"# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set\n",
|
||||||
|
"# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set\n",
|
||||||
|
"# CONFIG_FAULT_INJECTION is not set\n",
|
||||||
|
"# CONFIG_SYSCTL_SYSCALL_CHECK is not set\n",
|
||||||
|
"# CONFIG_PAGE_POISONING is not set\n",
|
||||||
|
"# CONFIG_SAMPLES is not set\n",
|
||||||
|
"# CONFIG_GPROF is not set\n",
|
||||||
|
"# CONFIG_GCOV is not set\n",
|
||||||
|
"# CONFIG_DEBUG_STACK_USAGE is not set\n",
|
||||||
|
""
|
||||||
|
};
|
||||||
|
|
||||||
|
static int __init print_config(char *line, int *add)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < sizeof(config)/sizeof(config[0]); i++)
|
||||||
|
printf("%s", config[i]);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
__uml_setup("--showconfig", print_config,
|
||||||
|
"--showconfig\n"
|
||||||
|
" Prints the config file that this UML binary was generated from.\n\n"
|
||||||
|
);
|
||||||
|
|
758
arch/um/kernel/config.tmp
Normal file
758
arch/um/kernel/config.tmp
Normal file
|
@ -0,0 +1,758 @@
|
||||||
|
"#\n",
|
||||||
|
"# Automatically generated make config: don't edit\n",
|
||||||
|
"# Linux kernel version: 2.6.33-rc2\n",
|
||||||
|
"# Tue Jan 5 22:00:43 2010\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_DEFCONFIG_LIST=\"arch/$ARCH/defconfig\"\n",
|
||||||
|
"CONFIG_GENERIC_HARDIRQS=y\n",
|
||||||
|
"CONFIG_UML=y\n",
|
||||||
|
"CONFIG_MMU=y\n",
|
||||||
|
"CONFIG_NO_IOMEM=y\n",
|
||||||
|
"# CONFIG_TRACE_IRQFLAGS_SUPPORT is not set\n",
|
||||||
|
"CONFIG_LOCKDEP_SUPPORT=y\n",
|
||||||
|
"# CONFIG_STACKTRACE_SUPPORT is not set\n",
|
||||||
|
"CONFIG_GENERIC_CALIBRATE_DELAY=y\n",
|
||||||
|
"CONFIG_GENERIC_BUG=y\n",
|
||||||
|
"CONFIG_GENERIC_TIME=y\n",
|
||||||
|
"CONFIG_GENERIC_CLOCKEVENTS=y\n",
|
||||||
|
"CONFIG_IRQ_RELEASE_METHOD=y\n",
|
||||||
|
"CONFIG_HZ=100\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# UML-specific options\n",
|
||||||
|
"#\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Host processor type and features\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_M386 is not set\n",
|
||||||
|
"# CONFIG_M486 is not set\n",
|
||||||
|
"# CONFIG_M586 is not set\n",
|
||||||
|
"# CONFIG_M586TSC is not set\n",
|
||||||
|
"# CONFIG_M586MMX is not set\n",
|
||||||
|
"CONFIG_M686=y\n",
|
||||||
|
"# CONFIG_MPENTIUMII is not set\n",
|
||||||
|
"# CONFIG_MPENTIUMIII is not set\n",
|
||||||
|
"# CONFIG_MPENTIUMM is not set\n",
|
||||||
|
"# CONFIG_MPENTIUM4 is not set\n",
|
||||||
|
"# CONFIG_MK6 is not set\n",
|
||||||
|
"# CONFIG_MK7 is not set\n",
|
||||||
|
"# CONFIG_MK8 is not set\n",
|
||||||
|
"# CONFIG_MCRUSOE is not set\n",
|
||||||
|
"# CONFIG_MEFFICEON is not set\n",
|
||||||
|
"# CONFIG_MWINCHIPC6 is not set\n",
|
||||||
|
"# CONFIG_MWINCHIP3D is not set\n",
|
||||||
|
"# CONFIG_MGEODEGX1 is not set\n",
|
||||||
|
"# CONFIG_MGEODE_LX is not set\n",
|
||||||
|
"# CONFIG_MCYRIXIII is not set\n",
|
||||||
|
"# CONFIG_MVIAC3_2 is not set\n",
|
||||||
|
"# CONFIG_MVIAC7 is not set\n",
|
||||||
|
"# CONFIG_MPSC is not set\n",
|
||||||
|
"# CONFIG_MCORE2 is not set\n",
|
||||||
|
"# CONFIG_MATOM is not set\n",
|
||||||
|
"# CONFIG_GENERIC_CPU is not set\n",
|
||||||
|
"# CONFIG_X86_GENERIC is not set\n",
|
||||||
|
"CONFIG_X86_CPU=y\n",
|
||||||
|
"CONFIG_X86_INTERNODE_CACHE_SHIFT=5\n",
|
||||||
|
"CONFIG_X86_CMPXCHG=y\n",
|
||||||
|
"CONFIG_X86_L1_CACHE_SHIFT=5\n",
|
||||||
|
"CONFIG_X86_XADD=y\n",
|
||||||
|
"CONFIG_X86_PPRO_FENCE=y\n",
|
||||||
|
"CONFIG_X86_WP_WORKS_OK=y\n",
|
||||||
|
"CONFIG_X86_INVLPG=y\n",
|
||||||
|
"CONFIG_X86_BSWAP=y\n",
|
||||||
|
"CONFIG_X86_POPAD_OK=y\n",
|
||||||
|
"CONFIG_X86_USE_PPRO_CHECKSUM=y\n",
|
||||||
|
"CONFIG_X86_TSC=y\n",
|
||||||
|
"CONFIG_X86_CMPXCHG64=y\n",
|
||||||
|
"CONFIG_X86_CMOV=y\n",
|
||||||
|
"CONFIG_X86_MINIMUM_CPU_FAMILY=5\n",
|
||||||
|
"CONFIG_CPU_SUP_INTEL=y\n",
|
||||||
|
"CONFIG_CPU_SUP_CYRIX_32=y\n",
|
||||||
|
"CONFIG_CPU_SUP_AMD=y\n",
|
||||||
|
"CONFIG_CPU_SUP_CENTAUR=y\n",
|
||||||
|
"CONFIG_CPU_SUP_TRANSMETA_32=y\n",
|
||||||
|
"CONFIG_CPU_SUP_UMC_32=y\n",
|
||||||
|
"CONFIG_UML_X86=y\n",
|
||||||
|
"# CONFIG_64BIT is not set\n",
|
||||||
|
"CONFIG_X86_32=y\n",
|
||||||
|
"CONFIG_RWSEM_XCHGADD_ALGORITHM=y\n",
|
||||||
|
"# CONFIG_RWSEM_GENERIC_SPINLOCK is not set\n",
|
||||||
|
"# CONFIG_3_LEVEL_PGTABLES is not set\n",
|
||||||
|
"CONFIG_ARCH_HAS_SC_SIGNALS=y\n",
|
||||||
|
"CONFIG_ARCH_REUSE_HOST_VSYSCALL_AREA=y\n",
|
||||||
|
"# CONFIG_SMP_BROKEN is not set\n",
|
||||||
|
"CONFIG_GENERIC_HWEIGHT=y\n",
|
||||||
|
"# CONFIG_STATIC_LINK is not set\n",
|
||||||
|
"CONFIG_SELECT_MEMORY_MODEL=y\n",
|
||||||
|
"CONFIG_FLATMEM_MANUAL=y\n",
|
||||||
|
"# CONFIG_DISCONTIGMEM_MANUAL is not set\n",
|
||||||
|
"# CONFIG_SPARSEMEM_MANUAL is not set\n",
|
||||||
|
"CONFIG_FLATMEM=y\n",
|
||||||
|
"CONFIG_FLAT_NODE_MEM_MAP=y\n",
|
||||||
|
"CONFIG_PAGEFLAGS_EXTENDED=y\n",
|
||||||
|
"CONFIG_SPLIT_PTLOCK_CPUS=4\n",
|
||||||
|
"# CONFIG_PHYS_ADDR_T_64BIT is not set\n",
|
||||||
|
"CONFIG_ZONE_DMA_FLAG=0\n",
|
||||||
|
"CONFIG_VIRT_TO_BUS=y\n",
|
||||||
|
"# CONFIG_KSM is not set\n",
|
||||||
|
"CONFIG_DEFAULT_MMAP_MIN_ADDR=4096\n",
|
||||||
|
"CONFIG_TICK_ONESHOT=y\n",
|
||||||
|
"CONFIG_NO_HZ=y\n",
|
||||||
|
"CONFIG_HIGH_RES_TIMERS=y\n",
|
||||||
|
"CONFIG_GENERIC_CLOCKEVENTS_BUILD=y\n",
|
||||||
|
"CONFIG_LD_SCRIPT_DYN=y\n",
|
||||||
|
"CONFIG_BINFMT_ELF=y\n",
|
||||||
|
"# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set\n",
|
||||||
|
"CONFIG_HAVE_AOUT=y\n",
|
||||||
|
"# CONFIG_BINFMT_AOUT is not set\n",
|
||||||
|
"CONFIG_BINFMT_MISC=y\n",
|
||||||
|
"CONFIG_HOSTFS=y\n",
|
||||||
|
"CONFIG_HPPFS=y\n",
|
||||||
|
"CONFIG_MCONSOLE=y\n",
|
||||||
|
"CONFIG_MAGIC_SYSRQ=y\n",
|
||||||
|
"# CONFIG_HIGHMEM is not set\n",
|
||||||
|
"CONFIG_KERNEL_STACK_ORDER=0\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# General setup\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_EXPERIMENTAL=y\n",
|
||||||
|
"CONFIG_BROKEN_ON_SMP=y\n",
|
||||||
|
"CONFIG_INIT_ENV_ARG_LIMIT=128\n",
|
||||||
|
"CONFIG_LOCALVERSION=\"\"\n",
|
||||||
|
"CONFIG_LOCALVERSION_AUTO=y\n",
|
||||||
|
"CONFIG_SWAP=y\n",
|
||||||
|
"CONFIG_SYSVIPC=y\n",
|
||||||
|
"CONFIG_SYSVIPC_SYSCTL=y\n",
|
||||||
|
"CONFIG_POSIX_MQUEUE=y\n",
|
||||||
|
"CONFIG_POSIX_MQUEUE_SYSCTL=y\n",
|
||||||
|
"CONFIG_BSD_PROCESS_ACCT=y\n",
|
||||||
|
"# CONFIG_BSD_PROCESS_ACCT_V3 is not set\n",
|
||||||
|
"# CONFIG_TASKSTATS is not set\n",
|
||||||
|
"# CONFIG_AUDIT is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# RCU Subsystem\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_TREE_RCU=y\n",
|
||||||
|
"# CONFIG_TREE_PREEMPT_RCU is not set\n",
|
||||||
|
"# CONFIG_TINY_RCU is not set\n",
|
||||||
|
"# CONFIG_RCU_TRACE is not set\n",
|
||||||
|
"CONFIG_RCU_FANOUT=32\n",
|
||||||
|
"# CONFIG_RCU_FANOUT_EXACT is not set\n",
|
||||||
|
"# CONFIG_TREE_RCU_TRACE is not set\n",
|
||||||
|
"CONFIG_IKCONFIG=y\n",
|
||||||
|
"CONFIG_IKCONFIG_PROC=y\n",
|
||||||
|
"CONFIG_LOG_BUF_SHIFT=14\n",
|
||||||
|
"# CONFIG_GROUP_SCHED is not set\n",
|
||||||
|
"# CONFIG_CGROUPS is not set\n",
|
||||||
|
"# CONFIG_SYSFS_DEPRECATED_V2 is not set\n",
|
||||||
|
"# CONFIG_RELAY is not set\n",
|
||||||
|
"CONFIG_NAMESPACES=y\n",
|
||||||
|
"# CONFIG_UTS_NS is not set\n",
|
||||||
|
"# CONFIG_IPC_NS is not set\n",
|
||||||
|
"# CONFIG_USER_NS is not set\n",
|
||||||
|
"# CONFIG_PID_NS is not set\n",
|
||||||
|
"# CONFIG_NET_NS is not set\n",
|
||||||
|
"# CONFIG_BLK_DEV_INITRD is not set\n",
|
||||||
|
"CONFIG_CC_OPTIMIZE_FOR_SIZE=y\n",
|
||||||
|
"CONFIG_SYSCTL=y\n",
|
||||||
|
"CONFIG_ANON_INODES=y\n",
|
||||||
|
"# CONFIG_EMBEDDED is not set\n",
|
||||||
|
"CONFIG_UID16=y\n",
|
||||||
|
"CONFIG_SYSCTL_SYSCALL=y\n",
|
||||||
|
"CONFIG_KALLSYMS=y\n",
|
||||||
|
"# CONFIG_KALLSYMS_ALL is not set\n",
|
||||||
|
"CONFIG_KALLSYMS_EXTRA_PASS=y\n",
|
||||||
|
"CONFIG_HOTPLUG=y\n",
|
||||||
|
"CONFIG_PRINTK=y\n",
|
||||||
|
"CONFIG_BUG=y\n",
|
||||||
|
"CONFIG_ELF_CORE=y\n",
|
||||||
|
"CONFIG_BASE_FULL=y\n",
|
||||||
|
"CONFIG_FUTEX=y\n",
|
||||||
|
"CONFIG_EPOLL=y\n",
|
||||||
|
"CONFIG_SIGNALFD=y\n",
|
||||||
|
"CONFIG_TIMERFD=y\n",
|
||||||
|
"CONFIG_EVENTFD=y\n",
|
||||||
|
"CONFIG_SHMEM=y\n",
|
||||||
|
"CONFIG_AIO=y\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Kernel Performance Events And Counters\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_VM_EVENT_COUNTERS=y\n",
|
||||||
|
"CONFIG_COMPAT_BRK=y\n",
|
||||||
|
"CONFIG_SLAB=y\n",
|
||||||
|
"# CONFIG_SLUB is not set\n",
|
||||||
|
"# CONFIG_SLOB is not set\n",
|
||||||
|
"# CONFIG_PROFILING is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# GCOV-based kernel profiling\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_SLOW_WORK is not set\n",
|
||||||
|
"# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set\n",
|
||||||
|
"CONFIG_SLABINFO=y\n",
|
||||||
|
"CONFIG_RT_MUTEXES=y\n",
|
||||||
|
"CONFIG_BASE_SMALL=0\n",
|
||||||
|
"# CONFIG_MODULES is not set\n",
|
||||||
|
"CONFIG_BLOCK=y\n",
|
||||||
|
"CONFIG_LBDAF=y\n",
|
||||||
|
"# CONFIG_BLK_DEV_BSG is not set\n",
|
||||||
|
"# CONFIG_BLK_DEV_INTEGRITY is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# IO Schedulers\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_IOSCHED_NOOP=y\n",
|
||||||
|
"CONFIG_IOSCHED_DEADLINE=y\n",
|
||||||
|
"CONFIG_IOSCHED_CFQ=y\n",
|
||||||
|
"# CONFIG_DEFAULT_DEADLINE is not set\n",
|
||||||
|
"CONFIG_DEFAULT_CFQ=y\n",
|
||||||
|
"# CONFIG_DEFAULT_NOOP is not set\n",
|
||||||
|
"CONFIG_DEFAULT_IOSCHED=\"cfq\"\n",
|
||||||
|
"# CONFIG_INLINE_SPIN_TRYLOCK is not set\n",
|
||||||
|
"# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set\n",
|
||||||
|
"# CONFIG_INLINE_SPIN_LOCK is not set\n",
|
||||||
|
"# CONFIG_INLINE_SPIN_LOCK_BH is not set\n",
|
||||||
|
"# CONFIG_INLINE_SPIN_LOCK_IRQ is not set\n",
|
||||||
|
"# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set\n",
|
||||||
|
"CONFIG_INLINE_SPIN_UNLOCK=y\n",
|
||||||
|
"# CONFIG_INLINE_SPIN_UNLOCK_BH is not set\n",
|
||||||
|
"CONFIG_INLINE_SPIN_UNLOCK_IRQ=y\n",
|
||||||
|
"# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set\n",
|
||||||
|
"# CONFIG_INLINE_READ_TRYLOCK is not set\n",
|
||||||
|
"# CONFIG_INLINE_READ_LOCK is not set\n",
|
||||||
|
"# CONFIG_INLINE_READ_LOCK_BH is not set\n",
|
||||||
|
"# CONFIG_INLINE_READ_LOCK_IRQ is not set\n",
|
||||||
|
"# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set\n",
|
||||||
|
"CONFIG_INLINE_READ_UNLOCK=y\n",
|
||||||
|
"# CONFIG_INLINE_READ_UNLOCK_BH is not set\n",
|
||||||
|
"CONFIG_INLINE_READ_UNLOCK_IRQ=y\n",
|
||||||
|
"# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set\n",
|
||||||
|
"# CONFIG_INLINE_WRITE_TRYLOCK is not set\n",
|
||||||
|
"# CONFIG_INLINE_WRITE_LOCK is not set\n",
|
||||||
|
"# CONFIG_INLINE_WRITE_LOCK_BH is not set\n",
|
||||||
|
"# CONFIG_INLINE_WRITE_LOCK_IRQ is not set\n",
|
||||||
|
"# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set\n",
|
||||||
|
"CONFIG_INLINE_WRITE_UNLOCK=y\n",
|
||||||
|
"# CONFIG_INLINE_WRITE_UNLOCK_BH is not set\n",
|
||||||
|
"CONFIG_INLINE_WRITE_UNLOCK_IRQ=y\n",
|
||||||
|
"# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set\n",
|
||||||
|
"# CONFIG_MUTEX_SPIN_ON_OWNER is not set\n",
|
||||||
|
"# CONFIG_FREEZER is not set\n",
|
||||||
|
"CONFIG_BLK_DEV=y\n",
|
||||||
|
"CONFIG_BLK_DEV_UBD=y\n",
|
||||||
|
"# CONFIG_BLK_DEV_UBD_SYNC is not set\n",
|
||||||
|
"CONFIG_BLK_DEV_COW_COMMON=y\n",
|
||||||
|
"CONFIG_BLK_DEV_LOOP=y\n",
|
||||||
|
"# CONFIG_BLK_DEV_CRYPTOLOOP is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# DRBD disabled because PROC_FS, INET or CONNECTOR not selected\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_BLK_DEV_NBD=y\n",
|
||||||
|
"# CONFIG_BLK_DEV_RAM is not set\n",
|
||||||
|
"# CONFIG_ATA_OVER_ETH is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Character Devices\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_STDERR_CONSOLE=y\n",
|
||||||
|
"CONFIG_STDIO_CONSOLE=y\n",
|
||||||
|
"CONFIG_SSL=y\n",
|
||||||
|
"CONFIG_NULL_CHAN=y\n",
|
||||||
|
"CONFIG_PORT_CHAN=y\n",
|
||||||
|
"CONFIG_PTY_CHAN=y\n",
|
||||||
|
"CONFIG_TTY_CHAN=y\n",
|
||||||
|
"CONFIG_XTERM_CHAN=y\n",
|
||||||
|
"# CONFIG_NOCONFIG_CHAN is not set\n",
|
||||||
|
"CONFIG_CON_ZERO_CHAN=\"fd:0,fd:1\"\n",
|
||||||
|
"CONFIG_CON_CHAN=\"xterm\"\n",
|
||||||
|
"CONFIG_SSL_CHAN=\"pts\"\n",
|
||||||
|
"CONFIG_UNIX98_PTYS=y\n",
|
||||||
|
"CONFIG_LEGACY_PTYS=y\n",
|
||||||
|
"# CONFIG_RAW_DRIVER is not set\n",
|
||||||
|
"CONFIG_LEGACY_PTY_COUNT=32\n",
|
||||||
|
"# CONFIG_WATCHDOG is not set\n",
|
||||||
|
"CONFIG_UML_SOUND=y\n",
|
||||||
|
"CONFIG_SOUND=y\n",
|
||||||
|
"CONFIG_SOUND_OSS_CORE=y\n",
|
||||||
|
"CONFIG_HOSTAUDIO=y\n",
|
||||||
|
"# CONFIG_HW_RANDOM is not set\n",
|
||||||
|
"CONFIG_UML_RANDOM=y\n",
|
||||||
|
"# CONFIG_MMAPPER is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Generic Driver Options\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_UEVENT_HELPER_PATH=\"/sbin/hotplug\"\n",
|
||||||
|
"# CONFIG_DEVTMPFS is not set\n",
|
||||||
|
"CONFIG_STANDALONE=y\n",
|
||||||
|
"CONFIG_PREVENT_FIRMWARE_BUILD=y\n",
|
||||||
|
"CONFIG_FW_LOADER=y\n",
|
||||||
|
"CONFIG_FIRMWARE_IN_KERNEL=y\n",
|
||||||
|
"CONFIG_EXTRA_FIRMWARE=\"\"\n",
|
||||||
|
"# CONFIG_DEBUG_DRIVER is not set\n",
|
||||||
|
"# CONFIG_DEBUG_DEVRES is not set\n",
|
||||||
|
"# CONFIG_SYS_HYPERVISOR is not set\n",
|
||||||
|
"CONFIG_NET=y\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Networking options\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_PACKET=y\n",
|
||||||
|
"CONFIG_PACKET_MMAP=y\n",
|
||||||
|
"CONFIG_UNIX=y\n",
|
||||||
|
"CONFIG_XFRM=y\n",
|
||||||
|
"# CONFIG_XFRM_USER is not set\n",
|
||||||
|
"# CONFIG_XFRM_SUB_POLICY is not set\n",
|
||||||
|
"# CONFIG_XFRM_MIGRATE is not set\n",
|
||||||
|
"# CONFIG_XFRM_STATISTICS is not set\n",
|
||||||
|
"# CONFIG_NET_KEY is not set\n",
|
||||||
|
"CONFIG_INET=y\n",
|
||||||
|
"# CONFIG_IP_MULTICAST is not set\n",
|
||||||
|
"# CONFIG_IP_ADVANCED_ROUTER is not set\n",
|
||||||
|
"CONFIG_IP_FIB_HASH=y\n",
|
||||||
|
"# CONFIG_IP_PNP is not set\n",
|
||||||
|
"# CONFIG_NET_IPIP is not set\n",
|
||||||
|
"# CONFIG_NET_IPGRE is not set\n",
|
||||||
|
"# CONFIG_ARPD is not set\n",
|
||||||
|
"# CONFIG_SYN_COOKIES is not set\n",
|
||||||
|
"# CONFIG_INET_AH is not set\n",
|
||||||
|
"# CONFIG_INET_ESP is not set\n",
|
||||||
|
"# CONFIG_INET_IPCOMP is not set\n",
|
||||||
|
"# CONFIG_INET_XFRM_TUNNEL is not set\n",
|
||||||
|
"# CONFIG_INET_TUNNEL is not set\n",
|
||||||
|
"CONFIG_INET_XFRM_MODE_TRANSPORT=y\n",
|
||||||
|
"CONFIG_INET_XFRM_MODE_TUNNEL=y\n",
|
||||||
|
"CONFIG_INET_XFRM_MODE_BEET=y\n",
|
||||||
|
"# CONFIG_INET_LRO is not set\n",
|
||||||
|
"CONFIG_INET_DIAG=y\n",
|
||||||
|
"CONFIG_INET_TCP_DIAG=y\n",
|
||||||
|
"# CONFIG_TCP_CONG_ADVANCED is not set\n",
|
||||||
|
"CONFIG_TCP_CONG_CUBIC=y\n",
|
||||||
|
"CONFIG_DEFAULT_TCP_CONG=\"cubic\"\n",
|
||||||
|
"# CONFIG_TCP_MD5SIG is not set\n",
|
||||||
|
"# CONFIG_IPV6 is not set\n",
|
||||||
|
"# CONFIG_NETWORK_SECMARK is not set\n",
|
||||||
|
"# CONFIG_NETFILTER is not set\n",
|
||||||
|
"# CONFIG_IP_DCCP is not set\n",
|
||||||
|
"# CONFIG_IP_SCTP is not set\n",
|
||||||
|
"# CONFIG_RDS is not set\n",
|
||||||
|
"# CONFIG_TIPC is not set\n",
|
||||||
|
"# CONFIG_ATM is not set\n",
|
||||||
|
"# CONFIG_BRIDGE is not set\n",
|
||||||
|
"# CONFIG_NET_DSA is not set\n",
|
||||||
|
"# CONFIG_VLAN_8021Q is not set\n",
|
||||||
|
"# CONFIG_DECNET is not set\n",
|
||||||
|
"# CONFIG_LLC2 is not set\n",
|
||||||
|
"# CONFIG_IPX is not set\n",
|
||||||
|
"# CONFIG_ATALK is not set\n",
|
||||||
|
"# CONFIG_X25 is not set\n",
|
||||||
|
"# CONFIG_LAPB is not set\n",
|
||||||
|
"# CONFIG_ECONET is not set\n",
|
||||||
|
"# CONFIG_WAN_ROUTER is not set\n",
|
||||||
|
"# CONFIG_PHONET is not set\n",
|
||||||
|
"# CONFIG_IEEE802154 is not set\n",
|
||||||
|
"# CONFIG_NET_SCHED is not set\n",
|
||||||
|
"# CONFIG_DCB is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Network testing\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_NET_PKTGEN is not set\n",
|
||||||
|
"# CONFIG_HAMRADIO is not set\n",
|
||||||
|
"# CONFIG_CAN is not set\n",
|
||||||
|
"# CONFIG_IRDA is not set\n",
|
||||||
|
"# CONFIG_BT is not set\n",
|
||||||
|
"# CONFIG_AF_RXRPC is not set\n",
|
||||||
|
"CONFIG_WIRELESS=y\n",
|
||||||
|
"# CONFIG_CFG80211 is not set\n",
|
||||||
|
"# CONFIG_LIB80211 is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# CFG80211 needs to be enabled for MAC80211\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_WIMAX is not set\n",
|
||||||
|
"# CONFIG_RFKILL is not set\n",
|
||||||
|
"# CONFIG_NET_9P is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# UML Network Devices\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_UML_NET=y\n",
|
||||||
|
"CONFIG_UML_NET_ETHERTAP=y\n",
|
||||||
|
"CONFIG_UML_NET_TUNTAP=y\n",
|
||||||
|
"CONFIG_UML_NET_SLIP=y\n",
|
||||||
|
"CONFIG_UML_NET_DAEMON=y\n",
|
||||||
|
"# CONFIG_UML_NET_VDE is not set\n",
|
||||||
|
"CONFIG_UML_NET_MCAST=y\n",
|
||||||
|
"# CONFIG_UML_NET_PCAP is not set\n",
|
||||||
|
"CONFIG_UML_NET_SLIRP=y\n",
|
||||||
|
"CONFIG_NETDEVICES=y\n",
|
||||||
|
"CONFIG_DUMMY=y\n",
|
||||||
|
"# CONFIG_BONDING is not set\n",
|
||||||
|
"# CONFIG_MACVLAN is not set\n",
|
||||||
|
"# CONFIG_EQUALIZER is not set\n",
|
||||||
|
"CONFIG_TUN=y\n",
|
||||||
|
"# CONFIG_VETH is not set\n",
|
||||||
|
"CONFIG_WLAN=y\n",
|
||||||
|
"# CONFIG_HOSTAP is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Enable WiMAX (Networking options) to see the WiMAX drivers\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_WAN is not set\n",
|
||||||
|
"CONFIG_PPP=y\n",
|
||||||
|
"# CONFIG_PPP_MULTILINK is not set\n",
|
||||||
|
"# CONFIG_PPP_FILTER is not set\n",
|
||||||
|
"# CONFIG_PPP_ASYNC is not set\n",
|
||||||
|
"# CONFIG_PPP_SYNC_TTY is not set\n",
|
||||||
|
"# CONFIG_PPP_DEFLATE is not set\n",
|
||||||
|
"# CONFIG_PPP_BSDCOMP is not set\n",
|
||||||
|
"# CONFIG_PPP_MPPE is not set\n",
|
||||||
|
"# CONFIG_PPPOE is not set\n",
|
||||||
|
"# CONFIG_PPPOL2TP is not set\n",
|
||||||
|
"CONFIG_SLIP=y\n",
|
||||||
|
"# CONFIG_SLIP_COMPRESSED is not set\n",
|
||||||
|
"CONFIG_SLHC=y\n",
|
||||||
|
"# CONFIG_SLIP_SMART is not set\n",
|
||||||
|
"# CONFIG_SLIP_MODE_SLIP6 is not set\n",
|
||||||
|
"# CONFIG_NETCONSOLE is not set\n",
|
||||||
|
"# CONFIG_NETPOLL is not set\n",
|
||||||
|
"# CONFIG_NET_POLL_CONTROLLER is not set\n",
|
||||||
|
"# CONFIG_CONNECTOR is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# File systems\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_EXT2_FS=y\n",
|
||||||
|
"# CONFIG_EXT2_FS_XATTR is not set\n",
|
||||||
|
"# CONFIG_EXT2_FS_XIP is not set\n",
|
||||||
|
"CONFIG_EXT3_FS=y\n",
|
||||||
|
"# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set\n",
|
||||||
|
"# CONFIG_EXT3_FS_XATTR is not set\n",
|
||||||
|
"# CONFIG_EXT4_FS is not set\n",
|
||||||
|
"CONFIG_JBD=y\n",
|
||||||
|
"CONFIG_REISERFS_FS=y\n",
|
||||||
|
"# CONFIG_REISERFS_CHECK is not set\n",
|
||||||
|
"# CONFIG_REISERFS_PROC_INFO is not set\n",
|
||||||
|
"# CONFIG_REISERFS_FS_XATTR is not set\n",
|
||||||
|
"# CONFIG_JFS_FS is not set\n",
|
||||||
|
"# CONFIG_FS_POSIX_ACL is not set\n",
|
||||||
|
"# CONFIG_XFS_FS is not set\n",
|
||||||
|
"# CONFIG_GFS2_FS is not set\n",
|
||||||
|
"# CONFIG_OCFS2_FS is not set\n",
|
||||||
|
"# CONFIG_BTRFS_FS is not set\n",
|
||||||
|
"# CONFIG_NILFS2_FS is not set\n",
|
||||||
|
"CONFIG_FILE_LOCKING=y\n",
|
||||||
|
"CONFIG_FSNOTIFY=y\n",
|
||||||
|
"CONFIG_DNOTIFY=y\n",
|
||||||
|
"CONFIG_INOTIFY=y\n",
|
||||||
|
"CONFIG_INOTIFY_USER=y\n",
|
||||||
|
"CONFIG_QUOTA=y\n",
|
||||||
|
"# CONFIG_QUOTA_NETLINK_INTERFACE is not set\n",
|
||||||
|
"CONFIG_PRINT_QUOTA_WARNING=y\n",
|
||||||
|
"# CONFIG_QFMT_V1 is not set\n",
|
||||||
|
"# CONFIG_QFMT_V2 is not set\n",
|
||||||
|
"CONFIG_QUOTACTL=y\n",
|
||||||
|
"CONFIG_AUTOFS_FS=y\n",
|
||||||
|
"CONFIG_AUTOFS4_FS=y\n",
|
||||||
|
"# CONFIG_FUSE_FS is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Caches\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_FSCACHE is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# CD-ROM/DVD Filesystems\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_ISO9660_FS=y\n",
|
||||||
|
"CONFIG_JOLIET=y\n",
|
||||||
|
"# CONFIG_ZISOFS is not set\n",
|
||||||
|
"# CONFIG_UDF_FS is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# DOS/FAT/NT Filesystems\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_MSDOS_FS is not set\n",
|
||||||
|
"# CONFIG_VFAT_FS is not set\n",
|
||||||
|
"# CONFIG_NTFS_FS is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Pseudo filesystems\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_PROC_FS=y\n",
|
||||||
|
"CONFIG_PROC_KCORE=y\n",
|
||||||
|
"CONFIG_PROC_SYSCTL=y\n",
|
||||||
|
"CONFIG_PROC_PAGE_MONITOR=y\n",
|
||||||
|
"CONFIG_SYSFS=y\n",
|
||||||
|
"CONFIG_TMPFS=y\n",
|
||||||
|
"# CONFIG_TMPFS_POSIX_ACL is not set\n",
|
||||||
|
"# CONFIG_HUGETLB_PAGE is not set\n",
|
||||||
|
"# CONFIG_CONFIGFS_FS is not set\n",
|
||||||
|
"CONFIG_MISC_FILESYSTEMS=y\n",
|
||||||
|
"# CONFIG_ADFS_FS is not set\n",
|
||||||
|
"# CONFIG_AFFS_FS is not set\n",
|
||||||
|
"# CONFIG_HFS_FS is not set\n",
|
||||||
|
"# CONFIG_HFSPLUS_FS is not set\n",
|
||||||
|
"# CONFIG_BEFS_FS is not set\n",
|
||||||
|
"# CONFIG_BFS_FS is not set\n",
|
||||||
|
"# CONFIG_EFS_FS is not set\n",
|
||||||
|
"# CONFIG_CRAMFS is not set\n",
|
||||||
|
"# CONFIG_SQUASHFS is not set\n",
|
||||||
|
"# CONFIG_VXFS_FS is not set\n",
|
||||||
|
"# CONFIG_MINIX_FS is not set\n",
|
||||||
|
"# CONFIG_OMFS_FS is not set\n",
|
||||||
|
"# CONFIG_HPFS_FS is not set\n",
|
||||||
|
"# CONFIG_QNX4FS_FS is not set\n",
|
||||||
|
"# CONFIG_ROMFS_FS is not set\n",
|
||||||
|
"# CONFIG_SYSV_FS is not set\n",
|
||||||
|
"# CONFIG_UFS_FS is not set\n",
|
||||||
|
"CONFIG_NETWORK_FILESYSTEMS=y\n",
|
||||||
|
"# CONFIG_NFS_FS is not set\n",
|
||||||
|
"# CONFIG_NFSD is not set\n",
|
||||||
|
"# CONFIG_SMB_FS is not set\n",
|
||||||
|
"# CONFIG_CIFS is not set\n",
|
||||||
|
"# CONFIG_NCP_FS is not set\n",
|
||||||
|
"# CONFIG_CODA_FS is not set\n",
|
||||||
|
"# CONFIG_AFS_FS is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Partition Types\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_PARTITION_ADVANCED is not set\n",
|
||||||
|
"CONFIG_MSDOS_PARTITION=y\n",
|
||||||
|
"CONFIG_NLS=y\n",
|
||||||
|
"CONFIG_NLS_DEFAULT=\"iso8859-1\"\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_437 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_737 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_775 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_850 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_852 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_855 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_857 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_860 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_861 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_862 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_863 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_864 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_865 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_866 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_869 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_936 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_950 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_932 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_949 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_874 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_8 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_1250 is not set\n",
|
||||||
|
"# CONFIG_NLS_CODEPAGE_1251 is not set\n",
|
||||||
|
"# CONFIG_NLS_ASCII is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_1 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_2 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_3 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_4 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_5 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_6 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_7 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_9 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_13 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_14 is not set\n",
|
||||||
|
"# CONFIG_NLS_ISO8859_15 is not set\n",
|
||||||
|
"# CONFIG_NLS_KOI8_R is not set\n",
|
||||||
|
"# CONFIG_NLS_KOI8_U is not set\n",
|
||||||
|
"# CONFIG_NLS_UTF8 is not set\n",
|
||||||
|
"# CONFIG_DLM is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Security options\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_KEYS is not set\n",
|
||||||
|
"# CONFIG_SECURITY is not set\n",
|
||||||
|
"# CONFIG_SECURITYFS is not set\n",
|
||||||
|
"# CONFIG_DEFAULT_SECURITY_SELINUX is not set\n",
|
||||||
|
"# CONFIG_DEFAULT_SECURITY_SMACK is not set\n",
|
||||||
|
"# CONFIG_DEFAULT_SECURITY_TOMOYO is not set\n",
|
||||||
|
"CONFIG_DEFAULT_SECURITY_DAC=y\n",
|
||||||
|
"CONFIG_DEFAULT_SECURITY=\"\"\n",
|
||||||
|
"CONFIG_CRYPTO=y\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Crypto core or helper\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_CRYPTO_FIPS is not set\n",
|
||||||
|
"CONFIG_CRYPTO_ALGAPI=y\n",
|
||||||
|
"CONFIG_CRYPTO_ALGAPI2=y\n",
|
||||||
|
"CONFIG_CRYPTO_RNG=y\n",
|
||||||
|
"CONFIG_CRYPTO_RNG2=y\n",
|
||||||
|
"# CONFIG_CRYPTO_MANAGER is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_MANAGER2 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_GF128MUL is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_NULL is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_CRYPTD is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_AUTHENC is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Authenticated Encryption with Associated Data\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_CRYPTO_CCM is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_GCM is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_SEQIV is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Block modes\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_CRYPTO_CBC is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_CTR is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_CTS is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_ECB is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_LRW is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_PCBC is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_XTS is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Hash modes\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_CRYPTO_HMAC is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_XCBC is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_VMAC is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Digest\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_CRYPTO_CRC32C is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_GHASH is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_MD4 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_MD5 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_MICHAEL_MIC is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_RMD128 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_RMD160 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_RMD256 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_RMD320 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_SHA1 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_SHA256 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_SHA512 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_TGR192 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_WP512 is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Ciphers\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_CRYPTO_AES=y\n",
|
||||||
|
"# CONFIG_CRYPTO_AES_586 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_ANUBIS is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_ARC4 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_BLOWFISH is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_CAMELLIA is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_CAST5 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_CAST6 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_DES is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_FCRYPT is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_KHAZAD is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_SALSA20 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_SALSA20_586 is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_SEED is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_SERPENT is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_TEA is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_TWOFISH is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_TWOFISH_586 is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Compression\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_CRYPTO_DEFLATE is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_ZLIB is not set\n",
|
||||||
|
"# CONFIG_CRYPTO_LZO is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Random Number Generation\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_CRYPTO_ANSI_CPRNG=y\n",
|
||||||
|
"CONFIG_CRYPTO_HW=y\n",
|
||||||
|
"# CONFIG_BINARY_PRINTF is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Library routines\n",
|
||||||
|
"#\n",
|
||||||
|
"CONFIG_BITREVERSE=y\n",
|
||||||
|
"CONFIG_GENERIC_FIND_FIRST_BIT=y\n",
|
||||||
|
"CONFIG_GENERIC_FIND_NEXT_BIT=y\n",
|
||||||
|
"CONFIG_GENERIC_FIND_LAST_BIT=y\n",
|
||||||
|
"# CONFIG_CRC_CCITT is not set\n",
|
||||||
|
"# CONFIG_CRC16 is not set\n",
|
||||||
|
"# CONFIG_CRC_T10DIF is not set\n",
|
||||||
|
"# CONFIG_CRC_ITU_T is not set\n",
|
||||||
|
"CONFIG_CRC32=y\n",
|
||||||
|
"# CONFIG_CRC7 is not set\n",
|
||||||
|
"# CONFIG_LIBCRC32C is not set\n",
|
||||||
|
"CONFIG_HAS_DMA=y\n",
|
||||||
|
"CONFIG_NLATTR=y\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# SCSI device support\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_RAID_ATTRS is not set\n",
|
||||||
|
"# CONFIG_SCSI is not set\n",
|
||||||
|
"# CONFIG_SCSI_DMA is not set\n",
|
||||||
|
"# CONFIG_SCSI_NETLINK is not set\n",
|
||||||
|
"# CONFIG_MD is not set\n",
|
||||||
|
"# CONFIG_NEW_LEDS is not set\n",
|
||||||
|
"# CONFIG_INPUT is not set\n",
|
||||||
|
"\n",
|
||||||
|
"#\n",
|
||||||
|
"# Kernel hacking\n",
|
||||||
|
"#\n",
|
||||||
|
"# CONFIG_PRINTK_TIME is not set\n",
|
||||||
|
"CONFIG_ENABLE_WARN_DEPRECATED=y\n",
|
||||||
|
"CONFIG_ENABLE_MUST_CHECK=y\n",
|
||||||
|
"CONFIG_FRAME_WARN=1024\n",
|
||||||
|
"# CONFIG_STRIP_ASM_SYMS is not set\n",
|
||||||
|
"# CONFIG_UNUSED_SYMBOLS is not set\n",
|
||||||
|
"# CONFIG_DEBUG_FS is not set\n",
|
||||||
|
"CONFIG_DEBUG_KERNEL=y\n",
|
||||||
|
"# CONFIG_DEBUG_SHIRQ is not set\n",
|
||||||
|
"CONFIG_DETECT_SOFTLOCKUP=y\n",
|
||||||
|
"# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set\n",
|
||||||
|
"CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0\n",
|
||||||
|
"CONFIG_DETECT_HUNG_TASK=y\n",
|
||||||
|
"# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set\n",
|
||||||
|
"CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0\n",
|
||||||
|
"CONFIG_SCHED_DEBUG=y\n",
|
||||||
|
"# CONFIG_SCHEDSTATS is not set\n",
|
||||||
|
"# CONFIG_TIMER_STATS is not set\n",
|
||||||
|
"# CONFIG_DEBUG_OBJECTS is not set\n",
|
||||||
|
"# CONFIG_DEBUG_SLAB is not set\n",
|
||||||
|
"# CONFIG_DEBUG_RT_MUTEXES is not set\n",
|
||||||
|
"# CONFIG_RT_MUTEX_TESTER is not set\n",
|
||||||
|
"# CONFIG_DEBUG_SPINLOCK is not set\n",
|
||||||
|
"# CONFIG_DEBUG_MUTEXES is not set\n",
|
||||||
|
"# CONFIG_DEBUG_SPINLOCK_SLEEP is not set\n",
|
||||||
|
"# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set\n",
|
||||||
|
"# CONFIG_DEBUG_KOBJECT is not set\n",
|
||||||
|
"CONFIG_DEBUG_BUGVERBOSE=y\n",
|
||||||
|
"CONFIG_DEBUG_INFO=y\n",
|
||||||
|
"# CONFIG_DEBUG_VM is not set\n",
|
||||||
|
"# CONFIG_DEBUG_WRITECOUNT is not set\n",
|
||||||
|
"CONFIG_DEBUG_MEMORY_INIT=y\n",
|
||||||
|
"# CONFIG_DEBUG_LIST is not set\n",
|
||||||
|
"# CONFIG_DEBUG_SG is not set\n",
|
||||||
|
"# CONFIG_DEBUG_NOTIFIERS is not set\n",
|
||||||
|
"# CONFIG_DEBUG_CREDENTIALS is not set\n",
|
||||||
|
"CONFIG_FRAME_POINTER=y\n",
|
||||||
|
"# CONFIG_BOOT_PRINTK_DELAY is not set\n",
|
||||||
|
"# CONFIG_RCU_TORTURE_TEST is not set\n",
|
||||||
|
"CONFIG_RCU_CPU_STALL_DETECTOR=y\n",
|
||||||
|
"# CONFIG_BACKTRACE_SELF_TEST is not set\n",
|
||||||
|
"# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set\n",
|
||||||
|
"# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set\n",
|
||||||
|
"# CONFIG_FAULT_INJECTION is not set\n",
|
||||||
|
"# CONFIG_SYSCTL_SYSCALL_CHECK is not set\n",
|
||||||
|
"# CONFIG_PAGE_POISONING is not set\n",
|
||||||
|
"# CONFIG_SAMPLES is not set\n",
|
||||||
|
"# CONFIG_GPROF is not set\n",
|
||||||
|
"# CONFIG_GCOV is not set\n",
|
||||||
|
"# CONFIG_DEBUG_STACK_USAGE is not set\n",
|
545
arch/um/kernel/vmlinux.lds
Normal file
545
arch/um/kernel/vmlinux.lds
Normal file
|
@ -0,0 +1,545 @@
|
||||||
|
/*
|
||||||
|
* Automatically generated C config: don't edit
|
||||||
|
* Linux kernel version: 2.6.33-rc2
|
||||||
|
* Mon Jan 18 12:00:41 2010
|
||||||
|
*/
|
||||||
|
KERNEL_STACK_SIZE = 4096 * (1 << 0);
|
||||||
|
/*
|
||||||
|
* Helper macros to support writing architecture specific
|
||||||
|
* linker scripts.
|
||||||
|
*
|
||||||
|
* A minimal linker scripts has following content:
|
||||||
|
* [This is a sample, architectures may have special requiriements]
|
||||||
|
*
|
||||||
|
* OUTPUT_FORMAT(...)
|
||||||
|
* OUTPUT_ARCH(...)
|
||||||
|
* ENTRY(...)
|
||||||
|
* SECTIONS
|
||||||
|
* {
|
||||||
|
* . = START;
|
||||||
|
* __init_begin = .;
|
||||||
|
* HEAD_TEXT_SECTION
|
||||||
|
* INIT_TEXT_SECTION(PAGE_SIZE)
|
||||||
|
* INIT_DATA_SECTION(...)
|
||||||
|
* PERCPU(PAGE_SIZE)
|
||||||
|
* __init_end = .;
|
||||||
|
*
|
||||||
|
* _stext = .;
|
||||||
|
* TEXT_SECTION = 0
|
||||||
|
* _etext = .;
|
||||||
|
*
|
||||||
|
* _sdata = .;
|
||||||
|
* RO_DATA_SECTION(PAGE_SIZE)
|
||||||
|
* RW_DATA_SECTION(...)
|
||||||
|
* _edata = .;
|
||||||
|
*
|
||||||
|
* EXCEPTION_TABLE(...)
|
||||||
|
* NOTES
|
||||||
|
*
|
||||||
|
* BSS_SECTION(0, 0, 0)
|
||||||
|
* _end = .;
|
||||||
|
*
|
||||||
|
* STABS_DEBUG
|
||||||
|
* DWARF_DEBUG
|
||||||
|
*
|
||||||
|
* DISCARDS // must be the last
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* [__init_begin, __init_end] is the init section that may be freed after init
|
||||||
|
* [_stext, _etext] is the text section
|
||||||
|
* [_sdata, _edata] is the data section
|
||||||
|
*
|
||||||
|
* Some of the included output section have their own set of constants.
|
||||||
|
* Examples are: [__initramfs_start, __initramfs_end] for initramfs and
|
||||||
|
* [__nosave_begin, __nosave_end] for the nosave data
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Align . to a 8 byte boundary equals to maximum function alignment. */
|
||||||
|
|
||||||
|
|
||||||
|
/* The actual configuration determine if the init/exit sections
|
||||||
|
* are handled as text/data or they can be discarded (which
|
||||||
|
* often happens at runtime)
|
||||||
|
*/
|
||||||
|
/* .data section */
|
||||||
|
/*
|
||||||
|
* Data section helpers
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Read only Data
|
||||||
|
*/
|
||||||
|
/* RODATA & RO_DATA provided for backward compatibility.
|
||||||
|
* All archs are supposed to use RO_DATA() */
|
||||||
|
/* .text section. Map to function alignment to avoid address changes
|
||||||
|
* during second ld run in second ld pass when generating System.map */
|
||||||
|
/* sched.text is aling to function alignment to secure we have same
|
||||||
|
* address even at second ld pass when generating System.map */
|
||||||
|
/* spinlock.text is aling to function alignment to secure we have same
|
||||||
|
* address even at second ld pass when generating System.map */
|
||||||
|
/* Section used for early init (in .S files) */
|
||||||
|
/*
|
||||||
|
* Exception table
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Init task
|
||||||
|
*/
|
||||||
|
/* init and exit section handling */
|
||||||
|
/*
|
||||||
|
* bss (Block Started by Symbol) - uninitialized data
|
||||||
|
* zeroed during startup
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* DWARF debug sections.
|
||||||
|
* Symbols in the DWARF debugging sections are relative to
|
||||||
|
* the beginning of the section so we begin them at 0.
|
||||||
|
*/
|
||||||
|
/* Stabs debugging sections. */
|
||||||
|
/*
|
||||||
|
* Default discarded sections.
|
||||||
|
*
|
||||||
|
* Some archs want to discard exit text/data at runtime rather than
|
||||||
|
* link time due to cross-section references such as alt instructions,
|
||||||
|
* bug table, eh_frame, etc. DISCARDS must be the last of output
|
||||||
|
* section definitions so that such archs put those in earlier section
|
||||||
|
* definitions.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* PERCPU_VADDR - define output section for percpu area
|
||||||
|
* @vaddr: explicit base address (optional)
|
||||||
|
* @phdr: destination PHDR (optional)
|
||||||
|
*
|
||||||
|
* Macro which expands to output section for percpu area. If @vaddr
|
||||||
|
* is not blank, it specifies explicit base address and all percpu
|
||||||
|
* symbols will be offset from the given address. If blank, @vaddr
|
||||||
|
* always equals @laddr + LOAD_OFFSET.
|
||||||
|
*
|
||||||
|
* @phdr defines the output PHDR to use if not blank. Be warned that
|
||||||
|
* output PHDR is sticky. If @phdr is specified, the next output
|
||||||
|
* section in the linker script will go there too. @phdr should have
|
||||||
|
* a leading colon.
|
||||||
|
*
|
||||||
|
* Note that this macros defines __per_cpu_load as an absolute symbol.
|
||||||
|
* If there is no need to put the percpu section at a predetermined
|
||||||
|
* address, use PERCPU().
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* PERCPU - define output section for percpu area, simple version
|
||||||
|
* @align: required alignment
|
||||||
|
*
|
||||||
|
* Align to @align and outputs output section for percpu area. This
|
||||||
|
* macro doesn't maniuplate @vaddr or @phdr and __per_cpu_load and
|
||||||
|
* __per_cpu_start will be identical.
|
||||||
|
*
|
||||||
|
* This macro is equivalent to ALIGN(align); PERCPU_VADDR( , ) except
|
||||||
|
* that __per_cpu_load is defined as a relative symbol against
|
||||||
|
* .data.percpu which is required for relocatable x86_32
|
||||||
|
* configuration.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Definition of the high level *_SECTION macros
|
||||||
|
* They will fit only a subset of the architectures
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Writeable data.
|
||||||
|
* All sections are combined in a single .data section.
|
||||||
|
* The sections following CONSTRUCTORS are arranged so their
|
||||||
|
* typical alignment matches.
|
||||||
|
* A cacheline is typical/always less than a PAGE_SIZE so
|
||||||
|
* the sections that has this restriction (or similar)
|
||||||
|
* is located before the ones requiring PAGE_SIZE alignment.
|
||||||
|
* NOSAVE_DATA starts and ends with a PAGE_SIZE alignment which
|
||||||
|
* matches the requirment of PAGE_ALIGNED_DATA.
|
||||||
|
*
|
||||||
|
* use 0 as page_align if page_aligned data is not used */
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com)
|
||||||
|
* Copyright 2003 PathScale, Inc.
|
||||||
|
* Licensed under the GPL
|
||||||
|
*/
|
||||||
|
/* const.h: Macros for dealing with constants. */
|
||||||
|
/* Some constant macros are used in both assembler and
|
||||||
|
* C code. Therefore we cannot annotate them always with
|
||||||
|
* 'UL' and other type specifiers unilaterally. We
|
||||||
|
* use the following macros to deal with this.
|
||||||
|
*
|
||||||
|
* Similarly, _AT() will cast an expression with a type in C, but
|
||||||
|
* leave it unchanged in asm.
|
||||||
|
*/
|
||||||
|
/* PAGE_SHIFT determines the page size */
|
||||||
|
OUTPUT_FORMAT(elf32-i386)
|
||||||
|
OUTPUT_ARCH(i386)
|
||||||
|
ENTRY(_start)
|
||||||
|
jiffies = jiffies_64;
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
PROVIDE (__executable_start = 0x8048000);
|
||||||
|
. = 0x8048000 + SIZEOF_HEADERS;
|
||||||
|
.interp : { *(.interp) }
|
||||||
|
__binary_start = .;
|
||||||
|
. = ALIGN(4096); /* Init code and data */
|
||||||
|
_text = .;
|
||||||
|
_stext = .;
|
||||||
|
__init_begin = .;
|
||||||
|
. = ALIGN((1 << 12)); .init.text : AT(ADDR(.init.text) - 0) { _sinittext = .; *(.init.text) *(.cpuinit.text) *(.meminit.text) _einittext = .; }
|
||||||
|
. = ALIGN((1 << 12));
|
||||||
|
/* Read-only sections, merged into text segment: */
|
||||||
|
.hash : { *(.hash) }
|
||||||
|
.gnu.hash : { *(.gnu.hash) }
|
||||||
|
.dynsym : { *(.dynsym) }
|
||||||
|
.dynstr : { *(.dynstr) }
|
||||||
|
.gnu.version : { *(.gnu.version) }
|
||||||
|
.gnu.version_d : { *(.gnu.version_d) }
|
||||||
|
.gnu.version_r : { *(.gnu.version_r) }
|
||||||
|
.rel.init : { *(.rel.init) }
|
||||||
|
.rela.init : { *(.rela.init) }
|
||||||
|
.rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
|
||||||
|
.rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
|
||||||
|
.rel.fini : { *(.rel.fini) }
|
||||||
|
.rela.fini : { *(.rela.fini) }
|
||||||
|
.rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
|
||||||
|
.rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
|
||||||
|
.rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
|
||||||
|
.rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
|
||||||
|
.rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
|
||||||
|
.rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
|
||||||
|
.rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
|
||||||
|
.rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
|
||||||
|
.rel.ctors : { *(.rel.ctors) }
|
||||||
|
.rela.ctors : { *(.rela.ctors) }
|
||||||
|
.rel.dtors : { *(.rel.dtors) }
|
||||||
|
.rela.dtors : { *(.rela.dtors) }
|
||||||
|
.rel.got : { *(.rel.got) }
|
||||||
|
.rela.got : { *(.rela.got) }
|
||||||
|
.rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
|
||||||
|
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
|
||||||
|
.rel.plt : { *(.rel.plt) }
|
||||||
|
.rela.plt : { *(.rela.plt) }
|
||||||
|
.init : {
|
||||||
|
KEEP (*(.init))
|
||||||
|
} =0x90909090
|
||||||
|
.plt : { *(.plt) }
|
||||||
|
.text : {
|
||||||
|
. = ALIGN(8); *(.text.hot) *(.text) *(.ref.text) *(.devinit.text) *(.devexit.text) *(.text.unlikely)
|
||||||
|
. = ALIGN(8); __sched_text_start = .; *(.sched.text) __sched_text_end = .;
|
||||||
|
. = ALIGN(8); __lock_text_start = .; *(.spinlock.text) __lock_text_end = .;
|
||||||
|
*(.fixup)
|
||||||
|
*(.stub .text.* .gnu.linkonce.t.*)
|
||||||
|
/* .gnu.warning sections are handled specially by elf32.em. */
|
||||||
|
*(.gnu.warning)
|
||||||
|
. = ALIGN((1 << 12));
|
||||||
|
} =0x90909090
|
||||||
|
. = ALIGN((1 << 12));
|
||||||
|
.syscall_stub : {
|
||||||
|
__syscall_stub_start = .;
|
||||||
|
*(.__syscall_stub*)
|
||||||
|
__syscall_stub_end = .;
|
||||||
|
}
|
||||||
|
.fini : {
|
||||||
|
KEEP (*(.fini))
|
||||||
|
} =0x90909090
|
||||||
|
.kstrtab : { *(.kstrtab) }
|
||||||
|
/*
|
||||||
|
* Helper macros to support writing architecture specific
|
||||||
|
* linker scripts.
|
||||||
|
*
|
||||||
|
* A minimal linker scripts has following content:
|
||||||
|
* [This is a sample, architectures may have special requiriements]
|
||||||
|
*
|
||||||
|
* OUTPUT_FORMAT(...)
|
||||||
|
* OUTPUT_ARCH(...)
|
||||||
|
* ENTRY(...)
|
||||||
|
* SECTIONS
|
||||||
|
* {
|
||||||
|
* . = START;
|
||||||
|
* __init_begin = .;
|
||||||
|
* HEAD_TEXT_SECTION
|
||||||
|
* INIT_TEXT_SECTION(PAGE_SIZE)
|
||||||
|
* INIT_DATA_SECTION(...)
|
||||||
|
* PERCPU(PAGE_SIZE)
|
||||||
|
* __init_end = .;
|
||||||
|
*
|
||||||
|
* _stext = .;
|
||||||
|
* TEXT_SECTION = 0
|
||||||
|
* _etext = .;
|
||||||
|
*
|
||||||
|
* _sdata = .;
|
||||||
|
* RO_DATA_SECTION(PAGE_SIZE)
|
||||||
|
* RW_DATA_SECTION(...)
|
||||||
|
* _edata = .;
|
||||||
|
*
|
||||||
|
* EXCEPTION_TABLE(...)
|
||||||
|
* NOTES
|
||||||
|
*
|
||||||
|
* BSS_SECTION(0, 0, 0)
|
||||||
|
* _end = .;
|
||||||
|
*
|
||||||
|
* STABS_DEBUG
|
||||||
|
* DWARF_DEBUG
|
||||||
|
*
|
||||||
|
* DISCARDS // must be the last
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* [__init_begin, __init_end] is the init section that may be freed after init
|
||||||
|
* [_stext, _etext] is the text section
|
||||||
|
* [_sdata, _edata] is the data section
|
||||||
|
*
|
||||||
|
* Some of the included output section have their own set of constants.
|
||||||
|
* Examples are: [__initramfs_start, __initramfs_end] for initramfs and
|
||||||
|
* [__nosave_begin, __nosave_end] for the nosave data
|
||||||
|
*/
|
||||||
|
/* Align . to a 8 byte boundary equals to maximum function alignment. */
|
||||||
|
/* The actual configuration determine if the init/exit sections
|
||||||
|
* are handled as text/data or they can be discarded (which
|
||||||
|
* often happens at runtime)
|
||||||
|
*/
|
||||||
|
/* .data section */
|
||||||
|
/*
|
||||||
|
* Data section helpers
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Read only Data
|
||||||
|
*/
|
||||||
|
/* RODATA & RO_DATA provided for backward compatibility.
|
||||||
|
* All archs are supposed to use RO_DATA() */
|
||||||
|
/* .text section. Map to function alignment to avoid address changes
|
||||||
|
* during second ld run in second ld pass when generating System.map */
|
||||||
|
/* sched.text is aling to function alignment to secure we have same
|
||||||
|
* address even at second ld pass when generating System.map */
|
||||||
|
/* spinlock.text is aling to function alignment to secure we have same
|
||||||
|
* address even at second ld pass when generating System.map */
|
||||||
|
/* Section used for early init (in .S files) */
|
||||||
|
/*
|
||||||
|
* Exception table
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Init task
|
||||||
|
*/
|
||||||
|
/* init and exit section handling */
|
||||||
|
/*
|
||||||
|
* bss (Block Started by Symbol) - uninitialized data
|
||||||
|
* zeroed during startup
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* DWARF debug sections.
|
||||||
|
* Symbols in the DWARF debugging sections are relative to
|
||||||
|
* the beginning of the section so we begin them at 0.
|
||||||
|
*/
|
||||||
|
/* Stabs debugging sections. */
|
||||||
|
/*
|
||||||
|
* Default discarded sections.
|
||||||
|
*
|
||||||
|
* Some archs want to discard exit text/data at runtime rather than
|
||||||
|
* link time due to cross-section references such as alt instructions,
|
||||||
|
* bug table, eh_frame, etc. DISCARDS must be the last of output
|
||||||
|
* section definitions so that such archs put those in earlier section
|
||||||
|
* definitions.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* PERCPU_VADDR - define output section for percpu area
|
||||||
|
* @vaddr: explicit base address (optional)
|
||||||
|
* @phdr: destination PHDR (optional)
|
||||||
|
*
|
||||||
|
* Macro which expands to output section for percpu area. If @vaddr
|
||||||
|
* is not blank, it specifies explicit base address and all percpu
|
||||||
|
* symbols will be offset from the given address. If blank, @vaddr
|
||||||
|
* always equals @laddr + LOAD_OFFSET.
|
||||||
|
*
|
||||||
|
* @phdr defines the output PHDR to use if not blank. Be warned that
|
||||||
|
* output PHDR is sticky. If @phdr is specified, the next output
|
||||||
|
* section in the linker script will go there too. @phdr should have
|
||||||
|
* a leading colon.
|
||||||
|
*
|
||||||
|
* Note that this macros defines __per_cpu_load as an absolute symbol.
|
||||||
|
* If there is no need to put the percpu section at a predetermined
|
||||||
|
* address, use PERCPU().
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* PERCPU - define output section for percpu area, simple version
|
||||||
|
* @align: required alignment
|
||||||
|
*
|
||||||
|
* Align to @align and outputs output section for percpu area. This
|
||||||
|
* macro doesn't maniuplate @vaddr or @phdr and __per_cpu_load and
|
||||||
|
* __per_cpu_start will be identical.
|
||||||
|
*
|
||||||
|
* This macro is equivalent to ALIGN(align); PERCPU_VADDR( , ) except
|
||||||
|
* that __per_cpu_load is defined as a relative symbol against
|
||||||
|
* .data.percpu which is required for relocatable x86_32
|
||||||
|
* configuration.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Definition of the high level *_SECTION macros
|
||||||
|
* They will fit only a subset of the architectures
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Writeable data.
|
||||||
|
* All sections are combined in a single .data section.
|
||||||
|
* The sections following CONSTRUCTORS are arranged so their
|
||||||
|
* typical alignment matches.
|
||||||
|
* A cacheline is typical/always less than a PAGE_SIZE so
|
||||||
|
* the sections that has this restriction (or similar)
|
||||||
|
* is located before the ones requiring PAGE_SIZE alignment.
|
||||||
|
* NOSAVE_DATA starts and ends with a PAGE_SIZE alignment which
|
||||||
|
* matches the requirment of PAGE_ALIGNED_DATA.
|
||||||
|
*
|
||||||
|
* use 0 as page_align if page_aligned data is not used */
|
||||||
|
.fini : { *(.fini) } =0x9090
|
||||||
|
_etext = .;
|
||||||
|
PROVIDE (etext = .);
|
||||||
|
. = ALIGN(4096);
|
||||||
|
_sdata = .;
|
||||||
|
PROVIDE (sdata = .);
|
||||||
|
. = ALIGN((4096)); .rodata : AT(ADDR(.rodata) - 0) { __start_rodata = .; *(.rodata) *(.rodata.*) *(__vermagic) *(__markers_strings) *(__tracepoints_strings) } .rodata1 : AT(ADDR(.rodata1) - 0) { *(.rodata1) } . = ALIGN(8); __bug_table : AT(ADDR(__bug_table) - 0) { __start___bug_table = .; *(__bug_table) __stop___bug_table = .; } .pci_fixup : AT(ADDR(.pci_fixup) - 0) { __start_pci_fixups_early = .; *(.pci_fixup_early) __end_pci_fixups_early = .; __start_pci_fixups_header = .; *(.pci_fixup_header) __end_pci_fixups_header = .; __start_pci_fixups_final = .; *(.pci_fixup_final) __end_pci_fixups_final = .; __start_pci_fixups_enable = .; *(.pci_fixup_enable) __end_pci_fixups_enable = .; __start_pci_fixups_resume = .; *(.pci_fixup_resume) __end_pci_fixups_resume = .; __start_pci_fixups_resume_early = .; *(.pci_fixup_resume_early) __end_pci_fixups_resume_early = .; __start_pci_fixups_suspend = .; *(.pci_fixup_suspend) __end_pci_fixups_suspend = .; } .builtin_fw : AT(ADDR(.builtin_fw) - 0) { __start_builtin_fw = .; *(.builtin_fw) __end_builtin_fw = .; } .rio_route : AT(ADDR(.rio_route) - 0) { __start_rio_route_ops = .; *(.rio_route_ops) __end_rio_route_ops = .; } __ksymtab : AT(ADDR(__ksymtab) - 0) { __start___ksymtab = .; *(__ksymtab) __stop___ksymtab = .; } __ksymtab_gpl : AT(ADDR(__ksymtab_gpl) - 0) { __start___ksymtab_gpl = .; *(__ksymtab_gpl) __stop___ksymtab_gpl = .; } __ksymtab_unused : AT(ADDR(__ksymtab_unused) - 0) { __start___ksymtab_unused = .; *(__ksymtab_unused) __stop___ksymtab_unused = .; } __ksymtab_unused_gpl : AT(ADDR(__ksymtab_unused_gpl) - 0) { __start___ksymtab_unused_gpl = .; *(__ksymtab_unused_gpl) __stop___ksymtab_unused_gpl = .; } __ksymtab_gpl_future : AT(ADDR(__ksymtab_gpl_future) - 0) { __start___ksymtab_gpl_future = .; *(__ksymtab_gpl_future) __stop___ksymtab_gpl_future = .; } __kcrctab : AT(ADDR(__kcrctab) - 0) { __start___kcrctab = .; *(__kcrctab) __stop___kcrctab = .; } __kcrctab_gpl : AT(ADDR(__kcrctab_gpl) - 0) { __start___kcrctab_gpl = .; *(__kcrctab_gpl) __stop___kcrctab_gpl = .; } __kcrctab_unused : AT(ADDR(__kcrctab_unused) - 0) { __start___kcrctab_unused = .; *(__kcrctab_unused) __stop___kcrctab_unused = .; } __kcrctab_unused_gpl : AT(ADDR(__kcrctab_unused_gpl) - 0) { __start___kcrctab_unused_gpl = .; *(__kcrctab_unused_gpl) __stop___kcrctab_unused_gpl = .; } __kcrctab_gpl_future : AT(ADDR(__kcrctab_gpl_future) - 0) { __start___kcrctab_gpl_future = .; *(__kcrctab_gpl_future) __stop___kcrctab_gpl_future = .; } __ksymtab_strings : AT(ADDR(__ksymtab_strings) - 0) { *(__ksymtab_strings) } __init_rodata : AT(ADDR(__init_rodata) - 0) { *(.ref.rodata) *(.devinit.rodata) *(.devexit.rodata) } __param : AT(ADDR(__param) - 0) { __start___param = .; *(__param) __stop___param = .; . = ALIGN((4096)); __end_rodata = .; } . = ALIGN((4096));
|
||||||
|
.unprotected : { *(.unprotected) }
|
||||||
|
. = ALIGN(4096);
|
||||||
|
PROVIDE (_unprotected_end = .);
|
||||||
|
. = ALIGN(4096);
|
||||||
|
.note : { *(.note.*) }
|
||||||
|
. = ALIGN(0); __ex_table : AT(ADDR(__ex_table) - 0) { __start___ex_table = .; *(__ex_table) __stop___ex_table = .; }
|
||||||
|
. = ALIGN(8); __bug_table : AT(ADDR(__bug_table) - 0) { __start___bug_table = .; *(__bug_table) __stop___bug_table = .; }
|
||||||
|
.uml.setup.init : {
|
||||||
|
__uml_setup_start = .;
|
||||||
|
*(.uml.setup.init)
|
||||||
|
__uml_setup_end = .;
|
||||||
|
}
|
||||||
|
.uml.help.init : {
|
||||||
|
__uml_help_start = .;
|
||||||
|
*(.uml.help.init)
|
||||||
|
__uml_help_end = .;
|
||||||
|
}
|
||||||
|
.uml.postsetup.init : {
|
||||||
|
__uml_postsetup_start = .;
|
||||||
|
*(.uml.postsetup.init)
|
||||||
|
__uml_postsetup_end = .;
|
||||||
|
}
|
||||||
|
.init.setup : {
|
||||||
|
. = ALIGN(0); __setup_start = .; *(.init.setup) __setup_end = .;
|
||||||
|
}
|
||||||
|
. = ALIGN(32); .data.percpu : AT(ADDR(.data.percpu) - 0) { __per_cpu_load = .; __per_cpu_start = .; *(.data.percpu.first) *(.data.percpu.page_aligned) *(.data.percpu) *(.data.percpu.shared_aligned) __per_cpu_end = .; }
|
||||||
|
.initcall.init : {
|
||||||
|
__initcall_start = .; *(.initcallearly.init) __early_initcall_end = .; *(.initcall0.init) *(.initcall0s.init) *(.initcall1.init) *(.initcall1s.init) *(.initcall2.init) *(.initcall2s.init) *(.initcall3.init) *(.initcall3s.init) *(.initcall4.init) *(.initcall4s.init) *(.initcall5.init) *(.initcall5s.init) *(.initcallrootfs.init) *(.initcall6.init) *(.initcall6s.init) *(.initcall7.init) *(.initcall7s.init) __initcall_end = .;
|
||||||
|
}
|
||||||
|
.con_initcall.init : {
|
||||||
|
__con_initcall_start = .; *(.con_initcall.init) __con_initcall_end = .;
|
||||||
|
}
|
||||||
|
.uml.initcall.init : {
|
||||||
|
__uml_initcall_start = .;
|
||||||
|
*(.uml.initcall.init)
|
||||||
|
__uml_initcall_end = .;
|
||||||
|
}
|
||||||
|
__init_end = .;
|
||||||
|
.security_initcall.init : AT(ADDR(.security_initcall.init) - 0) { __security_initcall_start = .; *(.security_initcall.init) __security_initcall_end = .; }
|
||||||
|
.exitcall : {
|
||||||
|
__exitcall_begin = .;
|
||||||
|
*(.exitcall.exit)
|
||||||
|
__exitcall_end = .;
|
||||||
|
}
|
||||||
|
.uml.exitcall : {
|
||||||
|
__uml_exitcall_begin = .;
|
||||||
|
*(.uml.exitcall.exit)
|
||||||
|
__uml_exitcall_end = .;
|
||||||
|
}
|
||||||
|
. = ALIGN(4);
|
||||||
|
.altinstructions : {
|
||||||
|
__alt_instructions = .;
|
||||||
|
*(.altinstructions)
|
||||||
|
__alt_instructions_end = .;
|
||||||
|
}
|
||||||
|
.altinstr_replacement : { *(.altinstr_replacement) }
|
||||||
|
/* .exit.text is discard at runtime, not link time, to deal with references
|
||||||
|
from .altinstructions and .eh_frame */
|
||||||
|
.exit.text : { *(.exit.text) }
|
||||||
|
.exit.data : { *(.exit.data) }
|
||||||
|
.preinit_array : {
|
||||||
|
__preinit_array_start = .;
|
||||||
|
*(.preinit_array)
|
||||||
|
__preinit_array_end = .;
|
||||||
|
}
|
||||||
|
.init_array : {
|
||||||
|
__init_array_start = .;
|
||||||
|
*(.init_array)
|
||||||
|
__init_array_end = .;
|
||||||
|
}
|
||||||
|
.fini_array : {
|
||||||
|
__fini_array_start = .;
|
||||||
|
*(.fini_array)
|
||||||
|
__fini_array_end = .;
|
||||||
|
}
|
||||||
|
. = ALIGN(4096);
|
||||||
|
.init.ramfs : {
|
||||||
|
|
||||||
|
}
|
||||||
|
init.data : { *(.init.data) *(.cpuinit.data) *(.meminit.data) *(.init.rodata) *(.cpuinit.rodata) *(.meminit.rodata) }
|
||||||
|
/* Ensure the __preinit_array_start label is properly aligned. We
|
||||||
|
could instead move the label definition inside the section, but
|
||||||
|
the linker would then create the section even if it turns out to
|
||||||
|
be empty, which isn't pretty. */
|
||||||
|
. = ALIGN(32 / 8);
|
||||||
|
.preinit_array : { *(.preinit_array) }
|
||||||
|
.init_array : { *(.init_array) }
|
||||||
|
.fini_array : { *(.fini_array) }
|
||||||
|
.data : {
|
||||||
|
. = ALIGN(KERNEL_STACK_SIZE); *(.data.init_task)
|
||||||
|
. = ALIGN(KERNEL_STACK_SIZE);
|
||||||
|
*(.data.init_irqstack)
|
||||||
|
*(.data) *(.ref.data) *(.devinit.data) *(.devexit.data) . = ALIGN(8); __start___markers = .; *(__markers) __stop___markers = .; . = ALIGN(32); __start___tracepoints = .; *(__tracepoints) __stop___tracepoints = .; . = ALIGN(8); __start___verbose = .; *(__verbose) __stop___verbose = .;
|
||||||
|
*(.data.* .gnu.linkonce.d.*)
|
||||||
|
SORT(CONSTRUCTORS)
|
||||||
|
}
|
||||||
|
.data1 : { *(.data1) }
|
||||||
|
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
||||||
|
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
||||||
|
.eh_frame : { KEEP (*(.eh_frame)) }
|
||||||
|
.gcc_except_table : { *(.gcc_except_table) }
|
||||||
|
.dynamic : { *(.dynamic) }
|
||||||
|
.ctors : {
|
||||||
|
/* gcc uses crtbegin.o to find the start of
|
||||||
|
the constructors, so we make sure it is
|
||||||
|
first. Because this is a wildcard, it
|
||||||
|
doesn't matter if the user does not
|
||||||
|
actually link against crtbegin.o; the
|
||||||
|
linker won't look for a file to match a
|
||||||
|
wildcard. The wildcard also means that it
|
||||||
|
doesn't matter which directory crtbegin.o
|
||||||
|
is in. */
|
||||||
|
KEEP (*crtbegin.o(.ctors))
|
||||||
|
/* We don't want to include the .ctor section from
|
||||||
|
from the crtend.o file until after the sorted ctors.
|
||||||
|
The .ctor section from the crtend file contains the
|
||||||
|
end of ctors marker and it must be last */
|
||||||
|
KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
|
||||||
|
KEEP (*(SORT(.ctors.*)))
|
||||||
|
KEEP (*(.ctors))
|
||||||
|
}
|
||||||
|
.dtors : {
|
||||||
|
KEEP (*crtbegin.o(.dtors))
|
||||||
|
KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
|
||||||
|
KEEP (*(SORT(.dtors.*)))
|
||||||
|
KEEP (*(.dtors))
|
||||||
|
}
|
||||||
|
.jcr : { KEEP (*(.jcr)) }
|
||||||
|
.got : { *(.got.plt) *(.got) }
|
||||||
|
_edata = .;
|
||||||
|
PROVIDE (edata = .);
|
||||||
|
.bss : {
|
||||||
|
__bss_start = .;
|
||||||
|
*(.dynbss)
|
||||||
|
*(.bss .bss.* .gnu.linkonce.b.*)
|
||||||
|
*(COMMON)
|
||||||
|
/* Align here to ensure that the .bss section occupies space up to
|
||||||
|
_end. Align after .bss to ensure correct alignment even if the
|
||||||
|
.bss section disappears because there are no input sections. */
|
||||||
|
. = ALIGN(32 / 8);
|
||||||
|
. = ALIGN(32 / 8);
|
||||||
|
}
|
||||||
|
_end = .;
|
||||||
|
PROVIDE (end = .);
|
||||||
|
.stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) }
|
||||||
|
.debug 0 : { *(.debug) } .line 0 : { *(.line) } .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) }
|
||||||
|
/DISCARD/ : { *(.exit.text) *(.cpuexit.text) *(.memexit.text) *(.exit.data) *(.cpuexit.data) *(.cpuexit.rodata) *(.memexit.data) *(.memexit.rodata) *(.exitcall.exit) *(.discard) }
|
||||||
|
}
|
1
conf/polldelay
Normal file
1
conf/polldelay
Normal file
|
@ -0,0 +1 @@
|
||||||
|
50
|
8781
docs/Heliza_Talking_dirty_to_the_attackers.pdf
Normal file
8781
docs/Heliza_Talking_dirty_to_the_attackers.pdf
Normal file
File diff suppressed because one or more lines are too long
BIN
docs/Wagener-AHA-Adaptive-Honeypot-Alternative-slides.pdf
Normal file
BIN
docs/Wagener-AHA-Adaptive-Honeypot-Alternative-slides.pdf
Normal file
Binary file not shown.
24522
docs/thesis_gerard_wagener_after_defense.pdf
Normal file
24522
docs/thesis_gerard_wagener_after_defense.pdf
Normal file
File diff suppressed because one or more lines are too long
BIN
linux
Executable file
BIN
linux
Executable file
Binary file not shown.
0
new
Normal file
0
new
Normal file
1
root_fs
Symbolic link
1
root_fs
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../../linux-2.6-broken-isolation/root_fs
|
|
@ -1,3 +1,2 @@
|
||||||
./linux eth0=tuntap,tap0 con=/dev/null con0=fd:0,fd:1 mem=512M
|
./linux eth0=tuntap,tap0 eth1=tuntap,tap1 con=/dev/null con0=fd:0,fd:1 mem=512M
|
||||||
#./linux mem=512M,eth0=tuntap,tap0
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue