chg: [uncommited] historical uncommited files added + paper and PhD thesis

This commit is contained in:
Alexandre Dulaunoy 2021-08-06 23:06:36 +02:00
parent f1039eec4d
commit 59e6fc3bc2
Signed by: adulau
GPG key ID: 09E2CD4944E6CBCD
34 changed files with 46988 additions and 92163 deletions

2
README.md Normal file
View file

@ -0,0 +1,2 @@
# AHA - Adaptive Honeypot Alternative (historical repository)

View file

@ -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

File diff suppressed because it is too large Load diff

8199
aha/aha.log.recycled_pids Normal file

File diff suppressed because it is too large Load diff

View file

@ -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..."

View file

@ -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
View 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
View 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
View 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
View 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
View 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
View 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;
}

View file

@ -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

Binary file not shown.

View file

@ -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

File diff suppressed because it is too large Load diff

View file

@ -1,8 +0,0 @@
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char* argv[])
{
return 0;
}

87
aha/userlist.txt Normal file
View 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

View file

@ -0,0 +1 @@
#include "../../../../include/generated/asm-offsets.h"

View file

@ -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;

View file

@ -0,0 +1 @@
#include "../../../../include/generated/asm-offsets.h"

View 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 # */

View file

@ -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
View 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
View 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
View 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
View file

@ -0,0 +1 @@
50

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

BIN
linux Executable file

Binary file not shown.

0
new Normal file
View file

1
root_fs Symbolic link
View file

@ -0,0 +1 @@
../../linux-2.6-broken-isolation/root_fs

View file

@ -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