{"id":283085,"date":"2016-12-27T09:15:05","date_gmt":"2016-12-27T06:15:05","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=283085"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=283085","title":{"rendered":"\u041a\u0430\u043a \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u044f\u0434\u0440\u043e \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432"},"content":{"rendered":"<p>\u041a\u0430\u043a \u0432\u044b \u0434\u0443\u043c\u0430\u0435\u0442\u0435 \u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0439\u0442\u0438 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0443 \u043f\u043e ssh, \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u044f\u0434\u0440\u043e \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u0439 \u0436\u0435 ssh \u0441\u0435\u0441\u0441\u0438\u0438. \u0421\u0435\u0439\u0447\u0430\u0441 \u0435\u0441\u0442\u044c \u043c\u043e\u0434\u043d\u043e\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u044f\u0434\u0440\u0430 \u043d\u0430 \u043b\u0435\u0442\u0443 (ksplice, KernelCare, ReadyKernel, etc), \u043d\u043e \u0443 \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043e\u043d \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0435\u043d\u044f\u044e\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c. \u0417\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d \u0431\u043e\u043b\u0435\u0435 \u00ab\u0447\u0435\u0441\u0442\u043d\u044b\u0439\u00bb \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u044f\u0434\u0440\u043e. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0441\u0430\u043c \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d <a href=\"https:\/\/habrahabr.ru\/post\/160201\/\">[1]<\/a>, \u0430 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0432\u0441\u0435 \u0432 \u0434\u0435\u0442\u0430\u043b\u044f\u0445 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u043f\u043e\u0439\u043c\u0435\u043c \u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043b\u0438 \u0441\u043b\u043e\u0436\u043d\u043e, \u0438 \u0447\u0435\u0433\u043e \u0441\u0442\u043e\u0438\u0442 \u0436\u0434\u0430\u0442\u044c \u043e\u0442 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<p>  <a href=\"https:\/\/travis-ci.org\">Travis CI<\/a> \u2014 \u043e\u0434\u043d\u0430 \u0438\u0437 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 Github. \u0421\u0435\u0440\u0432\u0438\u0441 \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0435\u0441\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u043e\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u0432\u0435\u0436\u0438\u043c\u0438 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u043c\u0438, \u0442\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0432\u044b\u0431\u043e\u0440 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0438 \u0432\u043c\u043a\u0430\u043c\u0438, \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e Linux \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.<\/p>\n<p>  \u041c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Travis-CI \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 <a href=\"https:\/\/criu.org\">CRIU<\/a> (checkpoint\/restrore in userspace) \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0430\u0440\u043b\u0438 \u043e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c. \u041d\u0430\u0447\u0438\u043d\u0430\u043b\u0438 \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043d\u0430 x86_64, \u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f Travis-CI \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043d\u0430\u0448\u0438 \u0442\u0435\u0441\u0442\u044b, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u043d\u0430 \u0432\u0441\u0435\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\u0445, \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u043c\u0438 \u0438 \u0434\u0430\u0436\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u044f\u0434\u0440\u0430\u043c\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0441\u0430\u043c\u043e\u0439 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0438 \u043f\u0435\u0440\u0435\u0434\u043e\u0432\u043e\u0439 \u0432\u0435\u0442\u043a\u043e\u0439 Linux-Next.<\/p>\n<p>  \u0418 \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0442\u0443\u0442, \u0442\u043e \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u0432 \u0441\u0432\u043e\u0438\u0445 \u0446\u0435\u043b\u044f\u0445 \u0438 \u0435\u043c\u0443 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c, \u043f\u0440\u0438\u0441\u0435\u0434\u0430\u0442\u044c, \u043f\u043e\u0434\u043f\u0440\u044b\u0433\u0438\u0432\u0430\u0442\u044c.<\/p>\n<h2>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043a \u0434\u0435\u043b\u0443, \u0433\u043e\u0441\u043f\u043e\u0434\u0430\u2026<\/h2>\n<p>  \u041d\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c CRIU, \u0430 \u043e\u0431 \u043e\u0434\u043d\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0447\u0442\u043e \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0447\u0435\u0440\u0435\u0437 ssh \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u041a\u0430\u043a \u043d\u0430\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u0432\u043e\u0435 \u044f\u0434\u0440\u043e \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b? \u042d\u0442\u043e \u0440\u043e\u0432\u043d\u043e \u0442\u0430 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0432 Travis-CI.<\/p>\n<p>  \u0412\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0435 \u043c\u044b \u043d\u0435 \u0438\u043c\u0435\u0435\u043c, \u0438 \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 Travis \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0443\u043c\u0438\u0440\u0430\u0435\u0442 (\u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f), \u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0443 \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0412\u041c. \u0421\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c, \u0437\u0430\u0434\u0430\u0447\u043a\u0430, \u043f\u0440\u044f\u043c\u043e \u0441\u043a\u0430\u0436\u0435\u043c, \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u0430\u044f. \u041c\u044b \u0434\u0430\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u043d\u0438\u0437\u0443 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043d\u0438\u0435 \u2013 \u043f\u0440\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u044c\u0442\u0435, \u043f\u0440\u0438\u0448\u043b\u043e \u043b\u0438 \u0432\u0430\u043c \u0441\u0440\u0430\u0437\u0443 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043d\u0435\u0442.<\/p>\n<p>  \u041d\u043e \u043c\u044b \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: \u0431\u0435\u0440\u0435\u043c CRIU, \u0434\u0430\u043c\u043f\u0438\u043c ssh-\u0441\u0435\u0441\u0441\u0438\u044e Travis, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043d\u043e\u0432\u043e\u0435 \u044f\u0434\u0440\u043e, \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0438 \u0431\u0435\u0436\u0438\u043c \u0434\u0430\u043b\u044c\u0448\u0435. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a \u044f \u0434\u0443\u043c\u0430\u043b, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0448\u0438\u043b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u043b\u0435\u0447\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0435\u0434\u0430 \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0432\u0441\u0435 \u044d\u0442\u043e \u0432\u0437\u043b\u0435\u0442\u0438\u0442. <\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u2013 \u043e\u0442\u043d\u044e\u0434\u044c \u043d\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u0430\u044f. \u0423 \u043d\u0435\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u041e\u0434\u043d\u043e \u0438\u0437 \u043d\u0438\u0445 \u2014 \u044d\u0442\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c Ubuntu 16.04 (<a href=\"https:\/\/github.com\/travis-ci\/travis-ci\/issues\/5821\">https:\/\/github.com\/travis-ci\/travis-ci\/issues\/5821<\/a>). \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 Travis \u0440\u0435\u0448\u0430\u0442\u044c \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043f\u043e\u043a\u0430 \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f, \u0430 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0431\u0435\u0437 \u0438\u0445 \u043f\u043e\u043c\u043e\u0449\u0438. \u0418\u0434\u0435\u044f \u0442\u0443\u0442 \u0442\u0430 \u0436\u0435, \u0431\u0435\u0440\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 14.04, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0435\u0435 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u0441\u044f \u0432 \u043d\u043e\u0432\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435.<\/p>\n<h2>\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u2014 \u043c\u0435\u043d\u044c\u0448\u0430\u044f \u0438\u0437 \u0431\u0435\u0434, \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434:<\/p>\n<pre><code class=\"bash\">sed -i -e &quot;s\/trusty\/xenial\/g&quot; \/etc\/apt\/sources.list apt-get update && apt-get dist-upgrade -y <\/code><\/pre>\n<p>  \u041d\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0432\u0435\u0441\u0435\u043b\u0435\u0435. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u043f\u0440\u043e\u0441, \u043e\u0442\u043a\u0443\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0434\u0430\u043c\u043f\u0438\u0442\u044c? \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u043c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c? \u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0439\u0434\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a, \u043a\u0430\u043a \u043c\u044b \u0443\u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e? \u041e\u0442 \u0437\u0430\u043c\u043e\u0440\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e Travis \u043f\u043e\u043c\u043e\u0449\u0438 \u0436\u0434\u0430\u0442\u044c \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f.<br \/>  \u0422\u0430\u043a \u0447\u0442\u043e \u043d\u0430\u0447\u043d\u0435\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u0438\u043b\u0430\u043c\u0438. \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0434\u0435\u0440\u0435\u0432\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u0434\u0430\u043c\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 SSHD, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0448\u0443 SSH-\u0441\u0435\u0441\u0441\u0438\u044e. <\/p>\n<p>  \u0414\u0435\u0440\u0435\u0432\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432:<\/p>\n<p>  <code>12253 ? \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Ss \u00a0\u00a0\u00a0\u00a00:03 \/usr\/sbin\/sshd -D<br \/>  32443 ? \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Ss \u00a0\u00a0\u00a0\u00a00:00 \u00a0\\_ sshd: root@pts\/0<br \/>  32539 pts\/0 \u00a0\u00a0\u00a0Ss \u00a0\u00a0\u00a0\u00a00:00 \u00a0| \u00a0\u00a0\\_ -bash<br \/>  <\/code><\/p>\n<p>  \u0418\u0434\u0435\u043c \u043f\u043e \u0432\u0441\u0435\u043c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f\u043c, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0441\u0435\u0431\u044f, \u0438 \u0431\u0435\u0440\u0435\u043c \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 sshd \u043e\u0442 init-\u0430:<\/p>\n<pre><code class=\"bash\">ppid=&quot;&quot; pid=$$ while :; do \u00a0\u00a0\u00a0p=$(awk '\/^PPid:\/ { print $2 }' \/proc\/$pid\/status) \u00a0\u00a0\u00a0test \u201c$p\u201d -eq 1 && break \u00a0\u00a0\u00a0ppid=$pid \u00a0\u00a0\u00a0pid=$p done echo $pid <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0437\u043d\u0430\u0435\u043c \u043a\u043e\u0433\u043e \u0434\u0430\u043c\u043f\u0438\u0442\u044c \u0438 \u043d\u0430\u0434\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043a\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u044d\u0442\u0438\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f. \u0421\u0442\u043e\u0438\u0442 \u0443\u0447\u0435\u0441\u0442\u044c, \u0447\u0442\u043e CRIU \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u00ab\u043f\u0438\u043b\u0438\u0442\u044c \u0441\u0443\u043a, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0438\u0434\u0438\u0442\u00bb, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441:<\/p>\n<p>  setsid bash -c \u00absetsid .\/scripts\/travis\/kexec-dump.sh $ppid &lt; \/dev\/null &#038;&gt; \/travis.log &#038;\u00bb<\/p>\n<p>  \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0447\u0438\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u0434\u0430\u043c\u043f\u0430. \u0415\u0441\u043b\u0438 \u0432\u044b \u0434\u0443\u043c\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e, \u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0448\u0438\u0431\u0430\u0435\u0442\u0435\u0441\u044c. \u0412 CRIU \u0443\u0436\u0435 \u043d\u0430\u0440\u043e\u0441\u043b\u043e \u0442\u0430\u043a\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u043f\u0446\u0438\u0439, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u0440\u0430\u0437\u0443 \u0432 \u043d\u0438\u0445 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f. \u041d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0432\u0441\u0435 \u043d\u0435 \u0442\u0430\u043a \u043f\u043b\u043e\u0445\u043e, \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f. \u0421\u0442\u0440\u043e\u0447\u043a\u0430 \u043a\u043e\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u043e\u0440\u043e\u0442\u043a\u0430\u044f.<\/p>\n<pre><code class=\"bash\">.\/criu\/criu dump -D \/imgs -o dump.log -t $pid --tcp-established --ext-unix-sk -v4 --file-locks \u2014link-remap <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0435\u0435 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a, \u044d\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0437\u0432\u0443\u0447\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a: \u201cCRIU, \u0441\u0434\u0435\u043b\u0430\u0439 \u043d\u0430\u043c \u0434\u0430\u043c\u043f \u043f\u043e\u0434\u0434\u0435\u0440\u0435\u0432\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 $pid, \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u043b\u043e\u0436\u0438 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \/imgs, \u043b\u043e\u0433\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 dump.log, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0439 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0431\u043e \u0432\u0441\u0435\u043c \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0448\u044c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0442\u0435\u0431\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c tcp-\u0441\u043e\u043a\u0435\u0442\u044b, unix-\u0441\u043e\u043a\u0435\u0442\u044b \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043c\u0438\u0440\u043e\u043c, \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u043b\u043e\u043a\u0438 \u0438 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b\u201d.<\/p>\n<p>  \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0442\u0443\u0442 \u0432\u0441\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043a\u0440\u043e\u043c\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u2014 \u043e\u0442\u043a\u0443\u0434\u0430 \u043e\u043d\u0438 \u0432\u043e\u0437\u044c\u043c\u0443\u0442\u0441\u044f? \u041d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043c\u0430\u0436\u043e\u0440\u043d\u044b\u0439 Update \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0430 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0430\u0448 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f \u0438 \u043f\u043e \u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0442\u0430\u0440\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u044d\u0442\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u0418\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u043d\u0438\u0445 \u043c\u044b \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u043f\u0446\u0438\u044e &#8212;link-remap.<\/p>\n<p>  \u0422\u0443\u0442 \u0436\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0438 \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430. \u041c\u0435\u0436\u0434\u0443 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d, \u0438\u043d\u0430\u0447\u0435 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438, \u0447\u0442\u043e TCP \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0443\u0442 \u044d\u0442\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e. CRIU \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0440\u0443 \u043f\u0440\u0430\u0432\u0438\u043b Iptables, \u0438 \u043d\u0430\u0448\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u044d\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u044f\u0434\u0440\u0430, \u043d\u043e \u0434\u043e \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0442\u0438. \u0417\u0434\u0435\u0441\u044c \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u0443\u0433\u043b\u0438\u0442\u044c, \u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u0448\u0438\u043b\u0430\u0441\u044c \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u043e.<\/p>\n<pre><code class=\"bash\">cat &gt; \/etc\/network\/if-pre-up.d\/iptablesload &lt;&lt; EOF #!\/bin\/sh iptables-restore &lt; \/etc\/iptables.rules unlink \/etc\/network\/if-pre-up.d\/iptablesload unlink \/etc\/iptables.rules exit 0 EOF  chmod +x \/etc\/network\/if-pre-up.d\/iptablesload iptables-save -c &gt; \/etc\/iptables.rules <\/code><\/pre>\n<h2>\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b, \u0438 \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0442\u043e\u0433\u043e, \u043a\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0445 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c. \u0422\u0443\u0442 \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u0435\u0440\u0432\u0438\u0441.<\/p>\n<pre><code class=\"bash\">cat &gt; \/lib\/systemd\/system\/crtr.service &lt;&lt; EOF [Unit] Description=Restore a Travis process  [Service] Type=idle ExecStart=\/root\/criu\/scripts\/travis\/kexec-restore.sh $d $f  [Install] WantedBy=multi-user.target EOF <\/code><\/pre>\n<p>  \u041a\u0430\u0436\u0435\u0442\u0441\u044f \u0432\u0441\u0435 \u0433\u043e\u0442\u043e\u0432\u043e \u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u043b\u0435\u0442\u0430\u0442\u044c. \u041a\u043b\u044e\u0447 \u043d\u0430 \u0441\u0442\u0430\u0440\u0442.<\/p>\n<pre><code class=\"bash\">kernel=$(ls \/boot\/vmlinuz* | tail -n 1 | sed 's\/.*vmlinuz-\\(.*\\)\/\\1\/') echo $kernel kexec -l \/boot\/vmlinuz-$kernel --initrd=\/boot\/initrd.img-$kernel --reuse-cmdline <\/code><\/pre>\n<h2>\u041f\u043e\u043b\u0435\u0442\u0435\u043b\u0438!<\/h2>\n<pre><code class=\"bash\">kexec -e <\/code><\/pre>\n<p>  \u0422\u0430\u043a \u043c\u044b \u0432\u0437\u043b\u0435\u0442\u0435\u043b\u0438, \u043d\u043e, \u043a\u0430\u043a \u0438 SpaceX, \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430 \u0441\u0435\u0441\u0442\u044c \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0438. \u0410 \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0438 \u043c\u044b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u0441\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0431\u044b\u043b\u0430 \u043a\u0435\u043c-\u0442\u043e \u0443\u0436\u0435 \u0437\u0430\u043d\u044f\u0442\u0430. \u0410 \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e, \u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e CRIU \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0442\u0435\u043c\u0438 \u0436\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c\u0438, \u0447\u0442\u043e \u0443 \u043d\u0438\u0445 \u0431\u044b\u043b\u0438 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u0430\u043c\u043f\u0430. \u041c\u044b \u0436\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438\u0441\u044c \u0432 \u043d\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0433\u0434\u0435 systemd (!!!) \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0441\u0442\u0430\u043b\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435. \u042d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0430 \u043d\u0430\u0443\u043a\u043e\u0439 \u0438 \u0442\u0443\u0442 \u043d\u0430\u043c \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u0442\u043e\u0447\u043d\u0435\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0445 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u0438\u043c\u0435\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 (pid namespace).<\/p>\n<pre><code class=\"bash\">unshare -pfm --mount-proc --propagation=private .\/criu\/criu restore \\ -D \/imgs -o restore.log -j --tcp-established --ext-unix-sk \\ -v4 -l --link-remap & <\/code><\/pre>\n<p>  \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u0437\u043b\u0435\u0442\u0435\u0442\u044c, \u0438 \u0441\u043d\u043e\u0432\u0430 \u043d\u0430\u0448 \u043a\u043e\u0440\u0430\u0431\u043b\u044c \u043d\u0435 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0441\u0432\u044f\u0437\u044c. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0438\u0434\u0435\u0439 \u043e \u043d\u0435\u043f\u043e\u043b\u0430\u0434\u043a\u0430\u0445 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043d\u0435\u0442, \u0438 \u043d\u0430\u0434\u043e \u043a\u0430\u043a-\u0442\u043e \u0434\u043e\u0431\u044b\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438. \u0422\u0443\u0442 \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u043d\u0435 \u0434\u0443\u043c\u0430\u0442\u044c \u0434\u043e\u043b\u0433\u043e, \u0430 \u0432\u0437\u044f\u0442\u044c \u0434\u0430 \u0438 \u0437\u0430\u043b\u0438\u0442\u044c \u0438\u0445 \u043d\u0430 \u043e\u0434\u043d\u043e \u0438\u0437 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 \u0440\u0430\u0437\u043d\u044b\u0445 \u043e\u0442\u0445\u043e\u0434\u043e\u0432.<\/p>\n<pre><code class=\"python\">#!\/usr\/bin\/env python2 import dropbox, sys, os access_token = os.getenv(&quot;DROPBOX_TOKEN&quot;) client = dropbox.client.DropboxClient(access_token) f = open(sys.argv[1]) fname = os.path.basename(sys.argv[1]) response = client.put_file(fname, f) print 'uploaded: ', response print &quot;=====================&quot; print client.share(fname)['url'] print &quot;=====================&quot; <\/code><\/pre>\n<p>  \u041f\u043e\u0434 \u043f\u0440\u0438\u0446\u0435\u043b\u043e\u043c \u043a\u0430\u043c\u0435\u0440 \u043c\u044b \u0442\u0435\u0440\u044f\u0435\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u043a\u043e\u0440\u0430\u0431\u043b\u044c \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u0448\u0443\u0442\u043a\u0438 \u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043d\u0430\u043c \u0436\u0430\u043b\u0443\u044e\u0442\u0441\u044f \u043d\u0430 DBus \u0441\u043e\u043a\u0435\u0442, \u0442 \u0435 \u044d\u0442\u043e \u0443\u0436\u0435 \u0442\u0430\u043a\u0430\u044f \u0441\u0432\u044f\u0437\u044c, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e, \u0432\u0435\u0434\u044c \u0435\u0439 \u0432\u043b\u0430\u0434\u0435\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e DBus-\u0434\u0435\u043c\u043e\u043d. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0437\u0430\u0447\u0435\u043c sshd \u043d\u0443\u0436\u0435\u043d \u044d\u0442\u043e\u0442 \u0441\u043e\u043a\u0435\u0442? \u041d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043e\u043d \u0445\u043e\u0447\u0435\u0442 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0435\u0442\u0438 \u0438 \u043f\u0440\u043e\u0447\u0443\u044e \u0435\u0440\u0443\u043d\u0434\u0443. \u041c\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f (\u0442\u043e\u0447\u043d\u0435\u0435 \u043c\u044b \u0443\u0436\u0435 \u0432\u0441\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438), \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u044d\u0442\u043e\u0442 \u0441\u043e\u043a\u0435\u0442 \u043a\u0430\u043a-\u043d\u0438\u0431\u0443\u0434\u044c \u0438 \u043f\u043e\u0435\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<pre><code class=\"diff\">diff --git a\/criu\/sk-unix.c b\/criu\/sk-unix.c index 5cbe07a..f856552 100644 --- a\/criu\/sk-unix.c +++ b\/criu\/sk-unix.c @@ -708,5 +708,4 @@ static int dump_external_sockets(struct unix_sk_desc *peer) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (peer-&gt;type != SOCK_DGRAM) { \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0show_one_unix(&quot;Ext stream not supported&quot;, peer); \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0pr_err(&quot;Can't dump half of stream unix connection.\\n&quot;); - \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return -1; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} <\/code><\/pre>\n<p>  \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u0442\u0447 \u0434\u043b\u044f CRIU. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043d\u043e \u0442\u0430\u043a \u0431\u044b\u043b\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u0421\u043d\u043e\u0432\u0430 \u0437\u0430\u043b\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0448\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u0436\u0434\u0435\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0434\u0435\u043d\u0438\u044f. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043f\u0441\u0435\u0432\u0434\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430\u043c\u0438: \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u043d\u043e\u043c\u0435\u0440\u0430 \u0443\u0436\u0435 \u043a\u0435\u043c-\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f. \u041c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c devpts \u0441 newinstance, \u043d\u043e \u044d\u0442\u0430 \u043e\u043f\u0446\u0438\u044f \u0441 \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<blockquote><p>\u00a0\u00a0\u00a0&#8212; The newinstance mount option continues to be accepted but is now<br \/>  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Ignored. \/\/ Eric W. Biederman  <\/p><\/blockquote>\n<p>  \u041f\u043e\u0445\u043e\u0436\u0435 \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043b\u0435\u0437\u0442\u044c \u0432 \u043e\u0431\u0440\u0430\u0437\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u043d\u0430\u043f\u0438\u043b\u044c\u043d\u0438\u043a\u043e\u043c. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442 \u0432 \u043d\u0438\u0445 \u043d\u043e\u043c\u0435\u0440\u0430 \u043f\u0441\u0435\u0432\u0434\u043e\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u0432 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 1. \u0411\u044b\u043b \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c 1, \u0441\u0442\u0430\u043d\u0435\u0442 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c 11. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 CRIU \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0437\u0430 \u0432 Json \u0444\u043e\u0440\u043c\u0430\u0442 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">.\/crit\/crit show \/imgs\/tty-info.img \u00a0| \\ \u00a0\u00a0\u00a0sed 's\/&quot;index&quot;: \\([0-9]*\\)\/&quot;index&quot;: 1\\1\/' | \\ \u00a0\u00a0\u00a0.\/crit\/crit encode &gt; \/imgs\/tty-info.img.new .\/crit\/crit show \/imgs\/reg-files.img \u00a0| \\ \u00a0\u00a0\u00a0sed 's|\/dev\/pts\/\\([0-9]*\\)|\/dev\/pts\/1\\1|' | \\ \u00a0\u00a0\u00a0.\/crit\/crit encode &gt; \/imgs\/reg-files.img.new <\/code><\/pre>\n<p>  \u041e\u043f\u044f\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438 \u0436\u0434\u0435\u043c. \u0412\u0440\u0435\u043c\u044f \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u043f\u043e\u0441\u043b\u0435\u043e\u0431\u0435\u0434\u0435\u043d\u043d\u043e\u0435, \u0438 \u0432\u0441\u044f \u044d\u0442\u0430 \u0437\u0430\u0442\u0435\u044f \u044f\u0432\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0442\u044f\u043d\u0443\u043b\u0430\u0441\u044c. \u041f\u0440\u0438\u0432\u044b\u0447\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443 \u2014 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u0430\u043a\u0438\u0435-\u0442\u043e fifo \u0444\u0430\u0439\u043b\u044b \u0438\u0437 \/run\/systemd\/sessions \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b. \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u0444\u0430\u0439\u043b\u044b \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0434 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0438\u0445 \u0438 \u043f\u043e\u0431\u0435\u0436\u0438\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<pre><code class=\"bash\">f=$(lsof -p $1 | grep \/run\/systemd\/sessions | awk '{ print $9 }') ... criu dump kexec mkfifo $f criu restore <\/code><\/pre>\n<p>  \u041e\u043f\u044f\u0442\u044c \u043f\u0430\u0434\u0430\u0435\u043c, \u0438 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430\u043b\u0435\u0442\u0430\u0435\u043c \u043d\u0430 \u0431\u0430\u0433 \u0432 CRIU. \u0412\u0438\u0434\u0438\u043c, \u0447\u0442\u043e sys_prctl(PR_SET_MM, PR_SET_MM_MAP, \u2026) \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 EACCES, \u043b\u0435\u0437\u0435\u043c \u0432 \u044f\u0434\u0440\u043e \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043c, \u0447\u0442\u043e \u0432\u0438\u043d\u043e\u0439 \u0442\u043e\u043c\u0443 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b. \u042f\u0434\u0440\u043e \u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0444\u0430\u0439\u043b, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0431\u0438\u0442\u0430. \u0412\u044b \u0436\u0435 \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u043c\u044b \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u0430 \u0441\u0441\u044b\u043b\u043a\u0430 \u0438\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b. \u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0444\u0430\u0439\u043b, dpkg \u0441\u043d\u044f\u043b \u0441 \u043d\u0435\u0433\u043e \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a. <\/p>\n<p>  <code># strace -e chmod,link,unlink -f apt-get install --reinstall sudo<br \/>  ...<br \/>  3331 \u00a0link(&quot;\/usr\/bin\/sudo&quot;, &quot;\/usr\/bin\/sudo.dpkg-tmp&quot;) = 0<br \/>  3331 \u00a0chmod(&quot;\/usr\/bin\/sudo.dpkg-tmp&quot;, 0600) = 0<br \/>  3331 \u00a0unlink(&quot;\/usr\/bin\/sudo.dpkg-tmp&quot;) \u00a0= 0<br \/>  ...<br \/>  <\/code><\/p>\n<p>  \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u0430\u0442\u0447 \u043a CRIU, \u0438 \u0437\u043e\u043b\u043e\u0442\u043e\u0439 \u043a\u043b\u044e\u0447\u0438\u043a \u0431\u0443\u0434\u0435\u0442 \u0443 \u043d\u0430\u0441 \u0432 \u043a\u0430\u0440\u043c\u0430\u043d\u0435.<\/p>\n<pre><code class=\"diff\">diff --git a\/criu\/cr-restore.c b\/criu\/cr-restore.c index 12f13ae..39277cf 100644 --- a\/criu\/cr-restore.c +++ b\/criu\/cr-restore.c @@ -2278,6 +2278,23 @@ static int prepare_mm(pid_t pid, struct task_restore_args *args) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (exe_fd &lt; 0) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0goto out;  + \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{ + \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0struct stat st; + + \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (fstat(exe_fd, &st)) { + \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0pr_perror(&quot;Unable to stat a file&quot;); + \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return -1; + \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} + + \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (!(st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) { + \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0pr_debug(&quot;Add the execution bit for %d (st_mode %o)\\n&quot;, exe_fd, st.st_mode); + \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (fchmod(exe_fd, st.st_mode | S_IXUSR)) { + \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0pr_perror(&quot;Unable to add the execution bit&quot;); + \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return -1; + \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} + \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} + \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} + \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0args-&gt;fd_exe_link = exe_fd; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ret = 0; out: <\/code><\/pre>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u0423\u0440\u0430! \u0412\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 <a href=\"https:\/\/travis-ci.org\/avagin\/criu\/builds\/181822758\">https:\/\/travis-ci.org\/avagin\/criu\/builds\/181822758<\/a>. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u0441\u043a\u0430\u0437 \u0432\u0441\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u041c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u0432 Travis 33 \u0440\u0430\u0437\u0430, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043e\u043d\u0430 \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e.<\/p>\n<p>  \u0427\u0442\u043e \u043c\u044b \u044d\u0442\u0438\u043c \u0434\u043e\u043a\u0430\u0437\u0430\u043b\u0438? \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0430\u0440\u0443 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u0430 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e CRIU \u2014 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0417\u0430\u0442\u043e \u0441\u0442\u0430\u0440\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c\u044e, \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c\u044e \u0438 \u0448\u0438\u0440\u043e\u043a\u0438\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438. \u0425\u043e\u0442\u044f \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0435 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u043e\u0432\u043e\u0435\u0432\u0430\u0442\u044c \u0441 \u0431\u0430\u0433\u0430\u043c\u0438.<\/p>\n<p>  \u0423\u0434\u0430\u0447\u0438 \u043d\u0430 \u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445!<br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/318522\/\"> https:\/\/habrahabr.ru\/post\/318522\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041a\u0430\u043a \u0432\u044b \u0434\u0443\u043c\u0430\u0435\u0442\u0435 \u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0439\u0442\u0438 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0443 \u043f\u043e ssh, \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u044f\u0434\u0440\u043e \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u0439 \u0436\u0435 ssh \u0441\u0435\u0441\u0441\u0438\u0438. \u0421\u0435\u0439\u0447\u0430\u0441 \u0435\u0441\u0442\u044c \u043c\u043e\u0434\u043d\u043e\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u044f\u0434\u0440\u0430 \u043d\u0430 \u043b\u0435\u0442\u0443 (ksplice, KernelCare, ReadyKernel, etc), \u043d\u043e \u0443 \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043e\u043d \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0435\u043d\u044f\u044e\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c. \u0417\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d \u0431\u043e\u043b\u0435\u0435 \u00ab\u0447\u0435\u0441\u0442\u043d\u044b\u0439\u00bb \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u044f\u0434\u0440\u043e. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0441\u0430\u043c \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d <a href=\"https:\/\/habrahabr.ru\/post\/160201\/\">[1]<\/a>, \u0430 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0432\u0441\u0435 \u0432 \u0434\u0435\u0442\u0430\u043b\u044f\u0445 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u043f\u043e\u0439\u043c\u0435\u043c \u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043b\u0438 \u0441\u043b\u043e\u0436\u043d\u043e, \u0438 \u0447\u0435\u0433\u043e \u0441\u0442\u043e\u0438\u0442 \u0436\u0434\u0430\u0442\u044c \u043e\u0442 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-283085","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/283085","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=283085"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/283085\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=283085"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=283085"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=283085"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}