起因是北魏贵族贪污腐败,六镇又经历了天灾人祸,还遭到北方游牧民族柔然的抢掠,最后发起的反北魏贵族腐朽统治的大起义。
孝文帝改革后,六镇成为改革后历史遗留下来的问题。拓跋鲜卑建国时,其所依靠的军队是以鲜卑人为主的部落兵,士兵地位很高,作战勇猛。迁都洛阳后,部落兵发生分化,迁入河南者为羽林、虎贲,勋贵与士族同列;相反世守边陲六镇者则由“国之肺腑”逐步沦落为镇户、府户,身分低下,由是引起六镇军民的普遍不满。北魏末年,吏制败坏,经济衰退,六镇遂成为各种社会问题的焦点。
孝明帝孝昌元年(525年),六镇爆发了武装起事,昔日国之爪牙,今则成为反对北魏政权的“叛民”。北魏虽多次进兵镇压,但仍未将乱事平定,最后不得不依靠原六镇所抵御的柔然兵,才能把乱事镇压下去。乱事虽平,但六镇军民的安置,又成为一个棘手的社会问题,由是亦引发日后葛荣领导的更大规模的河北起义。
北镇不设州郡,以镇、戍领民,号为镇民,主要是鲜卑拓跋部民,地位较高。随着北魏疆域的扩大,强制汉族及其它族的大族豪强、部落酋帅徙边。
文成帝以后,又不断发配囚犯戍边,从此镇民的地位日益下降。孝文帝迁都洛阳后,政治、经济中心南移,北镇失去军事上的重要地位。加以进入中原的包括拓跋在内的各族贵族加速汉化及封建化,而北镇仍然保持着鲜卑化倾向,镇民被称为“府户”,属于军府,世袭为兵,不准迁移。六镇鲜卑和鲜卑化贵族与将士的待遇及升迁不如洛阳鲜卑贵族。这种排斥鲜卑武人的政策在当时京城洛阳也能看到,以致造成在禁军产生叛变。北魏后期,北镇镇民中贫富差别加剧。军镇的统治者是主将、参僚和豪强,他们因不能充当廷官而对北魏政府不满。被统治的广大镇民遭受主将、参僚和豪强的欺凌奴役,土地被剥,承担着繁重的官、私力役,还被洛阳政府视为“北人”,受到歧视。北镇镇民中有不少人来自高车、山胡,他们和居住塞内的本族人保持联系。山胡久居汾西和陕北。北魏时列入编户的山胡承担着租调徭役,不属州郡的山胡仍由酋帅管辖,北魏政府常在他们中强征兵丁,有时强行迁徙。高车分为东西两部,一直保留部落组织,居住在六镇边塞一带,对北魏政府承担兵役和贡纳义务。
北魏政府委任山胡、高车酋长为领民酋长或其它官职,统治未列编户的本族人民。在改镇为州的地方,酋豪成为地方大姓,受公府、州郡辟举。所以他们和洛阳政府既存在矛盾﹐又具有利益上的一致。
正光四年(523),怀荒镇农民怨恨镇将于景不发粮廪,杀景反。不久,沃野镇民破六韩拔陵聚众杀镇将,攻占沃野镇,改元真王。遂率义众南下,又遣别帅卫可孤围武川,攻怀朔。怀朔镇将杨钧擢武川豪强贺拔度拔及诸子允、胜、岳为统军、军主,率众顽抗。五年三月,魏遣元彧镇压拔陵。卫可孤克武川、怀朔,俘度拔父子。五月,拔陵破元彧于五原。魏以李崇代元彧为北讨大都督,崔暹,元渊为副将。七月,拔陵大败崔暹于白道,李崇退守云中。八月,东西两部高车叛魏附拔陵,义军大盛。孝明帝下诏改镇为州,以求安抚。秀容人乞伏莫于攻杀郡守,南秀容牧子万于乞真杀太仆卿,俱反。为秀容契胡酋长尔朱荣镇压。十月,李崇免官,元渊代总戎政。贺拔度拔父子及武川宇文肱等纠合乡里豪强,袭杀卫可孤。孝昌元年(525)初,柔然主阿那率十万众,自武川西向沃野,为魏镇压拔陵。六月,拔陵围元渊于五原,渊北走朔州(原怀朔镇),云州刺史费穆弃云中投尔朱荣于秀容。元渊遣于谨说降已经起义的西部高车酋长乜列河重新归附;阿那败拔陵于五原,大将破六韩孔雀阵亡。拔陵被迫南下,在阿那和元渊的夹击下,义军二十万为元渊所截降,拔陵主力失败。北魏政府分徙降户于冀(今河北冀县)、定(今河北定县)、瀛(今河北河间)三州就食,几个月后,起义于河北地区再发。
正光五年(524年)三月,沃野镇人破六韩拔陵因与“高阙戍主,率下失和”,就杀掉戍主造反,自称真王,改号元年。起义军旋即攻克沃野镇,然后北进包围了武川、怀朔二镇。怀朔镇将杨命令贺拔度拔和他的三个儿子贺拔允、贺拔胜、贺拔岳领兵迎击。不久之后,魏以临淮王元彧都督北讨诸军事,讨破六韩拔陵,淮王彧带兵屯驻云中。四月,高平镇民赫连恩等造反,推敕勒酋长胡琛为高平王,攻高平镇以应拔陵。魏将卢祖迁击破之,琛北遁。起义军卫可孤于同月攻陷武川,怀朔亦溃,胜父子俱为可孤所虏。元彧被破六韩拔陵在五原打败,北魏另一支李叔仁率领的部队败于白道。北魏改派李崇为北讨大都督,命抚军将军崔暹、镇军将军广阳王深皆受崇节度。七月,崔暹违李崇节度,与破六韩拔陵战于白道,大败,单骑走还。拔陵并力攻崇,崇力战不能御,引还云中,与之相持。不久柔玄镇镇民发动叛变,莫折大提攻占高平,发动关陇起义。至此,六镇尽为镇民所占。
后莫折大提病逝,第四子莫折念生继续统军,并派其弟莫折天生带兵击败元志和歧州刺史裴芬之指挥的魏军,占领歧州、泾州、凉州。北魏改派齐王萧宝夤(萧鸾之子)和崔延伯代替患病的元修。孝昌元年(524年)正月莫折天生军驻扎在黑水。魏岐州刺史崔延伯和萧宝寅率众五万与莫折念生在马嵬爆发大战,莫折念生战败,被“俘斩十余万”。莫折念生退保小陇,北魏军占领凉州南秦州起义军首领韩祖香被被北魏益州刺史魏子健击败杀死,张长命投降萧宝簧。四月,高平镇起义军首领胡琛遣其大将万俟丑奴、宿勤明达等攻击北魏魏泾州,打败萧宝夤和崔延伯的大军,萧宝夤只能退保安定。
正光六年(525年),二月。北魏胡太后和元诩发动政变,解除了元叉的兵权和职务,并杀死了元叉及其同党。同时派出使节带礼物出使柔然,要求柔然出动部队帮助北魏平叛。柔然首领阿那瑰率兵十万向西进逼沃野镇,连战连捷,大败六镇之军。北魏也派元琛率军自平城出发,进攻怀朔。六月,元琛被破六韩拔陵在五原打败,被迫向东撤退。元琛改变策略,开始分化招降起义军。这个策略起到很好效果,乜列河率三万人投降。元琛又趁破六韩拔陵截击乜列河军之际设下埋伏,打败破六韩拔陵,破六韩拔陵渡河逃亡,北魏军所俘六镇兵民20万被北魏政府分配在瀛、冀、定三州就食。孝明帝改元孝昌。
六镇20万被俘兵民安置在河北三州之后,正逢河北遭遇水旱之灾,无处就食,出现逃亡现象。
孝昌元年(525年)八月,柔玄镇兵杜洛周(一作吐斤洛周)聚北镇流民反于上谷(今河北宣化),年号仍用真王。率师西上,围燕州(今河北涿鹿)。
九月,北魏派幽州刺史常景和幽州都督元谭镇压,常景在卢龙塞和军都司沿线险要驻兵防守。
十二月,洛周至黄瓜堆,击败降魏高车酋长斛律金。
孝昌二年(526年),洛周攻破扼守军都、居庸两关的魏军,南下幽州,十一月,范阳城民执幽州刺史王延年。行台常景以应义军,洛周据有燕、幽。北魏安州石离、六城、解盐戍将起兵响应杜洛周,杜洛周集合兵力进攻居庸关,攻克,元谭连夜逃亡。同时,鲜于修礼率当地六镇兵民于定州造反,改元鲁兴,被北魏都督杨津击败,被迫东撤。四月杜洛周进攻蓟城(今北京),打败都督李琚,但因常景的截击,被迫退还上谷。五月,杜洛周派部将曹纥进攻蓟南,但于七月曹纥所部被常景重创,杜洛周也在范阳被击败。
八月,鲜于修礼所部发生内乱,修礼被元洪业所杀,元洪业又被葛荣所杀。九月,葛荣所部与北魏元琛、元融所部战于白牛逻,北魏军大败,元融被杀。后元琛在博陵被葛荣骑兵所杀。
孝昌三年(527年)正月,葛荣攻克殷州。十一月攻克冀州,十二月击败源子邕和裴衍,进逼邺城。
武昌(528年)元年正月,杜洛周攻克定、瀛二州。二月,起义军内部发生火拼,结果葛荣杀死杜洛周,并统领其军。这时起义军已经发展到几十万之众。与此同时,山东之地爆发民变,邢杲于六月自立为汉王,改元天统,后被元天穆和尔朱兆镇压。北魏其余各地都由民变出现。
武泰元年六月,尔朱荣发动河阴之变后,北魏朝廷为尔朱荣控制,尔朱荣调动四路大军36万人,进逼起义军。八月,尔朱荣率精骑七万自起义军背后袭来。尔朱荣利用葛荣排兵时兵力分散的弱点,迅速击破对手,葛荣被俘押至洛阳斩首。十二月,葛荣部众韩楼聚众在河北幽州起事,被尔朱荣手下侯荣镇压。
孝昌二年(526年),胡琛因为与破六韩拔陵不和,被杀。其军由万俟丑奴统帅,并于孝昌三年(527年)正月打败萧宝寅。同时莫折念生发动反击,相继占领东秦州、歧州、幽州(今甘肃宁县)、北华州、雍州(今西安)、潼关,声势大振。三月,孝明帝宣布“中外戒严”,并下诏要御驾亲征,但没有实行。其后北魏派大军进攻攻取潼关,九月,莫折念生被部将杜粲杀死,杜粲投降北魏。念生死后,其军归万俟丑奴统领。其后萧宝寅害怕朝廷怪罪其征讨不力,遂造反。孝明帝派尚书仆射长孙稚镇压,萧宝寅在部将侯终德背叛后,见魏军势大,投降万俟丑奴。至此,关中地区都在六镇乱军的控制之下,永安六年(528年)七月,万俟丑奴称帝,建年号神兽。
永安三年(530年)正月,尔朱荣以尔朱天光为大都督率军镇压关中叛乱。三月,万俟丑奴率军进攻岐州,又派部将尉迟菩萨带兵进攻武功,魏军贺拔岳所部击败尉迟菩萨,万俟丑奴不得不停止进攻岐州。七月,尔朱天光扬言要休整部队,万俟丑奴信以为真,也让士兵屯田。魏军趁机突袭,打败万俟丑奴所部,万俟丑奴在凉州被俘。而后,万俟丑奴在关中诸部逐一被击败,关中平定。
正光五年(梁普通五年),破六韩拔陵起事时。南方萧梁也趁机发动北伐。梁的主攻目标是寿阳。八月,梁成景俊所部攻克魏童城。九月,攻克睢陵。梁军赵景悦进攻荆山,裴邃带领三千骑兵进攻寿阳,打破外城,并攻取狄丘、甓城、黎浆等城。北魏急派元琛、郦道元、元鉴等人带兵救援,逼退裴邃所部,收复荆山,并击退梁军王神念所部。
十月,裴邃再次督军进攻北魏。裴所部攻克魏陵、曲木等城,其余各部皆有斩获,克琅琊、檀丘、曲阳等地。裴又于正光元年于寿阳击败元琛所部,斩首万余级。五月,裴邃病死,夏侯亶都督北伐诸事。同时,梁军从益州方向北魏发动进攻,但被北魏军击退。普通七年(北魏孝昌二年,526年)七月,梁军趁着淮水暴涨,再次北伐。元树攻黎浆,夏侯亶攻寿阳。十一月,梁军克寿阳。
普通八年(北魏孝昌三年)正月,梁军克平靖关、武阳关、黄关岘。其后攻破临潼、广陵等城。十月,梁军曹仲宗、陈庆之所部围攻涡阳,其后梁军韦放增援。北魏元昭所部五万被击败,梁军陈庆之乘胜追击,“俘斩略尽,尸咽涡水,所降城中男女三万馀口。”三月,北魏郢州刺史元显达降梁。
杜洛周上谷起义的第二年,原怀朔镇兵鲜于修礼等率北镇流民反于定州的左人城(今河北唐县西),改元鲁兴,率师赴中山(今河北定县)。魏以杨津为定州刺史、行台,守中山;又遣长孙稚偕河间王元琛率军来援。四月,修礼大败长孙稚等。五月,魏又以元渊为大都督﹐督元融、裴衍来援。八月,内奸元宏业杀害修礼,修礼部将葛荣诛之,代修礼领义众坚持斗争。九月,葛荣趋瀛州,击败魏左军都督元融,又俘杀元渊,义众大振,葛荣遂自称天子,建国号齐,改元广安。
鲜于修礼起兵左人城后,恒州、朔州流民纷起响应。二月,西部高车斛律洛阳起于桑干西,与费也头牧子相连;四月,朔州城民鲜于阿胡据城反。斛律洛阳和费也头牧子被尔朱荣镇压、阿胡率流民南下,七月,攻克平城。尔朱荣袭魏肆州,杀刺史,得贺拔胜。荣乘魏军失利,积极网罗北镇酋帅、豪强,以岳、胜为别将,兵力日盛。
孝昌三年正月,葛荣败赵郡豪强李元忠,克殷州(今河北隆尧东),进围冀州。七月,相州刺史元鉴据邺叛魏降葛荣。八月,魏遣源子邕、裴衍等攻邺,斩元鉴;又遣子邕、裴衍逼葛荣。十一月,葛荣克信都,俘冀州刺史魏宗室元老元孚及当州豪强潘绍等五百余人。十二月,败源子邕、裴衍等,进围邺城。武泰元年(528)正月,定州长史李裔以中山降,俘刺史杨津;瀛州刺史元宁以城降。葛荣克冀、定、瀛三州,据守鄚城的河间大族邢杲和割据勃海的豪强高干,各率部曲乡里十余万户南逃。二月,葛荣杀杜洛周并其部众。三月,克沧州。至此,葛荣拥有燕、幽、冀、定、瀛、殷、沧七州之地,南围邺城,西逼并、肆、兵力极盛。
葛荣义军发展的同时,尔朱荣势力也急剧扩大,高欢、段荣、尉景、蔡俊等怀朔豪强先叛洛周,后背葛荣,投奔秀容。尔朱荣器重高欢,常参军谋。并州刺史元天穆与尔朱荣勾结,劝其袭取洛阳。武泰元年三月,尔朱荣以胡太后鸩杀孝明帝为借口,自晋阳出兵向洛阳,至河阴。四月,立元子攸为帝,沉太后于河,杀朝臣二千余人。契胡酋长尔朱荣为首的北镇豪强、酋帅集团控制了北魏政权。
七月,葛荣围邺,众号百万。九月,尔朱荣率精骑出滏口(今河北磁县西北),与义军展开会战,尔朱荣使侯景为前驱,高欢阵前诱降。葛荣轻敌,尔朱荣出奇兵,表里合击,葛荣兵败被俘。义众星散,为契胡分头押领。十月,葛荣牺牲于洛阳。
十二月,葛荣余部韩楼据蓟城反,尔朱荣以贺拔胜为大都督﹐屯中山以备韩楼。永安二年(529)九月,尔朱荣遣侯渊率兵镇压韩楼,韩楼弃蓟城出走,途中被俘杀,六镇起义至此失败。
尔朱荣在六镇之乱时候,镇守晋阳。凭借着镇压六镇之乱,壮大了自己势力,拥有极多雄兵。孝明帝因与生母胡太后不和,下诏尔朱荣入京。尔朱荣行至半路,却又被下诏停止行程。大通二年(528年),胡太后杀死孝明帝。尔朱荣借口为孝明帝报仇,发兵攻陷洛阳,将胡太后、皇帝和大臣王公等两千余人沉入黄河,这就是河阴之变。尔朱荣改立元子攸为帝,是为孝庄帝,把自己的女儿嫁给孝庄帝作为皇后。
尔朱荣返回晋阳,以大丞相之位遥控朝政。尔朱荣手下有个叫高欢的鲜卑化汉人。正光四年(523年),北方爆发六镇戍卒和各族人民的大起义。高欢认为时机已到,便带着个人野心,先后参加了破六韩拔陵、杜洛周、葛荣等领导的起义队伍。在义军中暗集死党,发展个人势力。后来,他看到契胡酋长尔朱荣势力强大,便与死党尉景、段荣等叛离义军,投奔尔朱荣,并很快赢得尔朱荣的信任,取得亲信都督(尔朱荣卫队长)的职位。
永安三年(530年),孝庄帝亲手刺杀尔朱荣于洛阳,不久被尔朱荣的部下杀死。高欢乘尔朱氏混乱之机,说动当年被尔朱荣兼并的六镇起义军归顺自己,把他们带往河北。这二十多万之众的六镇军民,成为日后高欢起家的政治资本和军事力量。
第二年(531),高欢率众进据冀州(今河北冀县),笼络当地世族地主,利用民族隔阂,煽动反尔朱氏情绪,一时人声鼎沸,势力陡增。永熙元年(532年)三月,尔朱兆(尔朱荣侄子)率二十万大军进攻高欢。高欢以逸待劳,以少胜多,重创尔朱军,乘胜进据魏都洛阳,成为实际控制北魏政权的“太上皇”。同年七月,高欢克晋阳,彻底铲除尔朱势力。高欢又在晋阳建立大丞相府以遥控朝政。从此,高欢及后来的北齐历代帝王,刻意经营晋阳,使晋阳成为北魏、东魏、北齐三代实际上的政治中心,史称“霸府”。
永熙三年(534年),孝武帝不甘作高欢傀儡,在攻打高欢失败后,孝武帝率军西入关中,高欢随即另立元善见为帝,迁都邺城(今河北临漳),史称东魏。另一军阀宇文泰率领部众占据关中,毒死孝武帝,拥立元宝炬为帝,史称西魏。