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
|
||||
#removed or not
|
||||
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
|
||||
exportdir=/tmp/ahaworker
|
||||
|
||||
[common]
|
||||
#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
|
||||
inqueue=/home/gerard/dev/linux-2.6/in
|
||||
inqueue=/home/gerard/kernel/adaptive-honeypot/linux-2.6/in
|
||||
|
||||
[insults]
|
||||
maxidx = 3
|
||||
|
||||
[gui]
|
||||
database=gui.db
|
||||
[game]
|
||||
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
106
aha/aha.py
106
aha/aha.py
|
@ -6,58 +6,40 @@ import os,sys,random,getopt,ConfigParser
|
|||
from pyinotify import *
|
||||
from ctypes import *
|
||||
from ahalib import *
|
||||
import sys
|
||||
import os
|
||||
import sqlite3,os.path
|
||||
|
||||
class KernelEvents(ProcessEvent):
|
||||
|
||||
def __init__(self,inqueue,outqueue,insultmaxidx, guidb):
|
||||
def __init__(self,inqueue,outqueue,insultmaxidx,cases,block):
|
||||
self.ahaa = AHAActions(inqueue,outqueue)
|
||||
self.database = guidb
|
||||
self.cases = cases
|
||||
self.block = block
|
||||
self.processtrees = ProcessTrees()
|
||||
if os.path.exists(self.database):
|
||||
self.con = sqlite3.connect(self.database)
|
||||
#Do it here to win time
|
||||
self.cur = self.con.cursor()
|
||||
|
||||
#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:
|
||||
os.system('pwd')
|
||||
print "[ERROR] Database file not found ",self.database
|
||||
sys.exit(1)
|
||||
# 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
|
||||
|
||||
def askgui(self, filekey,msg):
|
||||
ret = False
|
||||
program = os.path.basename(msg['file'][0])
|
||||
args = ','.join(msg['argument'][1:])
|
||||
#Lets see what the user has defined
|
||||
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
|
||||
return b
|
||||
|
||||
def decision(self,filekey,msg):
|
||||
try:
|
||||
|
@ -71,28 +53,37 @@ class KernelEvents(ProcessEvent):
|
|||
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)
|
||||
#print "New user found pid=",pid,",ppid=",ppid
|
||||
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)
|
||||
#print "Process belongs to the system, allow it"
|
||||
return
|
||||
else:
|
||||
if msg.has_key('file'):
|
||||
r = self.askgui(filekey,msg)
|
||||
if r:
|
||||
return
|
||||
|
||||
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:
|
||||
|
@ -151,14 +142,15 @@ if __name__ == '__main__':
|
|||
inqueue = c.get('common','inqueue')
|
||||
outqueue = c.get('common','outqueue')
|
||||
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..."
|
||||
wm = WatchManager()
|
||||
mask = IN_CLOSE_WRITE # watched events
|
||||
|
||||
k = KernelEvents(inqueue, outqueue,insultmaxidx,guidb)
|
||||
#If database is not valid exit here
|
||||
notifier = Notifier(wm,k)
|
||||
notifier = Notifier(wm, KernelEvents(inqueue,outqueue,insultmaxidx,
|
||||
cases,blockpr))
|
||||
wdd = wm.add_watch(outqueue, mask, rec=True)
|
||||
|
||||
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;
|
||||
}
|
||||
|
|
@ -37,6 +37,7 @@ class AHAActions:
|
|||
|
||||
#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)
|
||||
|
@ -46,8 +47,6 @@ class AHAActions:
|
|||
f.close()
|
||||
reply="(key=%s, block=%d,exitcode=%d,substitue=%d,insult=%d)"\
|
||||
%(filename,block,exitcode, substitue,insult)
|
||||
#print "CREATE_MESSAGE ",filename,"block=",block, "insult=",insult,\
|
||||
#"substitue=",substitue
|
||||
return reply
|
||||
except IOError,e:
|
||||
sys.stderr.write('Could not create reply file=(%s)\n'%filename)
|
||||
|
@ -219,7 +218,7 @@ class ProcessTrees:
|
|||
self.processList.pop(pid)
|
||||
if self.userList.has_key(pid):
|
||||
self.userList.pop(pid)
|
||||
#print "User in process ",pid," pid disconnected"
|
||||
print "User in process ",pid," pid disconnected"
|
||||
except KeyError,e:
|
||||
pass
|
||||
|
||||
|
|
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
|
||||
#define AHA
|
||||
/* Debug messages are disabled */
|
||||
/* #define AHA_DEBUG */
|
||||
#define AHA_DEBUG
|
||||
#include "linux/kernel.h" /* printk is declared there */
|
||||
#include "linux/stddef.h"
|
||||
#include "linux/ptrace.h" /* access to kmalloc */
|
||||
#include "os.h"
|
||||
#include "linux/delay.h"
|
||||
#include "aha-defs.h"
|
||||
#define MAX_DUMP_BUF 1024
|
||||
#define MAX_DUMP_BUF 512
|
||||
struct ReplyMessage{
|
||||
int block;
|
||||
int exitcode;
|
||||
|
|
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)){
|
||||
os_write_file(fd,buf,cnt);
|
||||
} else {
|
||||
AHA_PRINTK("Cannot write. buffer is too small size = %d cnt=%d, \
|
||||
fd=%d\n", size, cnt,fd);
|
||||
AHA_PRINTK("Failed to write information\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -48,7 +47,6 @@ inline void __aha_dump_pid_ppids(int fd, char* buf, int size)
|
|||
int cnt;
|
||||
tsk = current;
|
||||
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);
|
||||
cnt = snprintf(buf,size,"ppid=%d\n",tsk->parent->pid);
|
||||
__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;
|
||||
/* FIXME the MAGIC word is not escaped it could emerge as argument */
|
||||
cnt = snprintf(buf,size,"DONE=1\n");
|
||||
AHA_PRINTK("__aha_set_done_tag\n");
|
||||
__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 */
|
||||
/* FIXME Espacing is not done */
|
||||
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;
|
||||
int cnt;
|
||||
AHA_PRINTK("__aha_dump_str_array\n");
|
||||
for (;;) {
|
||||
if (get_user(a,argv))
|
||||
break;
|
||||
if (!a)
|
||||
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);
|
||||
__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.c = 1;
|
||||
cnt = 0;
|
||||
AHA_PRINTK("aha_record_sys_clone\n");
|
||||
|
||||
aha_create_filename((char*)&filename,filename__size);
|
||||
snprintf((char*)&buf, buf__size,"out/%s",filename);
|
||||
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 mem=512M,eth0=tuntap,tap0
|
||||
./linux eth0=tuntap,tap0 eth1=tuntap,tap1 con=/dev/null con0=fd:0,fd:1 mem=512M
|
||||
|
||||
|
|
Loading…
Reference in a new issue